ccxt-ir 4.10.0 → 4.12.0

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 (1059) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +10 -1
  4. package/dist/cjs/src/abstract/bidarz.js +11 -0
  5. package/dist/cjs/src/bidarz.js +337 -0
  6. package/dist/cjs/src/bit24.js +4 -3
  7. package/dist/cjs/src/changefa.js +342 -0
  8. package/dist/cjs/src/ourbit.js +445 -0
  9. package/js/ccxt.d.ts +11 -2
  10. package/js/ccxt.js +8 -2
  11. package/js/src/abstract/bidarz.d.ts +9 -0
  12. package/js/src/abstract/bidarz.js +11 -0
  13. package/js/src/abstract/changefa.d.ts +8 -0
  14. package/js/src/abstract/changefa.js +11 -0
  15. package/js/src/abstract/ourbit.d.ts +10 -0
  16. package/js/src/abstract/ourbit.js +11 -0
  17. package/js/src/bidarz.d.ts +22 -0
  18. package/js/src/bidarz.js +336 -0
  19. package/js/src/bit24.js +4 -3
  20. package/js/src/changefa.d.ts +20 -0
  21. package/js/src/changefa.js +341 -0
  22. package/js/src/ourbit.d.ts +21 -0
  23. package/js/src/ourbit.js +444 -0
  24. package/js/src/src/abantether.d.ts +21 -0
  25. package/js/src/src/abantether.js +353 -0
  26. package/js/src/src/abstract/abantether.d.ts +8 -0
  27. package/js/src/src/abstract/abantether.js +11 -0
  28. package/js/src/src/abstract/afratether.d.ts +9 -0
  29. package/js/src/src/abstract/afratether.js +11 -0
  30. package/js/src/src/abstract/alpaca.d.ts +77 -0
  31. package/js/src/src/abstract/alpaca.js +11 -0
  32. package/js/src/src/abstract/apex.d.ts +34 -0
  33. package/js/src/src/abstract/apex.js +11 -0
  34. package/js/src/src/abstract/arzinja.d.ts +8 -0
  35. package/js/src/src/abstract/arzinja.js +11 -0
  36. package/js/src/src/abstract/arzplus.d.ts +11 -0
  37. package/js/src/src/abstract/arzplus.js +11 -0
  38. package/js/src/src/abstract/ascendex.d.ts +80 -0
  39. package/js/src/src/abstract/ascendex.js +11 -0
  40. package/js/src/src/abstract/asretether.d.ts +8 -0
  41. package/js/src/src/abstract/asretether.js +11 -0
  42. package/js/src/src/abstract/bidarz.d.ts +9 -0
  43. package/js/src/src/abstract/bidarz.js +11 -0
  44. package/js/src/src/abstract/bigone.d.ts +48 -0
  45. package/js/src/src/abstract/bigone.js +11 -0
  46. package/js/src/src/abstract/binance.d.ts +773 -0
  47. package/js/src/src/abstract/binance.js +11 -0
  48. package/js/src/src/abstract/bingx.d.ts +165 -0
  49. package/js/src/src/abstract/bingx.js +11 -0
  50. package/js/src/src/abstract/bit24.d.ts +9 -0
  51. package/js/src/src/abstract/bit24.js +11 -0
  52. package/js/src/src/abstract/bit2c.d.ts +30 -0
  53. package/js/src/src/abstract/bit2c.js +11 -0
  54. package/js/src/src/abstract/bitbank.d.ts +35 -0
  55. package/js/src/src/abstract/bitbank.js +11 -0
  56. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  57. package/js/src/src/abstract/bitbarg.js +11 -0
  58. package/js/src/src/abstract/bitbns.d.ts +43 -0
  59. package/js/src/src/abstract/bitbns.js +11 -0
  60. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  61. package/js/src/src/abstract/bitfinex.js +11 -0
  62. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  63. package/js/src/src/abstract/bitflyer.js +11 -0
  64. package/js/src/src/abstract/bitget.d.ts +578 -0
  65. package/js/src/src/abstract/bitget.js +11 -0
  66. package/js/src/src/abstract/bithumb.d.ts +35 -0
  67. package/js/src/src/abstract/bithumb.js +11 -0
  68. package/js/src/src/abstract/bitimen.d.ts +10 -0
  69. package/js/src/src/abstract/bitimen.js +11 -0
  70. package/js/src/src/abstract/bitir.d.ts +10 -0
  71. package/js/src/src/abstract/bitir.js +11 -0
  72. package/js/src/src/abstract/bitmart.d.ts +120 -0
  73. package/js/src/src/abstract/bitmart.js +11 -0
  74. package/js/src/src/abstract/bitmex.d.ts +100 -0
  75. package/js/src/src/abstract/bitmex.js +11 -0
  76. package/js/src/src/abstract/bitopro.d.ts +33 -0
  77. package/js/src/src/abstract/bitopro.js +11 -0
  78. package/js/src/src/abstract/bitpin.d.ts +11 -0
  79. package/js/src/src/abstract/bitpin.js +11 -0
  80. package/js/src/src/abstract/bitrue.d.ts +75 -0
  81. package/js/src/src/abstract/bitrue.js +11 -0
  82. package/js/src/src/abstract/bitso.d.ts +46 -0
  83. package/js/src/src/abstract/bitso.js +11 -0
  84. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  85. package/js/src/src/abstract/bitstamp.js +11 -0
  86. package/js/src/src/abstract/bitteam.d.ts +32 -0
  87. package/js/src/src/abstract/bitteam.js +11 -0
  88. package/js/src/src/abstract/bittrade.d.ts +117 -0
  89. package/js/src/src/abstract/bittrade.js +11 -0
  90. package/js/src/src/abstract/bitunix.d.ts +9 -0
  91. package/js/src/src/abstract/bitunix.js +11 -0
  92. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  93. package/js/src/src/abstract/bitvavo.js +11 -0
  94. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  95. package/js/src/src/abstract/blockchaincom.js +11 -0
  96. package/js/src/src/abstract/blofin.d.ts +70 -0
  97. package/js/src/src/abstract/blofin.js +11 -0
  98. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  99. package/js/src/src/abstract/btcalpha.js +11 -0
  100. package/js/src/src/abstract/btcbox.d.ts +18 -0
  101. package/js/src/src/abstract/btcbox.js +11 -0
  102. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  103. package/js/src/src/abstract/btcmarkets.js +11 -0
  104. package/js/src/src/abstract/btcturk.d.ts +23 -0
  105. package/js/src/src/abstract/btcturk.js +11 -0
  106. package/js/src/src/abstract/bybit.d.ts +316 -0
  107. package/js/src/src/abstract/bybit.js +11 -0
  108. package/js/src/src/abstract/bydfi.d.ts +11 -0
  109. package/js/src/src/abstract/bydfi.js +11 -0
  110. package/js/src/src/abstract/cafearz.d.ts +8 -0
  111. package/js/src/src/abstract/cafearz.js +11 -0
  112. package/js/src/src/abstract/cex.d.ts +35 -0
  113. package/js/src/src/abstract/cex.js +11 -0
  114. package/js/src/src/abstract/coinbase.d.ts +97 -0
  115. package/js/src/src/abstract/coinbase.js +11 -0
  116. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  117. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  118. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  119. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  120. package/js/src/src/abstract/coincatch.d.ts +97 -0
  121. package/js/src/src/abstract/coincatch.js +11 -0
  122. package/js/src/src/abstract/coincheck.d.ts +36 -0
  123. package/js/src/src/abstract/coincheck.js +11 -0
  124. package/js/src/src/abstract/coinex.d.ts +240 -0
  125. package/js/src/src/abstract/coinex.js +11 -0
  126. package/js/src/src/abstract/coinmate.d.ts +65 -0
  127. package/js/src/src/abstract/coinmate.js +11 -0
  128. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  129. package/js/src/src/abstract/coinmetro.js +11 -0
  130. package/js/src/src/abstract/coinone.d.ts +70 -0
  131. package/js/src/src/abstract/coinone.js +11 -0
  132. package/js/src/src/abstract/coinsph.d.ts +57 -0
  133. package/js/src/src/abstract/coinsph.js +11 -0
  134. package/js/src/src/abstract/coinspot.d.ts +31 -0
  135. package/js/src/src/abstract/coinspot.js +11 -0
  136. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  137. package/js/src/src/abstract/cryptocom.js +11 -0
  138. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  139. package/js/src/src/abstract/cryptomus.js +11 -0
  140. package/js/src/src/abstract/defx.d.ts +72 -0
  141. package/js/src/src/abstract/defx.js +11 -0
  142. package/js/src/src/abstract/delta.d.ts +53 -0
  143. package/js/src/src/abstract/delta.js +11 -0
  144. package/js/src/src/abstract/deribit.d.ts +129 -0
  145. package/js/src/src/abstract/deribit.js +11 -0
  146. package/js/src/src/abstract/derive.d.ts +120 -0
  147. package/js/src/src/abstract/derive.js +11 -0
  148. package/js/src/src/abstract/digifinex.d.ts +95 -0
  149. package/js/src/src/abstract/digifinex.js +11 -0
  150. package/js/src/src/abstract/ellipx.d.ts +28 -0
  151. package/js/src/src/abstract/ellipx.js +11 -0
  152. package/js/src/src/abstract/eterex.d.ts +8 -0
  153. package/js/src/src/abstract/eterex.js +11 -0
  154. package/js/src/src/abstract/excoino.d.ts +10 -0
  155. package/js/src/src/abstract/excoino.js +11 -0
  156. package/js/src/src/abstract/exir.d.ts +11 -0
  157. package/js/src/src/abstract/exir.js +11 -0
  158. package/js/src/src/abstract/exmo.d.ts +58 -0
  159. package/js/src/src/abstract/exmo.js +11 -0
  160. package/js/src/src/abstract/exnovin.d.ts +9 -0
  161. package/js/src/src/abstract/exnovin.js +11 -0
  162. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  163. package/js/src/src/abstract/farhadexchange.js +11 -0
  164. package/js/src/src/abstract/foxbit.d.ts +29 -0
  165. package/js/src/src/abstract/foxbit.js +11 -0
  166. package/js/src/src/abstract/gate.d.ts +287 -0
  167. package/js/src/src/abstract/gate.js +11 -0
  168. package/js/src/src/abstract/gemini.d.ts +62 -0
  169. package/js/src/src/abstract/gemini.js +11 -0
  170. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  171. package/js/src/src/abstract/hamtapay.js +11 -0
  172. package/js/src/src/abstract/hashkey.d.ts +70 -0
  173. package/js/src/src/abstract/hashkey.js +11 -0
  174. package/js/src/src/abstract/hibachi.d.ts +29 -0
  175. package/js/src/src/abstract/hibachi.js +11 -0
  176. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  177. package/js/src/src/abstract/hitbtc.js +11 -0
  178. package/js/src/src/abstract/hitobit.d.ts +11 -0
  179. package/js/src/src/abstract/hitobit.js +11 -0
  180. package/js/src/src/abstract/hollaex.d.ts +36 -0
  181. package/js/src/src/abstract/hollaex.js +11 -0
  182. package/js/src/src/abstract/htx.d.ts +551 -0
  183. package/js/src/src/abstract/htx.js +11 -0
  184. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  185. package/js/src/src/abstract/hyperliquid.js +11 -0
  186. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  187. package/js/src/src/abstract/independentreserve.js +11 -0
  188. package/js/src/src/abstract/indodax.d.ts +29 -0
  189. package/js/src/src/abstract/indodax.js +11 -0
  190. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  191. package/js/src/src/abstract/iranexchange.js +11 -0
  192. package/js/src/src/abstract/jibitex.d.ts +10 -0
  193. package/js/src/src/abstract/jibitex.js +11 -0
  194. package/js/src/src/abstract/kcex.d.ts +10 -0
  195. package/js/src/src/abstract/kcex.js +11 -0
  196. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  197. package/js/src/src/abstract/kifpoolme.js +11 -0
  198. package/js/src/src/abstract/kraken.d.ts +61 -0
  199. package/js/src/src/abstract/kraken.js +11 -0
  200. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  201. package/js/src/src/abstract/krakenfutures.js +11 -0
  202. package/js/src/src/abstract/kucoin.d.ts +227 -0
  203. package/js/src/src/abstract/kucoin.js +11 -0
  204. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  205. package/js/src/src/abstract/kucoinfutures.js +11 -0
  206. package/js/src/src/abstract/latoken.d.ts +59 -0
  207. package/js/src/src/abstract/latoken.js +11 -0
  208. package/js/src/src/abstract/lbank.d.ts +65 -0
  209. package/js/src/src/abstract/lbank.js +11 -0
  210. package/js/src/src/abstract/luno.d.ts +41 -0
  211. package/js/src/src/abstract/luno.js +11 -0
  212. package/js/src/src/abstract/mazdax.d.ts +11 -0
  213. package/js/src/src/abstract/mazdax.js +11 -0
  214. package/js/src/src/abstract/mercado.d.ts +28 -0
  215. package/js/src/src/abstract/mercado.js +11 -0
  216. package/js/src/src/abstract/mexc.d.ts +183 -0
  217. package/js/src/src/abstract/mexc.js +11 -0
  218. package/js/src/src/abstract/modetrade.d.ts +122 -0
  219. package/js/src/src/abstract/modetrade.js +11 -0
  220. package/js/src/src/abstract/ndax.d.ts +100 -0
  221. package/js/src/src/abstract/ndax.js +11 -0
  222. package/js/src/src/abstract/nobitex.d.ts +10 -0
  223. package/js/src/src/abstract/nobitex.js +11 -0
  224. package/js/src/src/abstract/novadax.d.ts +32 -0
  225. package/js/src/src/abstract/novadax.js +11 -0
  226. package/js/src/src/abstract/oceanex.d.ts +30 -0
  227. package/js/src/src/abstract/oceanex.js +11 -0
  228. package/js/src/src/abstract/okcoin.d.ts +77 -0
  229. package/js/src/src/abstract/okcoin.js +11 -0
  230. package/js/src/src/abstract/okexchange.d.ts +11 -0
  231. package/js/src/src/abstract/okexchange.js +11 -0
  232. package/js/src/src/abstract/okx.d.ts +352 -0
  233. package/js/src/src/abstract/okx.js +11 -0
  234. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  235. package/js/src/src/abstract/ompfinex.js +11 -0
  236. package/js/src/src/abstract/onetrading.d.ts +26 -0
  237. package/js/src/src/abstract/onetrading.js +11 -0
  238. package/js/src/src/abstract/oxfun.d.ts +37 -0
  239. package/js/src/src/abstract/oxfun.js +11 -0
  240. package/js/src/src/abstract/p2b.d.ts +25 -0
  241. package/js/src/src/abstract/p2b.js +11 -0
  242. package/js/src/src/abstract/paradex.d.ts +66 -0
  243. package/js/src/src/abstract/paradex.js +11 -0
  244. package/js/src/src/abstract/paymium.d.ts +31 -0
  245. package/js/src/src/abstract/paymium.js +11 -0
  246. package/js/src/src/abstract/phemex.d.ts +120 -0
  247. package/js/src/src/abstract/phemex.js +11 -0
  248. package/js/src/src/abstract/pingi.d.ts +9 -0
  249. package/js/src/src/abstract/pingi.js +11 -0
  250. package/js/src/src/abstract/poloniex.d.ts +108 -0
  251. package/js/src/src/abstract/poloniex.js +11 -0
  252. package/js/src/src/abstract/pooleno.d.ts +8 -0
  253. package/js/src/src/abstract/pooleno.js +11 -0
  254. package/js/src/src/abstract/probit.d.ts +26 -0
  255. package/js/src/src/abstract/probit.js +11 -0
  256. package/js/src/src/abstract/raastin.d.ts +11 -0
  257. package/js/src/src/abstract/raastin.js +11 -0
  258. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  259. package/js/src/src/abstract/ramzinex.js +11 -0
  260. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  261. package/js/src/src/abstract/sarmayex.js +11 -0
  262. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  263. package/js/src/src/abstract/sarrafex.js +11 -0
  264. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  265. package/js/src/src/abstract/tabdeal.js +11 -0
  266. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  267. package/js/src/src/abstract/tehran_exchange.js +11 -0
  268. package/js/src/src/abstract/tetherland.d.ts +8 -0
  269. package/js/src/src/abstract/tetherland.js +11 -0
  270. package/js/src/src/abstract/timex.d.ts +65 -0
  271. package/js/src/src/abstract/timex.js +11 -0
  272. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  273. package/js/src/src/abstract/tokocrypto.js +11 -0
  274. package/js/src/src/abstract/toobit.d.ts +10 -0
  275. package/js/src/src/abstract/toobit.js +11 -0
  276. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  277. package/js/src/src/abstract/tradeogre.js +11 -0
  278. package/js/src/src/abstract/twox.d.ts +8 -0
  279. package/js/src/src/abstract/twox.js +11 -0
  280. package/js/src/src/abstract/ubitex.d.ts +10 -0
  281. package/js/src/src/abstract/ubitex.js +11 -0
  282. package/js/src/src/abstract/upbit.d.ts +58 -0
  283. package/js/src/src/abstract/upbit.js +11 -0
  284. package/js/src/src/abstract/vertex.d.ts +22 -0
  285. package/js/src/src/abstract/vertex.js +11 -0
  286. package/js/src/src/abstract/wallex.d.ts +11 -0
  287. package/js/src/src/abstract/wallex.js +11 -0
  288. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  289. package/js/src/src/abstract/wavesexchange.js +11 -0
  290. package/js/src/src/abstract/whitebit.d.ts +117 -0
  291. package/js/src/src/abstract/whitebit.js +11 -0
  292. package/js/src/src/abstract/woo.d.ts +144 -0
  293. package/js/src/src/abstract/woo.js +11 -0
  294. package/js/src/src/abstract/woofipro.d.ts +122 -0
  295. package/js/src/src/abstract/woofipro.js +11 -0
  296. package/js/src/src/abstract/xt.d.ts +160 -0
  297. package/js/src/src/abstract/xt.js +11 -0
  298. package/js/src/src/abstract/yobit.d.ts +19 -0
  299. package/js/src/src/abstract/yobit.js +11 -0
  300. package/js/src/src/abstract/zaif.d.ts +41 -0
  301. package/js/src/src/abstract/zaif.js +11 -0
  302. package/js/src/src/abstract/zonda.d.ts +56 -0
  303. package/js/src/src/abstract/zonda.js +11 -0
  304. package/js/src/src/afratether.d.ts +21 -0
  305. package/js/src/src/afratether.js +356 -0
  306. package/js/src/src/alpaca.d.ts +332 -0
  307. package/js/src/src/alpaca.js +1908 -0
  308. package/js/src/src/apex.d.ts +333 -0
  309. package/js/src/src/apex.js +1942 -0
  310. package/js/src/src/arzinja.d.ts +21 -0
  311. package/js/src/src/arzinja.js +298 -0
  312. package/js/src/src/arzplus.d.ts +26 -0
  313. package/js/src/src/arzplus.js +581 -0
  314. package/js/src/src/ascendex.d.ts +424 -0
  315. package/js/src/src/ascendex.js +3699 -0
  316. package/js/src/src/asretether.d.ts +21 -0
  317. package/js/src/src/asretether.js +324 -0
  318. package/js/src/src/base/Exchange.d.ts +926 -0
  319. package/js/src/src/base/Exchange.js +7399 -0
  320. package/js/src/src/base/Precise.d.ts +42 -0
  321. package/js/src/src/base/Precise.js +275 -0
  322. package/js/src/src/base/errors.d.ts +168 -0
  323. package/js/src/src/base/errors.js +255 -0
  324. package/js/src/src/base/functions/crypto.d.ts +16 -0
  325. package/js/src/src/base/functions/crypto.js +131 -0
  326. package/js/src/src/base/functions/encode.d.ts +4 -0
  327. package/js/src/src/base/functions/encode.js +32 -0
  328. package/js/src/src/base/functions/generic.d.ts +29 -0
  329. package/js/src/src/base/functions/generic.js +203 -0
  330. package/js/src/src/base/functions/misc.d.ts +9 -0
  331. package/js/src/src/base/functions/misc.js +101 -0
  332. package/js/src/src/base/functions/number.d.ts +27 -0
  333. package/js/src/src/base/functions/number.js +313 -0
  334. package/js/src/src/base/functions/platform.d.ts +7 -0
  335. package/js/src/src/base/functions/platform.js +27 -0
  336. package/js/src/src/base/functions/rsa.d.ts +5 -0
  337. package/js/src/src/base/functions/rsa.js +49 -0
  338. package/js/src/src/base/functions/string.d.ts +7 -0
  339. package/js/src/src/base/functions/string.js +44 -0
  340. package/js/src/src/base/functions/throttle.d.ts +6 -0
  341. package/js/src/src/base/functions/throttle.js +67 -0
  342. package/js/src/src/base/functions/time.d.ts +21 -0
  343. package/js/src/src/base/functions/time.js +171 -0
  344. package/js/src/src/base/functions/totp.d.ts +3 -0
  345. package/js/src/src/base/functions/totp.js +25 -0
  346. package/js/src/src/base/functions/type.d.ts +37 -0
  347. package/js/src/src/base/functions/type.js +179 -0
  348. package/js/src/src/base/functions.d.ts +10 -0
  349. package/js/src/src/base/functions.js +18 -0
  350. package/js/src/src/base/types.d.ts +586 -0
  351. package/js/src/src/base/types.js +7 -0
  352. package/js/src/src/base/ws/Cache.d.ts +27 -0
  353. package/js/src/src/base/ws/Cache.js +260 -0
  354. package/js/src/src/base/ws/Client.d.ts +53 -0
  355. package/js/src/src/base/ws/Client.js +307 -0
  356. package/js/src/src/base/ws/Future.d.ts +8 -0
  357. package/js/src/src/base/ws/Future.js +35 -0
  358. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  359. package/js/src/src/base/ws/OrderBook.js +130 -0
  360. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  361. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  362. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  363. package/js/src/src/base/ws/WsClient.js +69 -0
  364. package/js/src/src/bequant.d.ts +4 -0
  365. package/js/src/src/bequant.js +35 -0
  366. package/js/src/src/bidarz.d.ts +16 -0
  367. package/js/src/src/bidarz.js +327 -0
  368. package/js/src/src/bigone.d.ts +296 -0
  369. package/js/src/src/bigone.js +2340 -0
  370. package/js/src/src/binance.d.ts +1667 -0
  371. package/js/src/src/binance.js +14400 -0
  372. package/js/src/src/binancecoinm.d.ts +6 -0
  373. package/js/src/src/binancecoinm.js +51 -0
  374. package/js/src/src/binanceus.d.ts +4 -0
  375. package/js/src/src/binanceus.js +225 -0
  376. package/js/src/src/binanceusdm.d.ts +6 -0
  377. package/js/src/src/binanceusdm.js +63 -0
  378. package/js/src/src/bingx.d.ts +778 -0
  379. package/js/src/src/bingx.js +6705 -0
  380. package/js/src/src/bit24.d.ts +24 -0
  381. package/js/src/src/bit24.js +520 -0
  382. package/js/src/src/bit2c.d.ts +146 -0
  383. package/js/src/src/bit2c.js +1029 -0
  384. package/js/src/src/bitbank.d.ts +181 -0
  385. package/js/src/src/bitbank.js +1146 -0
  386. package/js/src/src/bitbarg.d.ts +21 -0
  387. package/js/src/src/bitbarg.js +312 -0
  388. package/js/src/src/bitbns.d.ts +184 -0
  389. package/js/src/src/bitbns.js +1288 -0
  390. package/js/src/src/bitfinex.d.ts +516 -0
  391. package/js/src/src/bitfinex.js +3951 -0
  392. package/js/src/src/bitflyer.d.ts +229 -0
  393. package/js/src/src/bitflyer.js +1209 -0
  394. package/js/src/src/bitget.d.ts +1109 -0
  395. package/js/src/src/bitget.js +11033 -0
  396. package/js/src/src/bithumb.d.ts +165 -0
  397. package/js/src/src/bithumb.js +1257 -0
  398. package/js/src/src/bitimen.d.ts +23 -0
  399. package/js/src/src/bitimen.js +424 -0
  400. package/js/src/src/bitir.d.ts +23 -0
  401. package/js/src/src/bitir.js +521 -0
  402. package/js/src/src/bitmart.d.ts +736 -0
  403. package/js/src/src/bitmart.js +5639 -0
  404. package/js/src/src/bitmex.d.ts +395 -0
  405. package/js/src/src/bitmex.js +3088 -0
  406. package/js/src/src/bitopro.d.ts +295 -0
  407. package/js/src/src/bitopro.js +1892 -0
  408. package/js/src/src/bitpin.d.ts +23 -0
  409. package/js/src/src/bitpin.js +487 -0
  410. package/js/src/src/bitrue.d.ts +384 -0
  411. package/js/src/src/bitrue.js +3382 -0
  412. package/js/src/src/bitso.d.ts +270 -0
  413. package/js/src/src/bitso.js +1881 -0
  414. package/js/src/src/bitstamp.d.ts +355 -0
  415. package/js/src/src/bitstamp.js +2445 -0
  416. package/js/src/src/bitteam.d.ts +229 -0
  417. package/js/src/src/bitteam.js +2420 -0
  418. package/js/src/src/bittrade.d.ts +298 -0
  419. package/js/src/src/bittrade.js +2050 -0
  420. package/js/src/src/bitunix.d.ts +21 -0
  421. package/js/src/src/bitunix.js +326 -0
  422. package/js/src/src/bitvavo.d.ts +311 -0
  423. package/js/src/src/bitvavo.js +2204 -0
  424. package/js/src/src/blockchaincom.d.ts +256 -0
  425. package/js/src/src/blockchaincom.js +1259 -0
  426. package/js/src/src/blofin.d.ts +439 -0
  427. package/js/src/src/blofin.js +2576 -0
  428. package/js/src/src/btcalpha.d.ts +209 -0
  429. package/js/src/src/btcalpha.js +1056 -0
  430. package/js/src/src/btcbox.d.ts +144 -0
  431. package/js/src/src/btcbox.js +834 -0
  432. package/js/src/src/btcmarkets.d.ts +253 -0
  433. package/js/src/src/btcmarkets.js +1418 -0
  434. package/js/src/src/btcturk.d.ts +161 -0
  435. package/js/src/src/btcturk.js +1058 -0
  436. package/js/src/src/bybit.d.ts +1097 -0
  437. package/js/src/src/bybit.js +9382 -0
  438. package/js/src/src/bydfi.d.ts +23 -0
  439. package/js/src/src/bydfi.js +434 -0
  440. package/js/src/src/cafearz.d.ts +21 -0
  441. package/js/src/src/cafearz.js +346 -0
  442. package/js/src/src/cex.d.ts +286 -0
  443. package/js/src/src/cex.js +1799 -0
  444. package/js/src/src/coinbase.d.ts +623 -0
  445. package/js/src/src/coinbase.js +5220 -0
  446. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  447. package/js/src/src/coinbaseadvanced.js +18 -0
  448. package/js/src/src/coinbaseexchange.d.ts +334 -0
  449. package/js/src/src/coinbaseexchange.js +2127 -0
  450. package/js/src/src/coinbaseinternational.d.ts +443 -0
  451. package/js/src/src/coinbaseinternational.js +2336 -0
  452. package/js/src/src/coincatch.d.ts +786 -0
  453. package/js/src/src/coincatch.js +5492 -0
  454. package/js/src/src/coincheck.d.ts +147 -0
  455. package/js/src/src/coincheck.js +962 -0
  456. package/js/src/src/coinex.d.ts +719 -0
  457. package/js/src/src/coinex.js +6166 -0
  458. package/js/src/src/coinmate.d.ts +202 -0
  459. package/js/src/src/coinmate.js +1215 -0
  460. package/js/src/src/coinmetro.d.ts +244 -0
  461. package/js/src/src/coinmetro.js +2024 -0
  462. package/js/src/src/coinone.d.ts +158 -0
  463. package/js/src/src/coinone.js +1278 -0
  464. package/js/src/src/coinsph.d.ts +310 -0
  465. package/js/src/src/coinsph.js +2203 -0
  466. package/js/src/src/coinspot.d.ts +108 -0
  467. package/js/src/src/coinspot.js +653 -0
  468. package/js/src/src/cryptocom.d.ts +463 -0
  469. package/js/src/src/cryptocom.js +3549 -0
  470. package/js/src/src/cryptomus.d.ts +158 -0
  471. package/js/src/src/cryptomus.js +1169 -0
  472. package/js/src/src/defx.d.ts +348 -0
  473. package/js/src/src/defx.js +2139 -0
  474. package/js/src/src/delta.d.ts +407 -0
  475. package/js/src/src/delta.js +3654 -0
  476. package/js/src/src/deribit.d.ts +516 -0
  477. package/js/src/src/deribit.js +3790 -0
  478. package/js/src/src/derive.d.ts +324 -0
  479. package/js/src/src/derive.js +2655 -0
  480. package/js/src/src/digifinex.d.ts +544 -0
  481. package/js/src/src/digifinex.js +4453 -0
  482. package/js/src/src/ellipx.d.ts +237 -0
  483. package/js/src/src/ellipx.js +2071 -0
  484. package/js/src/src/eterex.d.ts +21 -0
  485. package/js/src/src/eterex.js +299 -0
  486. package/js/src/src/excoino.d.ts +23 -0
  487. package/js/src/src/excoino.js +426 -0
  488. package/js/src/src/exir.d.ts +23 -0
  489. package/js/src/src/exir.js +403 -0
  490. package/js/src/src/exmo.d.ts +426 -0
  491. package/js/src/src/exmo.js +2825 -0
  492. package/js/src/src/exnovin.d.ts +22 -0
  493. package/js/src/src/exnovin.js +378 -0
  494. package/js/src/src/farhadexchange.d.ts +21 -0
  495. package/js/src/src/farhadexchange.js +280 -0
  496. package/js/src/src/fmfwio.d.ts +4 -0
  497. package/js/src/src/fmfwio.js +35 -0
  498. package/js/src/src/foxbit.d.ts +352 -0
  499. package/js/src/src/foxbit.js +2016 -0
  500. package/js/src/src/gate.d.ts +1071 -0
  501. package/js/src/src/gate.js +8282 -0
  502. package/js/src/src/gateio.d.ts +4 -0
  503. package/js/src/src/gateio.js +17 -0
  504. package/js/src/src/gemini.d.ts +257 -0
  505. package/js/src/src/gemini.js +2006 -0
  506. package/js/src/src/hamtapay.d.ts +21 -0
  507. package/js/src/src/hamtapay.js +303 -0
  508. package/js/src/src/hashkey.d.ts +628 -0
  509. package/js/src/src/hashkey.js +4363 -0
  510. package/js/src/src/hibachi.d.ts +346 -0
  511. package/js/src/src/hibachi.js +2137 -0
  512. package/js/src/src/hitbtc.d.ts +558 -0
  513. package/js/src/src/hitbtc.js +3847 -0
  514. package/js/src/src/hitobit.d.ts +23 -0
  515. package/js/src/src/hitobit.js +412 -0
  516. package/js/src/src/hollaex.d.ts +305 -0
  517. package/js/src/src/hollaex.js +2046 -0
  518. package/js/src/src/htx.d.ts +961 -0
  519. package/js/src/src/htx.js +9668 -0
  520. package/js/src/src/huobi.d.ts +4 -0
  521. package/js/src/src/huobi.js +17 -0
  522. package/js/src/src/hyperliquid.d.ts +651 -0
  523. package/js/src/src/hyperliquid.js +3937 -0
  524. package/js/src/src/independentreserve.d.ts +169 -0
  525. package/js/src/src/independentreserve.js +1115 -0
  526. package/js/src/src/indodax.d.ts +217 -0
  527. package/js/src/src/indodax.js +1454 -0
  528. package/js/src/src/iranexchange.d.ts +21 -0
  529. package/js/src/src/iranexchange.js +399 -0
  530. package/js/src/src/jibitex.d.ts +23 -0
  531. package/js/src/src/jibitex.js +416 -0
  532. package/js/src/src/kcex.d.ts +21 -0
  533. package/js/src/src/kcex.js +335 -0
  534. package/js/src/src/kifpoolme.d.ts +23 -0
  535. package/js/src/src/kifpoolme.js +410 -0
  536. package/js/src/src/kraken.d.ts +484 -0
  537. package/js/src/src/kraken.js +3518 -0
  538. package/js/src/src/krakenfutures.d.ts +362 -0
  539. package/js/src/src/krakenfutures.js +2885 -0
  540. package/js/src/src/kucoin.d.ts +759 -0
  541. package/js/src/src/kucoin.js +5153 -0
  542. package/js/src/src/kucoinfutures.d.ts +521 -0
  543. package/js/src/src/kucoinfutures.js +3381 -0
  544. package/js/src/src/latoken.d.ts +274 -0
  545. package/js/src/src/latoken.js +1824 -0
  546. package/js/src/src/lbank.d.ts +350 -0
  547. package/js/src/src/lbank.js +3146 -0
  548. package/js/src/src/luno.d.ts +252 -0
  549. package/js/src/src/luno.js +1479 -0
  550. package/js/src/src/mazdax.d.ts +23 -0
  551. package/js/src/src/mazdax.js +534 -0
  552. package/js/src/src/mercado.d.ts +160 -0
  553. package/js/src/src/mercado.js +1011 -0
  554. package/js/src/src/mexc.d.ts +768 -0
  555. package/js/src/src/mexc.js +6102 -0
  556. package/js/src/src/modetrade.d.ts +496 -0
  557. package/js/src/src/modetrade.js +2936 -0
  558. package/js/src/src/myokx.d.ts +4 -0
  559. package/js/src/src/myokx.js +54 -0
  560. package/js/src/src/ndax.d.ts +285 -0
  561. package/js/src/src/ndax.js +2598 -0
  562. package/js/src/src/nobitex.d.ts +23 -0
  563. package/js/src/src/nobitex.js +454 -0
  564. package/js/src/src/novadax.d.ts +279 -0
  565. package/js/src/src/novadax.js +1676 -0
  566. package/js/src/src/oceanex.d.ts +231 -0
  567. package/js/src/src/oceanex.js +1123 -0
  568. package/js/src/src/okcoin.d.ts +346 -0
  569. package/js/src/src/okcoin.js +3211 -0
  570. package/js/src/src/okexchange.d.ts +23 -0
  571. package/js/src/src/okexchange.js +373 -0
  572. package/js/src/src/okx.d.ts +1125 -0
  573. package/js/src/src/okx.js +9009 -0
  574. package/js/src/src/okxus.d.ts +4 -0
  575. package/js/src/src/okxus.js +54 -0
  576. package/js/src/src/ompfinex.d.ts +23 -0
  577. package/js/src/src/ompfinex.js +510 -0
  578. package/js/src/src/onetrading.d.ts +228 -0
  579. package/js/src/src/onetrading.js +1769 -0
  580. package/js/src/src/oxfun.d.ts +442 -0
  581. package/js/src/src/oxfun.js +2920 -0
  582. package/js/src/src/p2b.d.ts +189 -0
  583. package/js/src/src/p2b.js +1344 -0
  584. package/js/src/src/paradex.d.ts +389 -0
  585. package/js/src/src/paradex.js +2607 -0
  586. package/js/src/src/paymium.d.ts +133 -0
  587. package/js/src/src/paymium.js +644 -0
  588. package/js/src/src/phemex.d.ts +497 -0
  589. package/js/src/src/phemex.js +5333 -0
  590. package/js/src/src/pingi.d.ts +22 -0
  591. package/js/src/src/pingi.js +446 -0
  592. package/js/src/src/poloniex.d.ts +441 -0
  593. package/js/src/src/poloniex.js +3681 -0
  594. package/js/src/src/pooleno.d.ts +21 -0
  595. package/js/src/src/pooleno.js +347 -0
  596. package/js/src/src/pro/alpaca.d.ts +95 -0
  597. package/js/src/src/pro/alpaca.js +724 -0
  598. package/js/src/src/pro/apex.d.ts +160 -0
  599. package/js/src/src/pro/apex.js +1044 -0
  600. package/js/src/src/pro/ascendex.d.ts +99 -0
  601. package/js/src/src/pro/ascendex.js +1012 -0
  602. package/js/src/src/pro/bequant.d.ts +4 -0
  603. package/js/src/src/pro/bequant.js +42 -0
  604. package/js/src/src/pro/binance.d.ts +796 -0
  605. package/js/src/src/pro/binance.js +4373 -0
  606. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  607. package/js/src/src/pro/binancecoinm.js +32 -0
  608. package/js/src/src/pro/binanceus.d.ts +4 -0
  609. package/js/src/src/pro/binanceus.js +52 -0
  610. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  611. package/js/src/src/pro/binanceusdm.js +37 -0
  612. package/js/src/src/pro/bingx.d.ts +151 -0
  613. package/js/src/src/pro/bingx.js +1568 -0
  614. package/js/src/src/pro/bitfinex.d.ts +99 -0
  615. package/js/src/src/pro/bitfinex.js +1165 -0
  616. package/js/src/src/pro/bitget.d.ts +257 -0
  617. package/js/src/src/pro/bitget.js +2327 -0
  618. package/js/src/src/pro/bithumb.d.ts +59 -0
  619. package/js/src/src/pro/bithumb.js +395 -0
  620. package/js/src/src/pro/bitmart.d.ts +168 -0
  621. package/js/src/src/pro/bitmart.js +1686 -0
  622. package/js/src/src/pro/bitmex.d.ts +170 -0
  623. package/js/src/src/pro/bitmex.js +1760 -0
  624. package/js/src/src/pro/bitopro.d.ts +69 -0
  625. package/js/src/src/pro/bitopro.js +477 -0
  626. package/js/src/src/pro/bitrue.d.ts +40 -0
  627. package/js/src/src/pro/bitrue.js +461 -0
  628. package/js/src/src/pro/bitstamp.d.ts +53 -0
  629. package/js/src/src/pro/bitstamp.js +587 -0
  630. package/js/src/src/pro/bittrade.d.ts +66 -0
  631. package/js/src/src/pro/bittrade.js +606 -0
  632. package/js/src/src/pro/bitvavo.d.ts +321 -0
  633. package/js/src/src/pro/bitvavo.js +1451 -0
  634. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  635. package/js/src/src/pro/blockchaincom.js +777 -0
  636. package/js/src/src/pro/blofin.d.ts +174 -0
  637. package/js/src/src/pro/blofin.js +743 -0
  638. package/js/src/src/pro/bybit.d.ts +397 -0
  639. package/js/src/src/pro/bybit.js +2519 -0
  640. package/js/src/src/pro/cex.d.ts +220 -0
  641. package/js/src/src/pro/cex.js +1535 -0
  642. package/js/src/src/pro/coinbase.d.ts +119 -0
  643. package/js/src/src/pro/coinbase.js +736 -0
  644. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  645. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  646. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  647. package/js/src/src/pro/coinbaseexchange.js +969 -0
  648. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  649. package/js/src/src/pro/coinbaseinternational.js +804 -0
  650. package/js/src/src/pro/coincatch.d.ts +207 -0
  651. package/js/src/src/pro/coincatch.js +1562 -0
  652. package/js/src/src/pro/coincheck.d.ts +33 -0
  653. package/js/src/src/pro/coincheck.js +210 -0
  654. package/js/src/src/pro/coinex.d.ts +147 -0
  655. package/js/src/src/pro/coinex.js +1426 -0
  656. package/js/src/src/pro/coinone.d.ts +51 -0
  657. package/js/src/src/pro/coinone.js +413 -0
  658. package/js/src/src/pro/cryptocom.d.ts +300 -0
  659. package/js/src/src/pro/cryptocom.js +1414 -0
  660. package/js/src/src/pro/defx.d.ts +236 -0
  661. package/js/src/src/pro/defx.js +865 -0
  662. package/js/src/src/pro/deribit.d.ts +163 -0
  663. package/js/src/src/pro/deribit.js +1066 -0
  664. package/js/src/src/pro/derive.d.ts +100 -0
  665. package/js/src/src/pro/derive.js +753 -0
  666. package/js/src/src/pro/exmo.d.ts +97 -0
  667. package/js/src/src/pro/exmo.js +903 -0
  668. package/js/src/src/pro/gate.d.ts +360 -0
  669. package/js/src/src/pro/gate.js +2119 -0
  670. package/js/src/src/pro/gateio.d.ts +4 -0
  671. package/js/src/src/pro/gateio.js +17 -0
  672. package/js/src/src/pro/gemini.d.ts +106 -0
  673. package/js/src/src/pro/gemini.js +932 -0
  674. package/js/src/src/pro/hashkey.d.ts +121 -0
  675. package/js/src/src/pro/hashkey.js +843 -0
  676. package/js/src/src/pro/hitbtc.d.ts +235 -0
  677. package/js/src/src/pro/hitbtc.js +1400 -0
  678. package/js/src/src/pro/hollaex.d.ts +77 -0
  679. package/js/src/src/pro/hollaex.js +604 -0
  680. package/js/src/src/pro/htx.d.ts +141 -0
  681. package/js/src/src/pro/htx.js +2415 -0
  682. package/js/src/src/pro/huobi.d.ts +4 -0
  683. package/js/src/src/pro/huobi.js +17 -0
  684. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  685. package/js/src/src/pro/hyperliquid.js +1126 -0
  686. package/js/src/src/pro/independentreserve.d.ts +36 -0
  687. package/js/src/src/pro/independentreserve.js +287 -0
  688. package/js/src/src/pro/kraken.d.ts +233 -0
  689. package/js/src/src/pro/kraken.js +1785 -0
  690. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  691. package/js/src/src/pro/krakenfutures.js +1592 -0
  692. package/js/src/src/pro/kucoin.d.ts +221 -0
  693. package/js/src/src/pro/kucoin.js +1430 -0
  694. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  695. package/js/src/src/pro/kucoinfutures.js +1295 -0
  696. package/js/src/src/pro/lbank.d.ts +134 -0
  697. package/js/src/src/pro/lbank.js +950 -0
  698. package/js/src/src/pro/luno.d.ts +44 -0
  699. package/js/src/src/pro/luno.js +322 -0
  700. package/js/src/src/pro/mexc.d.ts +210 -0
  701. package/js/src/src/pro/mexc.js +2009 -0
  702. package/js/src/src/pro/modetrade.d.ts +155 -0
  703. package/js/src/src/pro/modetrade.js +1335 -0
  704. package/js/src/src/pro/myokx.d.ts +4 -0
  705. package/js/src/src/pro/myokx.js +39 -0
  706. package/js/src/src/pro/ndax.d.ts +60 -0
  707. package/js/src/src/pro/ndax.js +545 -0
  708. package/js/src/src/pro/okcoin.d.ts +91 -0
  709. package/js/src/src/pro/okcoin.js +763 -0
  710. package/js/src/src/pro/okx.d.ts +408 -0
  711. package/js/src/src/pro/okx.js +2479 -0
  712. package/js/src/src/pro/okxus.d.ts +4 -0
  713. package/js/src/src/pro/okxus.js +39 -0
  714. package/js/src/src/pro/onetrading.d.ts +107 -0
  715. package/js/src/src/pro/onetrading.js +1343 -0
  716. package/js/src/src/pro/oxfun.d.ts +234 -0
  717. package/js/src/src/pro/oxfun.js +1112 -0
  718. package/js/src/src/pro/p2b.d.ts +104 -0
  719. package/js/src/src/pro/p2b.js +506 -0
  720. package/js/src/src/pro/paradex.d.ts +54 -0
  721. package/js/src/src/pro/paradex.js +370 -0
  722. package/js/src/src/pro/phemex.d.ts +129 -0
  723. package/js/src/src/pro/phemex.js +1569 -0
  724. package/js/src/src/pro/poloniex.d.ts +214 -0
  725. package/js/src/src/pro/poloniex.js +1318 -0
  726. package/js/src/src/pro/probit.d.ts +91 -0
  727. package/js/src/src/pro/probit.js +593 -0
  728. package/js/src/src/pro/tradeogre.d.ts +49 -0
  729. package/js/src/src/pro/tradeogre.js +284 -0
  730. package/js/src/src/pro/upbit.d.ts +124 -0
  731. package/js/src/src/pro/upbit.js +689 -0
  732. package/js/src/src/pro/vertex.d.ts +104 -0
  733. package/js/src/src/pro/vertex.js +999 -0
  734. package/js/src/src/pro/whitebit.d.ts +123 -0
  735. package/js/src/src/pro/whitebit.js +971 -0
  736. package/js/src/src/pro/woo.d.ts +161 -0
  737. package/js/src/src/pro/woo.js +1351 -0
  738. package/js/src/src/pro/woofipro.d.ts +155 -0
  739. package/js/src/src/pro/woofipro.js +1335 -0
  740. package/js/src/src/pro/xt.d.ts +165 -0
  741. package/js/src/src/pro/xt.js +1230 -0
  742. package/js/src/src/probit.d.ts +283 -0
  743. package/js/src/src/probit.js +1935 -0
  744. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  745. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  746. package/js/src/src/raastin.d.ts +24 -0
  747. package/js/src/src/raastin.js +494 -0
  748. package/js/src/src/ramzinex.d.ts +23 -0
  749. package/js/src/src/ramzinex.js +510 -0
  750. package/js/src/src/sarmayex.d.ts +21 -0
  751. package/js/src/src/sarmayex.js +376 -0
  752. package/js/src/src/sarrafex.d.ts +23 -0
  753. package/js/src/src/sarrafex.js +501 -0
  754. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  755. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  756. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  757. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  758. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  759. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  760. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  761. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  762. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  763. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  764. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  765. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  766. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  767. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  768. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  769. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  770. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  771. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  772. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  773. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  774. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  775. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  776. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  777. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  778. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  779. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  780. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  781. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  782. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  783. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  784. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  785. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  786. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  787. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  788. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  789. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  790. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  791. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  792. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  793. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  794. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  795. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  796. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  797. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  798. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  799. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  800. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  801. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  802. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  803. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  804. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  805. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  806. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  807. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  808. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  809. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  810. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  811. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  812. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  813. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  814. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  815. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  816. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  817. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  818. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  819. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  820. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  821. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  822. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  823. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  824. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  825. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  826. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  827. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  828. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  829. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  830. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  831. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  832. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  833. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  834. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  835. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  836. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  837. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  838. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  850. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  851. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  852. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  853. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  854. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  855. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  856. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  857. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  858. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  859. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  860. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  861. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  862. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  868. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  869. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  870. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  871. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  872. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  873. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  874. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  875. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  876. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  877. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  878. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  879. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  880. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  881. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  882. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  883. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  884. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  885. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  886. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  887. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  888. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  889. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  890. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  891. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  892. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  893. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  894. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  895. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  896. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  897. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  898. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  899. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  900. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  901. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  902. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  903. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  904. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  905. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  906. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  907. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  908. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  909. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  910. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  911. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  912. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  913. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  914. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  915. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  916. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  917. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  918. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  919. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  920. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  921. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  922. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  923. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  924. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  925. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  926. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  927. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  928. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  929. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  930. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  931. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  932. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  933. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  934. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  935. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  936. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  937. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  938. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  939. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  940. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  941. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  942. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  943. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  944. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  945. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  946. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  947. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  948. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  949. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  950. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  951. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  952. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  953. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  954. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  955. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  956. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  957. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  958. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  959. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  960. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  984. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  985. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  986. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  987. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  988. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  989. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  990. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  991. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  992. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  993. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  994. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  995. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  996. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  997. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  998. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  999. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  1000. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  1001. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  1002. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  1003. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  1004. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  1005. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  1006. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  1007. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  1008. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  1009. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1010. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1011. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1012. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1013. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1014. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1015. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1016. package/js/src/src/tabdeal.d.ts +23 -0
  1017. package/js/src/src/tabdeal.js +387 -0
  1018. package/js/src/src/tehran_exchange.d.ts +21 -0
  1019. package/js/src/src/tehran_exchange.js +333 -0
  1020. package/js/src/src/tetherland.d.ts +21 -0
  1021. package/js/src/src/tetherland.js +367 -0
  1022. package/js/src/src/timex.d.ts +247 -0
  1023. package/js/src/src/timex.js +1792 -0
  1024. package/js/src/src/tokocrypto.d.ts +261 -0
  1025. package/js/src/src/tokocrypto.js +2641 -0
  1026. package/js/src/src/toobit.d.ts +22 -0
  1027. package/js/src/src/toobit.js +445 -0
  1028. package/js/src/src/tradeogre.d.ts +149 -0
  1029. package/js/src/src/tradeogre.js +878 -0
  1030. package/js/src/src/twox.d.ts +21 -0
  1031. package/js/src/src/twox.js +371 -0
  1032. package/js/src/src/ubitex.d.ts +23 -0
  1033. package/js/src/src/ubitex.js +433 -0
  1034. package/js/src/src/upbit.d.ts +377 -0
  1035. package/js/src/src/upbit.js +2340 -0
  1036. package/js/src/src/vertex.d.ts +346 -0
  1037. package/js/src/src/vertex.js +3146 -0
  1038. package/js/src/src/wallex.d.ts +23 -0
  1039. package/js/src/src/wallex.js +467 -0
  1040. package/js/src/src/wavesexchange.d.ts +244 -0
  1041. package/js/src/src/wavesexchange.js +2747 -0
  1042. package/js/src/src/whitebit.d.ts +571 -0
  1043. package/js/src/src/whitebit.js +3437 -0
  1044. package/js/src/src/woo.d.ts +727 -0
  1045. package/js/src/src/woo.js +4183 -0
  1046. package/js/src/src/woofipro.d.ts +497 -0
  1047. package/js/src/src/woofipro.js +2941 -0
  1048. package/js/src/src/xt.d.ts +568 -0
  1049. package/js/src/src/xt.js +5184 -0
  1050. package/js/src/src/yobit.d.ts +197 -0
  1051. package/js/src/src/yobit.js +1453 -0
  1052. package/js/src/src/zaif.d.ts +136 -0
  1053. package/js/src/src/zaif.js +821 -0
  1054. package/js/src/src/zonda.d.ts +214 -0
  1055. package/js/src/src/zonda.js +1984 -0
  1056. package/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +1 -1
  1057. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +1 -1
  1058. package/js/test.js +9 -17
  1059. package/package.json +1 -1
@@ -0,0 +1,2203 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ import Exchange from './abstract/coinsph.js';
8
+ import { ArgumentsRequired, AuthenticationError, BadRequest, BadResponse, BadSymbol, DuplicateOrderId, ExchangeError, ExchangeNotAvailable, InvalidAddress, InvalidOrder, InsufficientFunds, NotSupported, OrderImmediatelyFillable, OrderNotFound, PermissionDenied, RateLimitExceeded } from './base/errors.js';
9
+ import { TICK_SIZE } from './base/functions/number.js';
10
+ import { Precise } from './base/Precise.js';
11
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
12
+ /**
13
+ * @class coinsph
14
+ * @augments Exchange
15
+ */
16
+ export default class coinsph extends Exchange {
17
+ describe() {
18
+ return this.deepExtend(super.describe(), {
19
+ 'id': 'coinsph',
20
+ 'name': 'Coins.ph',
21
+ 'countries': ['PH'],
22
+ 'version': 'v1',
23
+ 'rateLimit': 50,
24
+ 'certified': false,
25
+ 'pro': false,
26
+ 'has': {
27
+ 'CORS': undefined,
28
+ 'spot': true,
29
+ 'margin': false,
30
+ 'swap': false,
31
+ 'future': false,
32
+ 'option': false,
33
+ 'addMargin': false,
34
+ 'borrowCrossMargin': false,
35
+ 'borrowIsolatedMargin': false,
36
+ 'borrowMargin': false,
37
+ 'cancelAllOrders': true,
38
+ 'cancelOrder': true,
39
+ 'cancelOrders': false,
40
+ 'closeAllPositions': false,
41
+ 'closePosition': false,
42
+ 'createDepositAddress': false,
43
+ 'createMarketBuyOrderWithCost': true,
44
+ 'createMarketOrderWithCost': false,
45
+ 'createMarketSellOrderWithCost': false,
46
+ 'createOrder': true,
47
+ 'createOrderWithTakeProfitAndStopLoss': false,
48
+ 'createOrderWithTakeProfitAndStopLossWs': false,
49
+ 'createPostOnlyOrder': false,
50
+ 'createReduceOnlyOrder': false,
51
+ 'createStopLimitOrder': true,
52
+ 'createStopMarketOrder': true,
53
+ 'createStopOrder': true,
54
+ 'deposit': true,
55
+ 'editOrder': false,
56
+ 'fetchAccounts': false,
57
+ 'fetchBalance': true,
58
+ 'fetchBidsAsks': false,
59
+ 'fetchBorrowInterest': false,
60
+ 'fetchBorrowRate': false,
61
+ 'fetchBorrowRateHistories': false,
62
+ 'fetchBorrowRateHistory': false,
63
+ 'fetchBorrowRates': false,
64
+ 'fetchBorrowRatesPerSymbol': false,
65
+ 'fetchCanceledOrders': false,
66
+ 'fetchClosedOrder': false,
67
+ 'fetchClosedOrders': true,
68
+ 'fetchCrossBorrowRate': false,
69
+ 'fetchCrossBorrowRates': false,
70
+ 'fetchCurrencies': true,
71
+ 'fetchDeposit': undefined,
72
+ 'fetchDepositAddress': true,
73
+ 'fetchDepositAddresses': false,
74
+ 'fetchDepositAddressesByNetwork': false,
75
+ 'fetchDeposits': true,
76
+ 'fetchDepositWithdrawFee': false,
77
+ 'fetchDepositWithdrawFees': false,
78
+ 'fetchFundingHistory': false,
79
+ 'fetchFundingInterval': false,
80
+ 'fetchFundingIntervals': false,
81
+ 'fetchFundingRate': false,
82
+ 'fetchFundingRateHistory': false,
83
+ 'fetchFundingRates': false,
84
+ 'fetchGreeks': false,
85
+ 'fetchIndexOHLCV': false,
86
+ 'fetchIsolatedBorrowRate': false,
87
+ 'fetchIsolatedBorrowRates': false,
88
+ 'fetchIsolatedPositions': false,
89
+ 'fetchL3OrderBook': false,
90
+ 'fetchLedger': false,
91
+ 'fetchLeverage': false,
92
+ 'fetchLeverages': false,
93
+ 'fetchLeverageTiers': false,
94
+ 'fetchLiquidations': false,
95
+ 'fetchLongShortRatio': false,
96
+ 'fetchLongShortRatioHistory': false,
97
+ 'fetchMarginAdjustmentHistory': false,
98
+ 'fetchMarginMode': false,
99
+ 'fetchMarginModes': false,
100
+ 'fetchMarketLeverageTiers': false,
101
+ 'fetchMarkets': true,
102
+ 'fetchMarkOHLCV': false,
103
+ 'fetchMarkPrices': false,
104
+ 'fetchMyLiquidations': false,
105
+ 'fetchMySettlementHistory': false,
106
+ 'fetchMyTrades': true,
107
+ 'fetchOHLCV': true,
108
+ 'fetchOpenInterest': false,
109
+ 'fetchOpenInterestHistory': false,
110
+ 'fetchOpenInterests': false,
111
+ 'fetchOpenOrder': undefined,
112
+ 'fetchOpenOrders': true,
113
+ 'fetchOption': false,
114
+ 'fetchOptionChain': false,
115
+ 'fetchOrder': true,
116
+ 'fetchOrderBook': true,
117
+ 'fetchOrderBooks': false,
118
+ 'fetchOrders': false,
119
+ 'fetchOrderTrades': true,
120
+ 'fetchPosition': false,
121
+ 'fetchPositionHistory': false,
122
+ 'fetchPositionMode': false,
123
+ 'fetchPositions': false,
124
+ 'fetchPositionsForSymbol': false,
125
+ 'fetchPositionsHistory': false,
126
+ 'fetchPositionsRisk': false,
127
+ 'fetchPremiumIndexOHLCV': false,
128
+ 'fetchSettlementHistory': false,
129
+ 'fetchStatus': true,
130
+ 'fetchTicker': true,
131
+ 'fetchTickers': true,
132
+ 'fetchTime': true,
133
+ 'fetchTrades': true,
134
+ 'fetchTradingFee': true,
135
+ 'fetchTradingFees': true,
136
+ 'fetchTradingLimits': false,
137
+ 'fetchTransactionFee': false,
138
+ 'fetchTransactionFees': false,
139
+ 'fetchTransactions': false,
140
+ 'fetchTransfers': false,
141
+ 'fetchVolatilityHistory': false,
142
+ 'fetchWithdrawal': undefined,
143
+ 'fetchWithdrawals': true,
144
+ 'fetchWithdrawalWhitelist': false,
145
+ 'reduceMargin': false,
146
+ 'repayCrossMargin': false,
147
+ 'repayIsolatedMargin': false,
148
+ 'repayMargin': false,
149
+ 'setLeverage': false,
150
+ 'setMargin': false,
151
+ 'setMarginMode': false,
152
+ 'setPositionMode': false,
153
+ 'signIn': false,
154
+ 'transfer': false,
155
+ 'withdraw': true,
156
+ 'ws': false,
157
+ },
158
+ 'timeframes': {
159
+ '1m': '1m',
160
+ '3m': '3m',
161
+ '5m': '5m',
162
+ '15m': '15m',
163
+ '30m': '30m',
164
+ '1h': '1h',
165
+ '2h': '2h',
166
+ '4h': '4h',
167
+ '6h': '6h',
168
+ '8h': '8h',
169
+ '12h': '12h',
170
+ '1d': '1d',
171
+ '3d': '3d',
172
+ '1w': '1w',
173
+ '1M': '1M',
174
+ },
175
+ 'urls': {
176
+ 'logo': 'https://user-images.githubusercontent.com/1294454/225719995-48ab2026-4ddb-496c-9da7-0d7566617c9b.jpg',
177
+ 'api': {
178
+ 'public': 'https://api.pro.coins.ph',
179
+ 'private': 'https://api.pro.coins.ph',
180
+ },
181
+ 'www': 'https://coins.ph/',
182
+ 'doc': [
183
+ 'https://coins-docs.github.io/rest-api',
184
+ ],
185
+ 'fees': 'https://support.coins.ph/hc/en-us/sections/4407198694681-Limits-Fees',
186
+ },
187
+ 'api': {
188
+ 'public': {
189
+ 'get': {
190
+ 'openapi/v1/ping': 1,
191
+ 'openapi/v1/time': 1,
192
+ // cost 1 if 'symbol' param defined (one market symbol) or if 'symbols' param is a list of 1-20 market symbols
193
+ // cost 20 if 'symbols' param is a list of 21-100 market symbols
194
+ // cost 40 if 'symbols' param is a list of 101 or more market symbols or if both 'symbol' and 'symbols' params are omited
195
+ 'openapi/quote/v1/ticker/24hr': { 'cost': 1, 'noSymbolAndNoSymbols': 40, 'byNumberOfSymbols': [[101, 40], [21, 20], [0, 1]] },
196
+ // cost 1 if 'symbol' param defined (one market symbol)
197
+ // cost 2 if 'symbols' param is a list of 1 or more market symbols or if both 'symbol' and 'symbols' params are omited
198
+ 'openapi/quote/v1/ticker/price': { 'cost': 1, 'noSymbol': 2 },
199
+ // cost 1 if 'symbol' param defined (one market symbol)
200
+ // cost 2 if 'symbols' param is a list of 1 or more market symbols or if both 'symbol' and 'symbols' params are omited
201
+ 'openapi/quote/v1/ticker/bookTicker': { 'cost': 1, 'noSymbol': 2 },
202
+ 'openapi/v1/exchangeInfo': 10,
203
+ // cost 1 if limit <= 100; 5 if limit > 100.
204
+ 'openapi/quote/v1/depth': { 'cost': 1, 'byLimit': [[101, 5], [0, 1]] },
205
+ 'openapi/quote/v1/klines': 1,
206
+ 'openapi/quote/v1/trades': 1,
207
+ 'openapi/v1/pairs': 1,
208
+ 'openapi/quote/v1/avgPrice': 1,
209
+ },
210
+ },
211
+ 'private': {
212
+ 'get': {
213
+ 'openapi/wallet/v1/config/getall': 10,
214
+ 'openapi/wallet/v1/deposit/address': 10,
215
+ 'openapi/wallet/v1/deposit/history': 1,
216
+ 'openapi/wallet/v1/withdraw/history': 1,
217
+ 'openapi/v1/account': 10,
218
+ // cost 3 for a single symbol; 40 when the symbol parameter is omitted
219
+ 'openapi/v1/openOrders': { 'cost': 3, 'noSymbol': 40 },
220
+ 'openapi/v1/asset/tradeFee': 1,
221
+ 'openapi/v1/order': 2,
222
+ // cost 10 with symbol, 40 when the symbol parameter is omitted;
223
+ 'openapi/v1/historyOrders': { 'cost': 10, 'noSymbol': 40 },
224
+ 'openapi/v1/myTrades': 10,
225
+ 'openapi/v1/capital/deposit/history': 1,
226
+ 'openapi/v1/capital/withdraw/history': 1,
227
+ 'openapi/v3/payment-request/get-payment-request': 1,
228
+ 'merchant-api/v1/get-invoices': 1,
229
+ 'openapi/account/v3/crypto-accounts': 1,
230
+ 'openapi/transfer/v3/transfers/{id}': 1,
231
+ },
232
+ 'post': {
233
+ 'openapi/wallet/v1/withdraw/apply': 600,
234
+ 'openapi/v1/order/test': 1,
235
+ 'openapi/v1/order': 1,
236
+ 'openapi/v1/capital/withdraw/apply': 1,
237
+ 'openapi/v1/capital/deposit/apply': 1,
238
+ 'openapi/v3/payment-request/payment-requests': 1,
239
+ 'openapi/v3/payment-request/delete-payment-request': 1,
240
+ 'openapi/v3/payment-request/payment-request-reminder': 1,
241
+ 'openapi/v1/userDataStream': 1,
242
+ 'merchant-api/v1/invoices': 1,
243
+ 'merchant-api/v1/invoices-cancel': 1,
244
+ 'openapi/convert/v1/get-supported-trading-pairs': 1,
245
+ 'openapi/convert/v1/get-quote': 1,
246
+ 'openapi/convert/v1/accpet-quote': 1,
247
+ 'openapi/fiat/v1/support-channel': 1,
248
+ 'openapi/fiat/v1/cash-out': 1,
249
+ 'openapi/fiat/v1/history': 1,
250
+ 'openapi/migration/v4/sellorder': 1,
251
+ 'openapi/migration/v4/validate-field': 1,
252
+ 'openapi/transfer/v3/transfers': 1,
253
+ },
254
+ 'delete': {
255
+ 'openapi/v1/order': 1,
256
+ 'openapi/v1/openOrders': 1,
257
+ 'openapi/v1/userDataStream': 1,
258
+ },
259
+ },
260
+ },
261
+ 'fees': {
262
+ // todo: zero fees for USDT, ETH and BTC markets till 2023-04-02
263
+ 'trading': {
264
+ 'feeSide': 'get',
265
+ 'tierBased': true,
266
+ 'percentage': true,
267
+ 'maker': this.parseNumber('0.0025'),
268
+ 'taker': this.parseNumber('0.003'),
269
+ 'tiers': {
270
+ 'taker': [
271
+ [this.parseNumber('0'), this.parseNumber('0.003')],
272
+ [this.parseNumber('500000'), this.parseNumber('0.0027')],
273
+ [this.parseNumber('1000000'), this.parseNumber('0.0024')],
274
+ [this.parseNumber('2500000'), this.parseNumber('0.002')],
275
+ [this.parseNumber('5000000'), this.parseNumber('0.0018')],
276
+ [this.parseNumber('10000000'), this.parseNumber('0.0015')],
277
+ [this.parseNumber('100000000'), this.parseNumber('0.0012')],
278
+ [this.parseNumber('500000000'), this.parseNumber('0.0009')],
279
+ [this.parseNumber('1000000000'), this.parseNumber('0.0007')],
280
+ [this.parseNumber('2500000000'), this.parseNumber('0.0005')],
281
+ ],
282
+ 'maker': [
283
+ [this.parseNumber('0'), this.parseNumber('0.0025')],
284
+ [this.parseNumber('500000'), this.parseNumber('0.0022')],
285
+ [this.parseNumber('1000000'), this.parseNumber('0.0018')],
286
+ [this.parseNumber('2500000'), this.parseNumber('0.0015')],
287
+ [this.parseNumber('5000000'), this.parseNumber('0.0012')],
288
+ [this.parseNumber('10000000'), this.parseNumber('0.001')],
289
+ [this.parseNumber('100000000'), this.parseNumber('0.0008')],
290
+ [this.parseNumber('500000000'), this.parseNumber('0.0007')],
291
+ [this.parseNumber('1000000000'), this.parseNumber('0.0006')],
292
+ [this.parseNumber('2500000000'), this.parseNumber('0.0005')],
293
+ ],
294
+ },
295
+ },
296
+ },
297
+ 'precisionMode': TICK_SIZE,
298
+ // exchange-specific options
299
+ 'options': {
300
+ 'createMarketBuyOrderRequiresPrice': true,
301
+ 'withdraw': {
302
+ 'warning': false,
303
+ },
304
+ 'deposit': {
305
+ 'warning': false,
306
+ },
307
+ 'createOrder': {
308
+ 'timeInForce': 'GTC',
309
+ 'newOrderRespType': {
310
+ 'market': 'FULL',
311
+ 'limit': 'FULL', // we change it from 'ACK' by default to 'FULL'
312
+ },
313
+ },
314
+ 'fetchTicker': {
315
+ 'method': 'publicGetOpenapiQuoteV1Ticker24hr', // publicGetOpenapiQuoteV1TickerPrice, publicGetOpenapiQuoteV1TickerBookTicker
316
+ },
317
+ 'fetchTickers': {
318
+ 'method': 'publicGetOpenapiQuoteV1Ticker24hr', // publicGetOpenapiQuoteV1TickerPrice, publicGetOpenapiQuoteV1TickerBookTicker
319
+ },
320
+ 'networks': {
321
+ // all networks: 'ETH', 'TRX', 'BSC', 'ARBITRUM', 'RON', 'BTC', 'XRP'
322
+ // you can call api privateGetOpenapiWalletV1ConfigGetall to check which network is supported for the currency
323
+ 'TRC20': 'TRX',
324
+ 'ERC20': 'ETH',
325
+ 'BEP20': 'BSC',
326
+ 'ARB': 'ARBITRUM',
327
+ },
328
+ },
329
+ 'features': {
330
+ 'spot': {
331
+ 'sandbox': false,
332
+ 'createOrder': {
333
+ 'marginMode': false,
334
+ 'triggerPrice': true,
335
+ 'triggerPriceType': undefined,
336
+ 'triggerDirection': false,
337
+ 'stopLossPrice': false,
338
+ 'takeProfitPrice': false,
339
+ 'attachedStopLossTakeProfit': undefined,
340
+ 'timeInForce': {
341
+ 'IOC': true,
342
+ 'FOK': true,
343
+ 'PO': false,
344
+ 'GTD': false,
345
+ },
346
+ 'hedged': false,
347
+ 'trailing': false,
348
+ 'leverage': false,
349
+ 'marketBuyByCost': true,
350
+ 'marketBuyRequiresPrice': false,
351
+ 'selfTradePrevention': true,
352
+ 'iceberg': false,
353
+ },
354
+ 'createOrders': undefined,
355
+ 'fetchMyTrades': {
356
+ 'marginMode': false,
357
+ 'limit': 1000,
358
+ 'daysBack': 100000,
359
+ 'untilDays': 100000,
360
+ 'symbolRequired': true,
361
+ },
362
+ 'fetchOrder': {
363
+ 'marginMode': false,
364
+ 'trigger': false,
365
+ 'trailing': false,
366
+ 'symbolRequired': false,
367
+ },
368
+ 'fetchOpenOrders': {
369
+ 'marginMode': false,
370
+ 'limit': undefined,
371
+ 'trigger': false,
372
+ 'trailing': false,
373
+ 'symbolRequired': false,
374
+ },
375
+ 'fetchOrders': undefined,
376
+ 'fetchClosedOrders': {
377
+ 'marginMode': false,
378
+ 'limit': 1000,
379
+ 'daysBack': 100000,
380
+ 'daysBackCanceled': 1,
381
+ 'untilDays': 100000,
382
+ 'trigger': false,
383
+ 'trailing': false,
384
+ 'symbolRequired': true,
385
+ },
386
+ 'fetchOHLCV': {
387
+ 'limit': 1000,
388
+ },
389
+ },
390
+ 'swap': {
391
+ 'linear': undefined,
392
+ 'inverse': undefined,
393
+ },
394
+ 'future': {
395
+ 'linear': undefined,
396
+ 'inverse': undefined,
397
+ },
398
+ },
399
+ // https://coins-docs.github.io/errors/
400
+ 'exceptions': {
401
+ 'exact': {
402
+ '-1000': BadRequest,
403
+ '-1001': BadRequest,
404
+ '-1002': AuthenticationError,
405
+ '-1003': RateLimitExceeded,
406
+ '-1004': InvalidOrder,
407
+ '-1006': BadResponse,
408
+ '-1007': BadResponse,
409
+ '-1014': InvalidOrder,
410
+ '-1015': RateLimitExceeded,
411
+ '-1016': NotSupported,
412
+ '-1020': NotSupported,
413
+ '-1021': BadRequest,
414
+ '-1022': BadRequest,
415
+ '-1023': AuthenticationError,
416
+ '-1024': BadRequest,
417
+ '-1025': BadRequest,
418
+ '-1030': ExchangeError,
419
+ '-1100': BadRequest,
420
+ '-1101': BadRequest,
421
+ '-1102': BadRequest,
422
+ '-1103': BadRequest,
423
+ '-1104': BadRequest,
424
+ '-1105': BadRequest,
425
+ '-1106': BadRequest,
426
+ '-1111': BadRequest,
427
+ '-1112': BadResponse,
428
+ '-1114': BadRequest,
429
+ '-1115': InvalidOrder,
430
+ '-1116': InvalidOrder,
431
+ '-1117': InvalidOrder,
432
+ '-1118': InvalidOrder,
433
+ '-1119': InvalidOrder,
434
+ '-1120': BadRequest,
435
+ '-1121': BadSymbol,
436
+ '-1122': InvalidOrder,
437
+ '-1125': BadRequest,
438
+ '-1127': BadRequest,
439
+ '-1128': BadRequest,
440
+ '-1130': BadRequest,
441
+ '-1131': InsufficientFunds,
442
+ '-1132': InvalidOrder,
443
+ '-1133': InvalidOrder,
444
+ '-1134': InvalidOrder,
445
+ '-1135': InvalidOrder,
446
+ '-1136': InvalidOrder,
447
+ '-1137': InvalidOrder,
448
+ '-1138': InvalidOrder,
449
+ '-1139': InvalidOrder,
450
+ '-1140': InvalidOrder,
451
+ '-1141': DuplicateOrderId,
452
+ '-1142': InvalidOrder,
453
+ '-1143': OrderNotFound,
454
+ '-1144': InvalidOrder,
455
+ '-1145': InvalidOrder,
456
+ '-1146': InvalidOrder,
457
+ '-1147': InvalidOrder,
458
+ '-1148': InvalidOrder,
459
+ '-1149': InvalidOrder,
460
+ '-1150': InvalidOrder,
461
+ '-1151': BadSymbol,
462
+ '-1152': NotSupported,
463
+ '-1153': AuthenticationError,
464
+ '-1154': BadRequest,
465
+ '-1155': BadRequest,
466
+ '-1156': InvalidOrder,
467
+ '-1157': BadSymbol,
468
+ '-1158': InvalidOrder,
469
+ '-1159': InvalidOrder,
470
+ '-1160': BadRequest,
471
+ '-1161': BadRequest,
472
+ '-2010': InvalidOrder,
473
+ '-2013': OrderNotFound,
474
+ '-2011': BadRequest,
475
+ '-2014': BadRequest,
476
+ '-2015': AuthenticationError,
477
+ '-2016': BadResponse,
478
+ '-3126': InvalidOrder,
479
+ '-3127': InvalidOrder,
480
+ '-4001': BadRequest,
481
+ '-100011': BadSymbol,
482
+ '-100012': BadSymbol,
483
+ '-30008': InsufficientFunds,
484
+ '-30036': InsufficientFunds,
485
+ '403': ExchangeNotAvailable,
486
+ },
487
+ 'broad': {
488
+ 'Unknown order sent': OrderNotFound,
489
+ 'Duplicate order sent': DuplicateOrderId,
490
+ 'Market is closed': BadSymbol,
491
+ 'Account has insufficient balance for requested action': InsufficientFunds,
492
+ 'Market orders are not supported for this symbol': BadSymbol,
493
+ 'Iceberg orders are not supported for this symbol': BadSymbol,
494
+ 'Stop loss orders are not supported for this symbol': BadSymbol,
495
+ 'Stop loss limit orders are not supported for this symbol': BadSymbol,
496
+ 'Take profit orders are not supported for this symbol': BadSymbol,
497
+ 'Take profit limit orders are not supported for this symbol': BadSymbol,
498
+ 'Price* QTY is zero or less': BadRequest,
499
+ 'IcebergQty exceeds QTY': BadRequest,
500
+ 'This action disabled is on this account': PermissionDenied,
501
+ 'Unsupported order combination': InvalidOrder,
502
+ 'Order would trigger immediately': InvalidOrder,
503
+ 'Cancel order is invalid. Check origClOrdId and orderId': InvalidOrder,
504
+ 'Order would immediately match and take': OrderImmediatelyFillable,
505
+ 'PRICE_FILTER': InvalidOrder,
506
+ 'LOT_SIZE': InvalidOrder,
507
+ 'MIN_NOTIONAL': InvalidOrder,
508
+ 'MAX_NUM_ORDERS': InvalidOrder,
509
+ 'MAX_ALGO_ORDERS': InvalidOrder,
510
+ 'BROKER_MAX_NUM_ORDERS': InvalidOrder,
511
+ 'BROKER_MAX_ALGO_ORDERS': InvalidOrder,
512
+ 'ICEBERG_PARTS': BadRequest, // Iceberg order would break into too many parts; icebergQty is too small.
513
+ },
514
+ },
515
+ });
516
+ }
517
+ /**
518
+ * @method
519
+ * @name coinsph#fetchCurrencies
520
+ * @description fetches all available currencies on an exchange
521
+ * @see https://docs.coins.ph/rest-api/#all-coins-information-user_data
522
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
523
+ * @returns {object} an associative dictionary of currencies
524
+ */
525
+ async fetchCurrencies(params = {}) {
526
+ if (!this.checkRequiredCredentials(false)) {
527
+ return undefined;
528
+ }
529
+ const response = await this.privateGetOpenapiWalletV1ConfigGetall(params);
530
+ //
531
+ // [
532
+ // {
533
+ // "coin": "PHP",
534
+ // "name": "PHP",
535
+ // "depositAllEnable": false,
536
+ // "withdrawAllEnable": false,
537
+ // "free": "0",
538
+ // "locked": "0",
539
+ // "transferPrecision": "2",
540
+ // "transferMinQuantity": "0",
541
+ // "networkList": [],
542
+ // "legalMoney": true
543
+ // },
544
+ // {
545
+ // "coin": "USDT",
546
+ // "name": "USDT",
547
+ // "depositAllEnable": true,
548
+ // "withdrawAllEnable": true,
549
+ // "free": "0",
550
+ // "locked": "0",
551
+ // "transferPrecision": "8",
552
+ // "transferMinQuantity": "0",
553
+ // "networkList": [
554
+ // {
555
+ // "addressRegex": "^0x[0-9a-fA-F]{40}$",
556
+ // "memoRegex": " ",
557
+ // "network": "ETH",
558
+ // "name": "Ethereum (ERC20)",
559
+ // "depositEnable": true,
560
+ // "minConfirm": "12",
561
+ // "unLockConfirm": "-1",
562
+ // "withdrawDesc": "",
563
+ // "withdrawEnable": true,
564
+ // "withdrawFee": "6",
565
+ // "withdrawIntegerMultiple": "0.000001",
566
+ // "withdrawMax": "500000",
567
+ // "withdrawMin": "10",
568
+ // "sameAddress": false
569
+ // },
570
+ // {
571
+ // "addressRegex": "^T[0-9a-zA-Z]{33}$",
572
+ // "memoRegex": "",
573
+ // "network": "TRX",
574
+ // "name": "TRON",
575
+ // "depositEnable": true,
576
+ // "minConfirm": "19",
577
+ // "unLockConfirm": "-1",
578
+ // "withdrawDesc": "",
579
+ // "withdrawEnable": true,
580
+ // "withdrawFee": "3",
581
+ // "withdrawIntegerMultiple": "0.000001",
582
+ // "withdrawMax": "1000000",
583
+ // "withdrawMin": "20",
584
+ // "sameAddress": false
585
+ // }
586
+ // ],
587
+ // "legalMoney": false
588
+ // }
589
+ // ]
590
+ //
591
+ const result = {};
592
+ for (let i = 0; i < response.length; i++) {
593
+ const entry = response[i];
594
+ const id = this.safeString(entry, 'coin');
595
+ const code = this.safeCurrencyCode(id);
596
+ const isFiat = this.safeBool(entry, 'isLegalMoney');
597
+ const networkList = this.safeList(entry, 'networkList', []);
598
+ const networks = {};
599
+ for (let j = 0; j < networkList.length; j++) {
600
+ const networkItem = networkList[j];
601
+ const network = this.safeString(networkItem, 'network');
602
+ const networkCode = this.networkIdToCode(network);
603
+ networks[networkCode] = {
604
+ 'info': networkItem,
605
+ 'id': network,
606
+ 'network': networkCode,
607
+ 'active': undefined,
608
+ 'deposit': this.safeBool(networkItem, 'depositEnable'),
609
+ 'withdraw': this.safeBool(networkItem, 'withdrawEnable'),
610
+ 'fee': this.safeNumber(networkItem, 'withdrawFee'),
611
+ 'precision': this.safeNumber(networkItem, 'withdrawIntegerMultiple'),
612
+ 'limits': {
613
+ 'withdraw': {
614
+ 'min': this.safeNumber(networkItem, 'withdrawMin'),
615
+ 'max': this.safeNumber(networkItem, 'withdrawMax'),
616
+ },
617
+ 'deposit': {
618
+ 'min': undefined,
619
+ 'max': undefined,
620
+ },
621
+ },
622
+ };
623
+ }
624
+ result[code] = this.safeCurrencyStructure({
625
+ 'id': id,
626
+ 'name': this.safeString(entry, 'name'),
627
+ 'code': code,
628
+ 'type': isFiat ? 'fiat' : 'crypto',
629
+ 'precision': this.parseNumber(this.parsePrecision(this.safeString(entry, 'transferPrecision'))),
630
+ 'info': entry,
631
+ 'active': undefined,
632
+ 'deposit': this.safeBool(entry, 'depositAllEnable'),
633
+ 'withdraw': this.safeBool(entry, 'withdrawAllEnable'),
634
+ 'networks': networks,
635
+ 'fee': undefined,
636
+ 'fees': undefined,
637
+ 'limits': {},
638
+ });
639
+ }
640
+ return result;
641
+ }
642
+ calculateRateLimiterCost(api, method, path, params, config = {}) {
643
+ if (('noSymbol' in config) && !('symbol' in params)) {
644
+ return config['noSymbol'];
645
+ }
646
+ else if (('noSymbolAndNoSymbols' in config) && !('symbol' in params) && !('symbols' in params)) {
647
+ return config['noSymbolAndNoSymbols'];
648
+ }
649
+ else if (('byNumberOfSymbols' in config) && ('symbols' in params)) {
650
+ const symbols = params['symbols'];
651
+ const symbolsAmount = symbols.length;
652
+ const byNumberOfSymbols = config['byNumberOfSymbols'];
653
+ for (let i = 0; i < byNumberOfSymbols.length; i++) {
654
+ const entry = byNumberOfSymbols[i];
655
+ if (symbolsAmount >= entry[0]) {
656
+ return entry[1];
657
+ }
658
+ }
659
+ }
660
+ else if (('byLimit' in config) && ('limit' in params)) {
661
+ const limit = params['limit'];
662
+ const byLimit = config['byLimit'];
663
+ for (let i = 0; i < byLimit.length; i++) {
664
+ const entry = byLimit[i];
665
+ if (limit >= entry[0]) {
666
+ return entry[1];
667
+ }
668
+ }
669
+ }
670
+ return this.safeValue(config, 'cost', 1);
671
+ }
672
+ /**
673
+ * @method
674
+ * @name coinsph#fetchStatus
675
+ * @description the latest known information on the availability of the exchange API
676
+ * @see https://coins-docs.github.io/rest-api/#test-connectivity
677
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
678
+ * @returns {object} a [status structure]{@link https://docs.ccxt.com/#/?id=exchange-status-structure}
679
+ */
680
+ async fetchStatus(params = {}) {
681
+ const response = await this.publicGetOpenapiV1Ping(params);
682
+ return {
683
+ 'status': 'ok',
684
+ 'updated': undefined,
685
+ 'eta': undefined,
686
+ 'url': undefined,
687
+ 'info': response,
688
+ };
689
+ }
690
+ /**
691
+ * @method
692
+ * @name coinsph#fetchTime
693
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
694
+ * @see https://coins-docs.github.io/rest-api/#check-server-time
695
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
696
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
697
+ */
698
+ async fetchTime(params = {}) {
699
+ const response = await this.publicGetOpenapiV1Time(params);
700
+ //
701
+ // {"serverTime":1677705408268}
702
+ //
703
+ return this.safeInteger(response, 'serverTime');
704
+ }
705
+ /**
706
+ * @method
707
+ * @name coinsph#fetchMarkets
708
+ * @description retrieves data on all markets for coinsph
709
+ * @see https://coins-docs.github.io/rest-api/#exchange-information
710
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
711
+ * @returns {object[]} an array of objects representing market data
712
+ */
713
+ async fetchMarkets(params = {}) {
714
+ const response = await this.publicGetOpenapiV1ExchangeInfo(params);
715
+ //
716
+ // {
717
+ // "timezone": "UTC",
718
+ // "serverTime": "1677449496897",
719
+ // "exchangeFilters": [],
720
+ // "symbols": [
721
+ // {
722
+ // "symbol": "XRPPHP",
723
+ // "status": "TRADING",
724
+ // "baseAsset": "XRP",
725
+ // "baseAssetPrecision": "2",
726
+ // "quoteAsset": "PHP",
727
+ // "quoteAssetPrecision": "4",
728
+ // "orderTypes": [
729
+ // "LIMIT",
730
+ // "MARKET",
731
+ // "LIMIT_MAKER",
732
+ // "STOP_LOSS_LIMIT",
733
+ // "STOP_LOSS",
734
+ // "TAKE_PROFIT_LIMIT",
735
+ // "TAKE_PROFIT"
736
+ // ],
737
+ // "filters": [
738
+ // {
739
+ // "minPrice": "0.01",
740
+ // "maxPrice": "99999999.00000000",
741
+ // "tickSize": "0.01",
742
+ // "filterType": "PRICE_FILTER"
743
+ // },
744
+ // {
745
+ // "minQty": "0.01",
746
+ // "maxQty": "99999999999.00000000",
747
+ // "stepSize": "0.01",
748
+ // "filterType": "LOT_SIZE"
749
+ // },
750
+ // { minNotional: "50", filterType: "NOTIONAL" },
751
+ // { minNotional: "50", filterType: "MIN_NOTIONAL" },
752
+ // {
753
+ // "priceUp": "99999999",
754
+ // "priceDown": "0.01",
755
+ // "filterType": "STATIC_PRICE_RANGE"
756
+ // },
757
+ // {
758
+ // "multiplierUp": "1.1",
759
+ // "multiplierDown": "0.9",
760
+ // "filterType": "PERCENT_PRICE_INDEX"
761
+ // },
762
+ // {
763
+ // "multiplierUp": "1.1",
764
+ // "multiplierDown": "0.9",
765
+ // "filterType": "PERCENT_PRICE_ORDER_SIZE"
766
+ // },
767
+ // { maxNumOrders: "200", filterType: "MAX_NUM_ORDERS" },
768
+ // { maxNumAlgoOrders: "5", filterType: "MAX_NUM_ALGO_ORDERS" }
769
+ // ]
770
+ // },
771
+ // ]
772
+ // }
773
+ //
774
+ const markets = this.safeList(response, 'symbols', []);
775
+ const result = [];
776
+ for (let i = 0; i < markets.length; i++) {
777
+ const market = markets[i];
778
+ const id = this.safeString(market, 'symbol');
779
+ const baseId = this.safeString(market, 'baseAsset');
780
+ const quoteId = this.safeString(market, 'quoteAsset');
781
+ const base = this.safeCurrencyCode(baseId);
782
+ const quote = this.safeCurrencyCode(quoteId);
783
+ const limits = this.indexBy(this.safeList(market, 'filters', []), 'filterType');
784
+ const amountLimits = this.safeValue(limits, 'LOT_SIZE', {});
785
+ const priceLimits = this.safeValue(limits, 'PRICE_FILTER', {});
786
+ const costLimits = this.safeValue(limits, 'NOTIONAL', {});
787
+ result.push({
788
+ 'id': id,
789
+ 'symbol': base + '/' + quote,
790
+ 'base': base,
791
+ 'quote': quote,
792
+ 'settle': undefined,
793
+ 'baseId': baseId,
794
+ 'quoteId': quoteId,
795
+ 'settleId': undefined,
796
+ 'type': 'spot',
797
+ 'spot': true,
798
+ 'margin': false,
799
+ 'swap': false,
800
+ 'future': false,
801
+ 'option': false,
802
+ 'active': this.safeStringLower(market, 'status') === 'trading',
803
+ 'contract': false,
804
+ 'linear': undefined,
805
+ 'inverse': undefined,
806
+ 'taker': undefined,
807
+ 'maker': undefined,
808
+ 'contractSize': undefined,
809
+ 'expiry': undefined,
810
+ 'expiryDatetime': undefined,
811
+ 'strike': undefined,
812
+ 'optionType': undefined,
813
+ 'precision': {
814
+ 'amount': this.parseNumber(this.safeString(amountLimits, 'stepSize')),
815
+ 'price': this.parseNumber(this.safeString(priceLimits, 'tickSize')),
816
+ },
817
+ 'limits': {
818
+ 'leverage': {
819
+ 'min': undefined,
820
+ 'max': undefined,
821
+ },
822
+ 'amount': {
823
+ 'min': this.parseNumber(this.safeString(amountLimits, 'minQty')),
824
+ 'max': this.parseNumber(this.safeString(amountLimits, 'maxQty')),
825
+ },
826
+ 'price': {
827
+ 'min': this.parseNumber(this.safeString(priceLimits, 'minPrice')),
828
+ 'max': this.parseNumber(this.safeString(priceLimits, 'maxPrice')),
829
+ },
830
+ 'cost': {
831
+ 'min': this.parseNumber(this.safeString(costLimits, 'minNotional')),
832
+ 'max': undefined,
833
+ },
834
+ },
835
+ 'created': undefined,
836
+ 'info': market,
837
+ });
838
+ }
839
+ this.setMarkets(result);
840
+ return result;
841
+ }
842
+ /**
843
+ * @method
844
+ * @name coinsph#fetchTickers
845
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
846
+ * @see https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
847
+ * @see https://coins-docs.github.io/rest-api/#symbol-price-ticker
848
+ * @see https://coins-docs.github.io/rest-api/#symbol-order-book-ticker
849
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
850
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
851
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
852
+ */
853
+ async fetchTickers(symbols = undefined, params = {}) {
854
+ await this.loadMarkets();
855
+ const request = {};
856
+ if (symbols !== undefined) {
857
+ const ids = [];
858
+ for (let i = 0; i < symbols.length; i++) {
859
+ const market = this.market(symbols[i]);
860
+ const id = market['id'];
861
+ ids.push(id);
862
+ }
863
+ request['symbols'] = ids;
864
+ }
865
+ const defaultMethod = 'publicGetOpenapiQuoteV1Ticker24hr';
866
+ const options = this.safeDict(this.options, 'fetchTickers', {});
867
+ const method = this.safeString(options, 'method', defaultMethod);
868
+ let tickers = undefined;
869
+ if (method === 'publicGetOpenapiQuoteV1TickerPrice') {
870
+ tickers = await this.publicGetOpenapiQuoteV1TickerPrice(this.extend(request, params));
871
+ }
872
+ else if (method === 'publicGetOpenapiQuoteV1TickerBookTicker') {
873
+ tickers = await this.publicGetOpenapiQuoteV1TickerBookTicker(this.extend(request, params));
874
+ }
875
+ else {
876
+ tickers = await this.publicGetOpenapiQuoteV1Ticker24hr(this.extend(request, params));
877
+ }
878
+ return this.parseTickers(tickers, symbols, params);
879
+ }
880
+ /**
881
+ * @method
882
+ * @name coinsph#fetchTicker
883
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
884
+ * @see https://coins-docs.github.io/rest-api/#24hr-ticker-price-change-statistics
885
+ * @see https://coins-docs.github.io/rest-api/#symbol-price-ticker
886
+ * @see https://coins-docs.github.io/rest-api/#symbol-order-book-ticker
887
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
888
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
889
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
890
+ */
891
+ async fetchTicker(symbol, params = {}) {
892
+ await this.loadMarkets();
893
+ const market = this.market(symbol);
894
+ const request = {
895
+ 'symbol': market['id'],
896
+ };
897
+ const defaultMethod = 'publicGetOpenapiQuoteV1Ticker24hr';
898
+ const options = this.safeDict(this.options, 'fetchTicker', {});
899
+ const method = this.safeString(options, 'method', defaultMethod);
900
+ let ticker = undefined;
901
+ if (method === 'publicGetOpenapiQuoteV1TickerPrice') {
902
+ ticker = await this.publicGetOpenapiQuoteV1TickerPrice(this.extend(request, params));
903
+ }
904
+ else if (method === 'publicGetOpenapiQuoteV1TickerBookTicker') {
905
+ ticker = await this.publicGetOpenapiQuoteV1TickerBookTicker(this.extend(request, params));
906
+ }
907
+ else {
908
+ ticker = await this.publicGetOpenapiQuoteV1Ticker24hr(this.extend(request, params));
909
+ }
910
+ return this.parseTicker(ticker, market);
911
+ }
912
+ parseTicker(ticker, market = undefined) {
913
+ //
914
+ // publicGetOpenapiQuoteV1Ticker24hr
915
+ // {
916
+ // "symbol": "ETHUSDT",
917
+ // "priceChange": "41.440000000000000000",
918
+ // "priceChangePercent": "0.0259",
919
+ // "weightedAvgPrice": "1631.169825783972125436",
920
+ // "prevClosePrice": "1601.520000000000000000",
921
+ // "lastPrice": "1642.96",
922
+ // "lastQty": "0.000001000000000000",
923
+ // "bidPrice": "1638.790000000000000000",
924
+ // "bidQty": "0.280075000000000000",
925
+ // "askPrice": "1647.340000000000000000",
926
+ // "askQty": "0.165183000000000000",
927
+ // "openPrice": "1601.52",
928
+ // "highPrice": "1648.28",
929
+ // "lowPrice": "1601.52",
930
+ // "volume": "0.000287",
931
+ // "quoteVolume": "0.46814574",
932
+ // "openTime": "1677417000000",
933
+ // "closeTime": "1677503415200",
934
+ // "firstId": "1364680572697591809",
935
+ // "lastId": "1365389809203560449",
936
+ // "count": "100"
937
+ // }
938
+ //
939
+ // publicGetOpenapiQuoteV1TickerPrice
940
+ // { "symbol": "ETHUSDT", "price": "1599.68" }
941
+ //
942
+ // publicGetOpenapiQuoteV1TickerBookTicker
943
+ // {
944
+ // "symbol": "ETHUSDT",
945
+ // "bidPrice": "1596.57",
946
+ // "bidQty": "0.246405",
947
+ // "askPrice": "1605.12",
948
+ // "askQty": "0.242681"
949
+ // }
950
+ //
951
+ const marketId = this.safeString(ticker, 'symbol');
952
+ market = this.safeMarket(marketId, market);
953
+ const timestamp = this.safeInteger(ticker, 'closeTime');
954
+ const bid = this.safeString(ticker, 'bidPrice');
955
+ const ask = this.safeString(ticker, 'askPrice');
956
+ const bidVolume = this.safeString(ticker, 'bidQty');
957
+ const askVolume = this.safeString(ticker, 'askQty');
958
+ const baseVolume = this.safeString(ticker, 'volume');
959
+ const quoteVolume = this.safeString(ticker, 'quoteVolume');
960
+ const open = this.safeString(ticker, 'openPrice');
961
+ const high = this.safeString(ticker, 'highPrice');
962
+ const low = this.safeString(ticker, 'lowPrice');
963
+ const prevClose = this.safeString(ticker, 'prevClosePrice');
964
+ const vwap = this.safeString(ticker, 'weightedAvgPrice');
965
+ const changeValue = this.safeString(ticker, 'priceChange');
966
+ let changePcnt = this.safeString(ticker, 'priceChangePercent');
967
+ changePcnt = Precise.stringMul(changePcnt, '100');
968
+ return this.safeTicker({
969
+ 'symbol': market['symbol'],
970
+ 'timestamp': timestamp,
971
+ 'datetime': this.iso8601(timestamp),
972
+ 'open': open,
973
+ 'high': high,
974
+ 'low': low,
975
+ 'close': this.safeString2(ticker, 'lastPrice', 'price'),
976
+ 'bid': bid,
977
+ 'bidVolume': bidVolume,
978
+ 'ask': ask,
979
+ 'askVolume': askVolume,
980
+ 'vwap': vwap,
981
+ 'previousClose': prevClose,
982
+ 'change': changeValue,
983
+ 'percentage': changePcnt,
984
+ 'average': undefined,
985
+ 'baseVolume': baseVolume,
986
+ 'quoteVolume': quoteVolume,
987
+ 'info': ticker,
988
+ }, market);
989
+ }
990
+ /**
991
+ * @method
992
+ * @name coinsph#fetchOrderBook
993
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
994
+ * @see https://coins-docs.github.io/rest-api/#order-book
995
+ * @param {string} symbol unified symbol of the market to fetch the order book for
996
+ * @param {int} [limit] the maximum amount of order book entries to return (default 100, max 200)
997
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
998
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
999
+ */
1000
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
1001
+ await this.loadMarkets();
1002
+ const market = this.market(symbol);
1003
+ const request = {
1004
+ 'symbol': market['id'],
1005
+ };
1006
+ if (limit !== undefined) {
1007
+ request['limit'] = limit;
1008
+ }
1009
+ const response = await this.publicGetOpenapiQuoteV1Depth(this.extend(request, params));
1010
+ //
1011
+ // {
1012
+ // "lastUpdateId": "1667022157000699400",
1013
+ // "bids": [
1014
+ // [ '1651.810000000000000000', '0.214556000000000000' ],
1015
+ // [ '1651.730000000000000000', '0.257343000000000000' ],
1016
+ // ],
1017
+ // "asks": [
1018
+ // [ '1660.510000000000000000', '0.299092000000000000' ],
1019
+ // [ '1660.600000000000000000', '0.253667000000000000' ],
1020
+ // ]
1021
+ // }
1022
+ //
1023
+ const orderbook = this.parseOrderBook(response, symbol);
1024
+ orderbook['nonce'] = this.safeInteger(response, 'lastUpdateId');
1025
+ return orderbook;
1026
+ }
1027
+ /**
1028
+ * @method
1029
+ * @name coinsph#fetchOHLCV
1030
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1031
+ * @see https://coins-docs.github.io/rest-api/#klinecandlestick-data
1032
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1033
+ * @param {string} timeframe the length of time each candle represents
1034
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
1035
+ * @param {int} [limit] the maximum amount of candles to fetch (default 500, max 1000)
1036
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1037
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch
1038
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1039
+ */
1040
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1041
+ await this.loadMarkets();
1042
+ const market = this.market(symbol);
1043
+ const interval = this.safeString(this.timeframes, timeframe);
1044
+ const until = this.safeInteger(params, 'until');
1045
+ const request = {
1046
+ 'symbol': market['id'],
1047
+ 'interval': interval,
1048
+ };
1049
+ if (limit === undefined) {
1050
+ limit = 1000;
1051
+ }
1052
+ if (since !== undefined) {
1053
+ request['startTime'] = since;
1054
+ // since work properly only when it is "younger" than last "limit" candle
1055
+ if (until !== undefined) {
1056
+ request['endTime'] = until;
1057
+ }
1058
+ else {
1059
+ const duration = this.parseTimeframe(timeframe) * 1000;
1060
+ const endTimeByLimit = this.sum(since, duration * (limit - 1));
1061
+ const now = this.milliseconds();
1062
+ request['endTime'] = Math.min(endTimeByLimit, now);
1063
+ }
1064
+ }
1065
+ else if (until !== undefined) {
1066
+ request['endTime'] = until;
1067
+ // since work properly only when it is "younger" than last "limit" candle
1068
+ const duration = this.parseTimeframe(timeframe) * 1000;
1069
+ request['startTime'] = until - (duration * (limit - 1));
1070
+ }
1071
+ request['limit'] = limit;
1072
+ params = this.omit(params, 'until');
1073
+ const response = await this.publicGetOpenapiQuoteV1Klines(this.extend(request, params));
1074
+ //
1075
+ // [
1076
+ // [
1077
+ // 1499040000000, // Open time
1078
+ // "0.01634790", // Open
1079
+ // "0.80000000", // High
1080
+ // "0.01575800", // Low
1081
+ // "0.01577100", // Close
1082
+ // "148976.11427815", // Volume
1083
+ // 1499644799999, // Close time
1084
+ // "2434.19055334", // Quote asset volume
1085
+ // 308, // Number of trades
1086
+ // "1756.87402397", // Taker buy base asset volume
1087
+ // "28.46694368" // Taker buy quote asset volume
1088
+ // ]
1089
+ // ]
1090
+ //
1091
+ return this.parseOHLCVs(response, market, timeframe, since, limit);
1092
+ }
1093
+ parseOHLCV(ohlcv, market = undefined) {
1094
+ return [
1095
+ this.safeInteger(ohlcv, 0),
1096
+ this.safeNumber(ohlcv, 1),
1097
+ this.safeNumber(ohlcv, 2),
1098
+ this.safeNumber(ohlcv, 3),
1099
+ this.safeNumber(ohlcv, 4),
1100
+ this.safeNumber(ohlcv, 5),
1101
+ ];
1102
+ }
1103
+ /**
1104
+ * @method
1105
+ * @name coinsph#fetchTrades
1106
+ * @description get the list of most recent trades for a particular symbol
1107
+ * @see https://coins-docs.github.io/rest-api/#recent-trades-list
1108
+ * @param {string} symbol unified symbol of the market to fetch trades for
1109
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
1110
+ * @param {int} [limit] the maximum amount of trades to fetch (default 500, max 1000)
1111
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1112
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1113
+ */
1114
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
1115
+ await this.loadMarkets();
1116
+ const market = this.market(symbol);
1117
+ const request = {
1118
+ 'symbol': market['id'],
1119
+ };
1120
+ if (since !== undefined) {
1121
+ // since work properly only when it is "younger" than last 'limit' trade
1122
+ request['limit'] = 1000;
1123
+ }
1124
+ else {
1125
+ if (limit !== undefined) {
1126
+ request['limit'] = limit;
1127
+ }
1128
+ }
1129
+ const response = await this.publicGetOpenapiQuoteV1Trades(this.extend(request, params));
1130
+ //
1131
+ // [
1132
+ // {
1133
+ // "price": "89685.8",
1134
+ // "id": "1365561108437680129",
1135
+ // "qty": "0.000004",
1136
+ // "quoteQty": "0.000004000000000000",
1137
+ // "time": "1677523569575",
1138
+ // "isBuyerMaker": false,
1139
+ // "isBestMatch": true
1140
+ // },
1141
+ // ]
1142
+ //
1143
+ return this.parseTrades(response, market, since, limit);
1144
+ }
1145
+ /**
1146
+ * @method
1147
+ * @name coinsph#fetchMyTrades
1148
+ * @description fetch all trades made by the user
1149
+ * @see https://coins-docs.github.io/rest-api/#account-trade-list-user_data
1150
+ * @param {string} symbol unified market symbol
1151
+ * @param {int} [since] the earliest time in ms to fetch trades for
1152
+ * @param {int} [limit] the maximum number of trades structures to retrieve (default 500, max 1000)
1153
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1154
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1155
+ */
1156
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1157
+ if (symbol === undefined) {
1158
+ throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
1159
+ }
1160
+ await this.loadMarkets();
1161
+ const market = this.market(symbol);
1162
+ const request = {
1163
+ 'symbol': market['id'],
1164
+ };
1165
+ if (since !== undefined) {
1166
+ request['startTime'] = since;
1167
+ // since work properly only when it is "younger" than last 'limit' trade
1168
+ request['limit'] = 1000;
1169
+ }
1170
+ else if (limit !== undefined) {
1171
+ request['limit'] = limit;
1172
+ }
1173
+ const response = await this.privateGetOpenapiV1MyTrades(this.extend(request, params));
1174
+ return this.parseTrades(response, market, since, limit);
1175
+ }
1176
+ /**
1177
+ * @method
1178
+ * @name coinsph#fetchOrderTrades
1179
+ * @description fetch all the trades made from a single order
1180
+ * @see https://coins-docs.github.io/rest-api/#account-trade-list-user_data
1181
+ * @param {string} id order id
1182
+ * @param {string} symbol unified market symbol
1183
+ * @param {int} [since] the earliest time in ms to fetch trades for
1184
+ * @param {int} [limit] the maximum number of trades to retrieve
1185
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1186
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1187
+ */
1188
+ async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
1189
+ if (symbol === undefined) {
1190
+ throw new ArgumentsRequired(this.id + ' fetchOrderTrades() requires a symbol argument');
1191
+ }
1192
+ const request = {
1193
+ 'orderId': id,
1194
+ };
1195
+ return await this.fetchMyTrades(symbol, since, limit, this.extend(request, params));
1196
+ }
1197
+ parseTrade(trade, market = undefined) {
1198
+ //
1199
+ // fetchTrades
1200
+ // {
1201
+ // "price": "89685.8",
1202
+ // "id": "1365561108437680129",
1203
+ // "qty": "0.000004",
1204
+ // "quoteQty": "0.000004000000000000", // warning: report to exchange - this is not quote quantity, this is base quantity
1205
+ // "time": "1677523569575",
1206
+ // "isBuyerMaker": false,
1207
+ // "isBestMatch": true
1208
+ // },
1209
+ //
1210
+ // fetchMyTrades
1211
+ // {
1212
+ // "symbol": "ETHUSDT",
1213
+ // "id": 1375426310524125185,
1214
+ // "orderId": 1375426310415879614,
1215
+ // "price": "1580.91",
1216
+ // "qty": "0.01",
1217
+ // "quoteQty": "15.8091",
1218
+ // "commission": "0",
1219
+ // "commissionAsset": "USDT",
1220
+ // "time": 1678699593307,
1221
+ // "isBuyer": false,
1222
+ // "isMaker":false,
1223
+ // "isBestMatch":false
1224
+ // }
1225
+ //
1226
+ // createOrder
1227
+ // {
1228
+ // "price": "1579.51",
1229
+ // "qty": "0.001899",
1230
+ // "commission": "0",
1231
+ // "commissionAsset": "ETH",
1232
+ // "tradeId":1375445992035598337
1233
+ // }
1234
+ //
1235
+ const marketId = this.safeString(trade, 'symbol');
1236
+ market = this.safeMarket(marketId, market);
1237
+ const symbol = market['symbol'];
1238
+ const id = this.safeString2(trade, 'id', 'tradeId');
1239
+ const orderId = this.safeString(trade, 'orderId');
1240
+ const timestamp = this.safeInteger(trade, 'time');
1241
+ const priceString = this.safeString(trade, 'price');
1242
+ const amountString = this.safeString(trade, 'qty');
1243
+ const type = undefined;
1244
+ let fee = undefined;
1245
+ const feeCost = this.safeString(trade, 'commission');
1246
+ if (feeCost !== undefined) {
1247
+ const feeCurrencyId = this.safeString(trade, 'commissionAsset');
1248
+ fee = {
1249
+ 'cost': feeCost,
1250
+ 'currency': this.safeCurrencyCode(feeCurrencyId),
1251
+ };
1252
+ }
1253
+ const isBuyer = this.safeBool2(trade, 'isBuyer', 'isBuyerMaker', undefined);
1254
+ let side = undefined;
1255
+ if (isBuyer !== undefined) {
1256
+ side = (isBuyer === true) ? 'buy' : 'sell';
1257
+ }
1258
+ const isMaker = this.safeString2(trade, 'isMaker', undefined);
1259
+ let takerOrMaker = undefined;
1260
+ if (isMaker !== undefined) {
1261
+ takerOrMaker = (isMaker === 'true') ? 'maker' : 'taker';
1262
+ }
1263
+ let costString = undefined;
1264
+ if (orderId !== undefined) {
1265
+ costString = this.safeString(trade, 'quoteQty');
1266
+ }
1267
+ return this.safeTrade({
1268
+ 'id': id,
1269
+ 'order': orderId,
1270
+ 'timestamp': timestamp,
1271
+ 'datetime': this.iso8601(timestamp),
1272
+ 'symbol': symbol,
1273
+ 'type': type,
1274
+ 'side': side,
1275
+ 'takerOrMaker': takerOrMaker,
1276
+ 'price': priceString,
1277
+ 'amount': amountString,
1278
+ 'cost': costString,
1279
+ 'fee': fee,
1280
+ 'info': trade,
1281
+ }, market);
1282
+ }
1283
+ /**
1284
+ * @method
1285
+ * @name coinsph#fetchBalance
1286
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1287
+ * @see https://coins-docs.github.io/rest-api/#accept-the-quote
1288
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1289
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1290
+ */
1291
+ async fetchBalance(params = {}) {
1292
+ await this.loadMarkets();
1293
+ const response = await this.privateGetOpenapiV1Account(params);
1294
+ //
1295
+ // {
1296
+ // "accountType": "SPOT",
1297
+ // "balances": [
1298
+ // {
1299
+ // "asset": "BTC",
1300
+ // "free": "4723846.89208129",
1301
+ // "locked": "0.00000000"
1302
+ // },
1303
+ // {
1304
+ // "asset": "LTC",
1305
+ // "free": "4763368.68006011",
1306
+ // "locked": "0.00000000"
1307
+ // }
1308
+ // ],
1309
+ // "canDeposit": true,
1310
+ // "canTrade": true,
1311
+ // "canWithdraw": true,
1312
+ // "updateTime": "1677430932528"
1313
+ // }
1314
+ //
1315
+ return this.parseBalance(response);
1316
+ }
1317
+ parseBalance(response) {
1318
+ const balances = this.safeList(response, 'balances', []);
1319
+ const result = {
1320
+ 'info': response,
1321
+ 'timestamp': undefined,
1322
+ 'datetime': undefined,
1323
+ };
1324
+ for (let i = 0; i < balances.length; i++) {
1325
+ const balance = balances[i];
1326
+ const currencyId = this.safeString(balance, 'asset');
1327
+ const code = this.safeCurrencyCode(currencyId);
1328
+ const account = this.account();
1329
+ account['free'] = this.safeString(balance, 'free');
1330
+ account['used'] = this.safeString(balance, 'locked');
1331
+ result[code] = account;
1332
+ }
1333
+ return this.safeBalance(result);
1334
+ }
1335
+ /**
1336
+ * @method
1337
+ * @name coinsph#createOrder
1338
+ * @description create a trade order
1339
+ * @see https://coins-docs.github.io/rest-api/#new-order--trade
1340
+ * @param {string} symbol unified symbol of the market to create an order in
1341
+ * @param {string} type 'market', 'limit', 'stop_loss', 'take_profit', 'stop_loss_limit', 'take_profit_limit' or 'limit_maker'
1342
+ * @param {string} side 'buy' or 'sell'
1343
+ * @param {float} amount how much of currency you want to trade in units of base currency
1344
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1345
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1346
+ * @param {float} [params.cost] the quote quantity that can be used as an alternative for the amount for market buy orders
1347
+ * @param {bool} [params.test] set to true to test an order, no order will be created but the request will be validated
1348
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1349
+ */
1350
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1351
+ // todo: add test order low priority
1352
+ await this.loadMarkets();
1353
+ const market = this.market(symbol);
1354
+ const testOrder = this.safeBool(params, 'test', false);
1355
+ params = this.omit(params, 'test');
1356
+ let orderType = this.safeString(params, 'type', type);
1357
+ orderType = this.encodeOrderType(orderType);
1358
+ params = this.omit(params, 'type');
1359
+ const orderSide = this.encodeOrderSide(side);
1360
+ const request = {
1361
+ 'symbol': market['id'],
1362
+ 'type': orderType,
1363
+ 'side': orderSide,
1364
+ };
1365
+ const options = this.safeValue(this.options, 'createOrder', {});
1366
+ let newOrderRespType = this.safeValue(options, 'newOrderRespType', {});
1367
+ // if limit order
1368
+ if (orderType === 'LIMIT' || orderType === 'STOP_LOSS_LIMIT' || orderType === 'TAKE_PROFIT_LIMIT' || orderType === 'LIMIT_MAKER') {
1369
+ if (price === undefined) {
1370
+ throw new ArgumentsRequired(this.id + ' createOrder() requires a price argument for a ' + type + ' order');
1371
+ }
1372
+ newOrderRespType = this.safeString(newOrderRespType, 'limit', 'FULL');
1373
+ request['price'] = this.priceToPrecision(symbol, price);
1374
+ request['quantity'] = this.amountToPrecision(symbol, amount);
1375
+ if (orderType !== 'LIMIT_MAKER') {
1376
+ request['timeInForce'] = this.safeString(options, 'timeInForce', 'GTC');
1377
+ }
1378
+ // if market order
1379
+ }
1380
+ else if (orderType === 'MARKET' || orderType === 'STOP_LOSS' || orderType === 'TAKE_PROFIT') {
1381
+ newOrderRespType = this.safeString(newOrderRespType, 'market', 'FULL');
1382
+ if (orderSide === 'SELL') {
1383
+ request['quantity'] = this.amountToPrecision(symbol, amount);
1384
+ }
1385
+ else if (orderSide === 'BUY') {
1386
+ let quoteAmount = undefined;
1387
+ let createMarketBuyOrderRequiresPrice = true;
1388
+ [createMarketBuyOrderRequiresPrice, params] = this.handleOptionAndParams(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', true);
1389
+ const cost = this.safeNumber2(params, 'cost', 'quoteOrderQty');
1390
+ params = this.omit(params, 'cost');
1391
+ if (cost !== undefined) {
1392
+ quoteAmount = this.costToPrecision(symbol, cost);
1393
+ }
1394
+ else if (createMarketBuyOrderRequiresPrice) {
1395
+ if (price === undefined) {
1396
+ throw new InvalidOrder(this.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend (amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to false and pass the cost to spend in the amount argument');
1397
+ }
1398
+ else {
1399
+ const amountString = this.numberToString(amount);
1400
+ const priceString = this.numberToString(price);
1401
+ const costRequest = Precise.stringMul(amountString, priceString);
1402
+ quoteAmount = this.costToPrecision(symbol, costRequest);
1403
+ }
1404
+ }
1405
+ else {
1406
+ quoteAmount = this.costToPrecision(symbol, amount);
1407
+ }
1408
+ request['quoteOrderQty'] = quoteAmount;
1409
+ }
1410
+ }
1411
+ if (orderType === 'STOP_LOSS' || orderType === 'STOP_LOSS_LIMIT' || orderType === 'TAKE_PROFIT' || orderType === 'TAKE_PROFIT_LIMIT') {
1412
+ const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
1413
+ if (triggerPrice === undefined) {
1414
+ throw new InvalidOrder(this.id + ' createOrder () requires a triggerPrice or stopPrice param for stop_loss, take_profit, stop_loss_limit, and take_profit_limit orders');
1415
+ }
1416
+ request['stopPrice'] = this.priceToPrecision(symbol, triggerPrice);
1417
+ }
1418
+ request['newOrderRespType'] = newOrderRespType;
1419
+ params = this.omit(params, 'price', 'stopPrice', 'triggerPrice', 'quantity', 'quoteOrderQty');
1420
+ let response = undefined;
1421
+ if (testOrder) {
1422
+ response = await this.privatePostOpenapiV1OrderTest(this.extend(request, params));
1423
+ }
1424
+ else {
1425
+ response = await this.privatePostOpenapiV1Order(this.extend(request, params));
1426
+ }
1427
+ //
1428
+ // {
1429
+ // "symbol": "ETHUSDT",
1430
+ // "orderId": "1375407140139731486",
1431
+ // "clientOrderId": "1375407140139733169",
1432
+ // "transactTime": "1678697308023",
1433
+ // "price": "1600",
1434
+ // "origQty": "0.02",
1435
+ // "executedQty": "0.02",
1436
+ // "cummulativeQuoteQty": "31.9284",
1437
+ // "status": "FILLED",
1438
+ // "timeInForce": "GTC",
1439
+ // "type": "LIMIT",
1440
+ // "side": "BUY",
1441
+ // "stopPrice": "0",
1442
+ // "origQuoteOrderQty": "0",
1443
+ // "fills": [
1444
+ // {
1445
+ // "price": "1596.42",
1446
+ // "qty": "0.02",
1447
+ // "commission": "0",
1448
+ // "commissionAsset": "ETH",
1449
+ // "tradeId": "1375407140281532417"
1450
+ // }
1451
+ // ]
1452
+ // },
1453
+ //
1454
+ return this.parseOrder(response, market);
1455
+ }
1456
+ /**
1457
+ * @method
1458
+ * @name coinsph#fetchOrder
1459
+ * @description fetches information on an order made by the user
1460
+ * @see https://coins-docs.github.io/rest-api/#query-order-user_data
1461
+ * @param {int|string} id order id
1462
+ * @param {string} symbol not used by coinsph fetchOrder ()
1463
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1464
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1465
+ */
1466
+ async fetchOrder(id, symbol = undefined, params = {}) {
1467
+ await this.loadMarkets();
1468
+ const request = {};
1469
+ const clientOrderId = this.safeValue2(params, 'origClientOrderId', 'clientOrderId');
1470
+ if (clientOrderId !== undefined) {
1471
+ request['origClientOrderId'] = clientOrderId;
1472
+ }
1473
+ else {
1474
+ request['orderId'] = id;
1475
+ }
1476
+ params = this.omit(params, ['clientOrderId', 'origClientOrderId']);
1477
+ const response = await this.privateGetOpenapiV1Order(this.extend(request, params));
1478
+ return this.parseOrder(response);
1479
+ }
1480
+ /**
1481
+ * @method
1482
+ * @name coinsph#fetchOpenOrders
1483
+ * @description fetch all unfilled currently open orders
1484
+ * @see https://coins-docs.github.io/rest-api/#current-open-orders-user_data
1485
+ * @param {string} symbol unified market symbol
1486
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1487
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
1488
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1489
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1490
+ */
1491
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1492
+ await this.loadMarkets();
1493
+ let market = undefined;
1494
+ const request = {};
1495
+ if (symbol !== undefined) {
1496
+ market = this.market(symbol);
1497
+ request['symbol'] = market['id'];
1498
+ }
1499
+ const response = await this.privateGetOpenapiV1OpenOrders(this.extend(request, params));
1500
+ return this.parseOrders(response, market, since, limit);
1501
+ }
1502
+ /**
1503
+ * @method
1504
+ * @name coinsph#fetchClosedOrders
1505
+ * @description fetches information on multiple closed orders made by the user
1506
+ * @see https://coins-docs.github.io/rest-api/#history-orders-user_data
1507
+ * @param {string} symbol unified market symbol of the market orders were made in
1508
+ * @param {int} [since] the earliest time in ms to fetch orders for
1509
+ * @param {int} [limit] the maximum number of order structures to retrieve (default 500, max 1000)
1510
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1511
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1512
+ */
1513
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1514
+ if (symbol === undefined) {
1515
+ throw new ArgumentsRequired(this.id + ' fetchClosedOrders() requires a symbol argument');
1516
+ }
1517
+ await this.loadMarkets();
1518
+ const market = this.market(symbol);
1519
+ const request = {
1520
+ 'symbol': market['id'],
1521
+ };
1522
+ if (since !== undefined) {
1523
+ request['startTime'] = since;
1524
+ // since work properly only when it is "younger" than last 'limit' order
1525
+ request['limit'] = 1000;
1526
+ }
1527
+ else if (limit !== undefined) {
1528
+ request['limit'] = limit;
1529
+ }
1530
+ const response = await this.privateGetOpenapiV1HistoryOrders(this.extend(request, params));
1531
+ return this.parseOrders(response, market, since, limit);
1532
+ }
1533
+ /**
1534
+ * @method
1535
+ * @name coinsph#cancelOrder
1536
+ * @description cancels an open order
1537
+ * @see https://coins-docs.github.io/rest-api/#cancel-order-trade
1538
+ * @param {string} id order id
1539
+ * @param {string} symbol not used by coinsph cancelOrder ()
1540
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1541
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1542
+ */
1543
+ async cancelOrder(id, symbol = undefined, params = {}) {
1544
+ await this.loadMarkets();
1545
+ const request = {};
1546
+ const clientOrderId = this.safeValue2(params, 'origClientOrderId', 'clientOrderId');
1547
+ if (clientOrderId !== undefined) {
1548
+ request['origClientOrderId'] = clientOrderId;
1549
+ }
1550
+ else {
1551
+ request['orderId'] = id;
1552
+ }
1553
+ params = this.omit(params, ['clientOrderId', 'origClientOrderId']);
1554
+ const response = await this.privateDeleteOpenapiV1Order(this.extend(request, params));
1555
+ return this.parseOrder(response);
1556
+ }
1557
+ /**
1558
+ * @method
1559
+ * @name coinsph#cancelAllOrders
1560
+ * @description cancel open orders of market
1561
+ * @see https://coins-docs.github.io/rest-api/#cancel-all-open-orders-on-a-symbol-trade
1562
+ * @param {string} symbol unified market symbol
1563
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1564
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1565
+ */
1566
+ async cancelAllOrders(symbol = undefined, params = {}) {
1567
+ if (symbol === undefined) {
1568
+ throw new ArgumentsRequired(this.id + ' cancelAllOrders() requires a symbol argument');
1569
+ }
1570
+ await this.loadMarkets();
1571
+ let market = undefined;
1572
+ const request = {};
1573
+ if (symbol !== undefined) {
1574
+ market = this.market(symbol);
1575
+ request['symbol'] = market['id'];
1576
+ }
1577
+ const response = await this.privateDeleteOpenapiV1OpenOrders(this.extend(request, params));
1578
+ return this.parseOrders(response, market);
1579
+ }
1580
+ parseOrder(order, market = undefined) {
1581
+ //
1582
+ // createOrder POST /openapi/v1/order
1583
+ // {
1584
+ // "symbol": "ETHUSDT",
1585
+ // "orderId": 1375445991893797391,
1586
+ // "clientOrderId": "1375445991893799115",
1587
+ // "transactTime": 1678701939513,
1588
+ // "price": "0",
1589
+ // "origQty": "0",
1590
+ // "executedQty": "0.001899",
1591
+ // "cummulativeQuoteQty": "2.99948949",
1592
+ // "status": "FILLED",
1593
+ // "timeInForce": "GTC",
1594
+ // "type": "MARKET",
1595
+ // "side": "BUY",
1596
+ // "stopPrice": "0",
1597
+ // "origQuoteOrderQty": "3",
1598
+ // "fills": [
1599
+ // {
1600
+ // "price": "1579.51",
1601
+ // "qty": "0.001899",
1602
+ // "commission": "0",
1603
+ // "commissionAsset": "ETH",
1604
+ // "tradeId":1375445992035598337
1605
+ // }
1606
+ // ]
1607
+ // }
1608
+ //
1609
+ // fetchOrder GET /openapi/v1/order
1610
+ // fetchOpenOrders GET /openapi/v1/openOrders
1611
+ // fetchClosedOrders GET /openapi/v1/historyOrders
1612
+ // cancelAllOrders DELETE /openapi/v1/openOrders
1613
+ // {
1614
+ // "symbol": "DOGEPHP",
1615
+ // "orderId":1375465375097982423,
1616
+ // "clientOrderId": "1375465375098001241",
1617
+ // "price": "0",
1618
+ // "origQty": "0",
1619
+ // "executedQty": "13",
1620
+ // "cummulativeQuoteQty": "49.621",
1621
+ // "status": "FILLED",
1622
+ // "timeInForce": "GTC",
1623
+ // "type": "MARKET",
1624
+ // "side": "BUY",
1625
+ // "stopPrice": "0",
1626
+ // "time":1678704250171,
1627
+ // "updateTime":1678704250256,
1628
+ // "isWorking":false,
1629
+ // "origQuoteOrderQty": "50"
1630
+ // }
1631
+ //
1632
+ // cancelOrder DELETE /openapi/v1/order
1633
+ // {
1634
+ // "symbol": "ETHPHP",
1635
+ // "orderId":1375609441915774332,
1636
+ // "clientOrderId": "1375609441915899557",
1637
+ // "price": "96000",
1638
+ // "origQty": "0.001",
1639
+ // "executedQty": "0",
1640
+ // "cummulativeQuoteQty": "0",
1641
+ // "status": "CANCELED",
1642
+ // "timeInForce": "GTC",
1643
+ // "type": "LIMIT",
1644
+ // "side": "SELL",
1645
+ // "stopPrice": "0",
1646
+ // "origQuoteOrderQty": "0"
1647
+ // }
1648
+ //
1649
+ const id = this.safeString(order, 'orderId');
1650
+ const marketId = this.safeString(order, 'symbol');
1651
+ market = this.safeMarket(marketId, market);
1652
+ const timestamp = this.safeInteger2(order, 'time', 'transactTime');
1653
+ const trades = this.safeValue(order, 'fills', undefined);
1654
+ let triggerPrice = this.safeString(order, 'stopPrice');
1655
+ if (Precise.stringEq(triggerPrice, '0')) {
1656
+ triggerPrice = undefined;
1657
+ }
1658
+ return this.safeOrder({
1659
+ 'id': id,
1660
+ 'clientOrderId': this.safeString(order, 'clientOrderId'),
1661
+ 'timestamp': timestamp,
1662
+ 'datetime': this.iso8601(timestamp),
1663
+ 'lastTradeTimestamp': undefined,
1664
+ 'status': this.parseOrderStatus(this.safeString(order, 'status')),
1665
+ 'symbol': market['symbol'],
1666
+ 'type': this.parseOrderType(this.safeString(order, 'type')),
1667
+ 'timeInForce': this.parseOrderTimeInForce(this.safeString(order, 'timeInForce')),
1668
+ 'side': this.parseOrderSide(this.safeString(order, 'side')),
1669
+ 'price': this.safeString(order, 'price'),
1670
+ 'triggerPrice': triggerPrice,
1671
+ 'average': undefined,
1672
+ 'amount': this.safeString(order, 'origQty'),
1673
+ 'cost': this.safeString(order, 'cummulativeQuoteQty'),
1674
+ 'filled': this.safeString(order, 'executedQty'),
1675
+ 'remaining': undefined,
1676
+ 'fee': undefined,
1677
+ 'fees': undefined,
1678
+ 'trades': trades,
1679
+ 'info': order,
1680
+ }, market);
1681
+ }
1682
+ parseOrderSide(status) {
1683
+ const statuses = {
1684
+ 'BUY': 'buy',
1685
+ 'SELL': 'sell',
1686
+ };
1687
+ return this.safeString(statuses, status, status);
1688
+ }
1689
+ encodeOrderSide(status) {
1690
+ const statuses = {
1691
+ 'buy': 'BUY',
1692
+ 'sell': 'SELL',
1693
+ };
1694
+ return this.safeString(statuses, status, status);
1695
+ }
1696
+ parseOrderType(status) {
1697
+ const statuses = {
1698
+ 'MARKET': 'market',
1699
+ 'LIMIT': 'limit',
1700
+ 'LIMIT_MAKER': 'limit',
1701
+ 'STOP_LOSS': 'market',
1702
+ 'STOP_LOSS_LIMIT': 'limit',
1703
+ 'TAKE_PROFIT': 'market',
1704
+ 'TAKE_PROFIT_LIMIT': 'limit',
1705
+ };
1706
+ return this.safeString(statuses, status, status);
1707
+ }
1708
+ encodeOrderType(status) {
1709
+ const statuses = {
1710
+ 'market': 'MARKET',
1711
+ 'limit': 'LIMIT',
1712
+ 'limit_maker': 'LIMIT_MAKER',
1713
+ 'stop_loss': 'STOP_LOSS',
1714
+ 'stop_loss_limit': 'STOP_LOSS_LIMIT',
1715
+ 'take_profit': 'TAKE_PROFIT',
1716
+ 'take_profit_limit': 'TAKE_PROFIT_LIMIT',
1717
+ };
1718
+ return this.safeString(statuses, status, status);
1719
+ }
1720
+ parseOrderStatus(status) {
1721
+ const statuses = {
1722
+ 'NEW': 'open',
1723
+ 'FILLED': 'closed',
1724
+ 'CANCELED': 'canceled',
1725
+ 'PARTIALLY_FILLED': 'open',
1726
+ 'PARTIALLY_CANCELED': 'canceled',
1727
+ 'REJECTED': 'rejected',
1728
+ };
1729
+ return this.safeString(statuses, status, status);
1730
+ }
1731
+ parseOrderTimeInForce(status) {
1732
+ const statuses = {
1733
+ 'GTC': 'GTC',
1734
+ 'FOK': 'FOK',
1735
+ 'IOC': 'IOC',
1736
+ };
1737
+ return this.safeString(statuses, status, status);
1738
+ }
1739
+ /**
1740
+ * @method
1741
+ * @name coinsph#fetchTradingFee
1742
+ * @description fetch the trading fees for a market
1743
+ * @see https://coins-docs.github.io/rest-api/#trade-fee-user_data
1744
+ * @param {string} symbol unified market symbol
1745
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1746
+ * @returns {object} a [fee structure]{@link https://docs.ccxt.com/#/?id=fee-structure}
1747
+ */
1748
+ async fetchTradingFee(symbol, params = {}) {
1749
+ await this.loadMarkets();
1750
+ const market = this.market(symbol);
1751
+ const request = {
1752
+ 'symbol': market['id'],
1753
+ };
1754
+ const response = await this.privateGetOpenapiV1AssetTradeFee(this.extend(request, params));
1755
+ //
1756
+ // [
1757
+ // {
1758
+ // "symbol": "ETHUSDT",
1759
+ // "makerCommission": "0.0025",
1760
+ // "takerCommission": "0.003"
1761
+ // }
1762
+ // ]
1763
+ //
1764
+ const tradingFee = this.safeDict(response, 0, {});
1765
+ return this.parseTradingFee(tradingFee, market);
1766
+ }
1767
+ /**
1768
+ * @method
1769
+ * @name coinsph#fetchTradingFees
1770
+ * @description fetch the trading fees for multiple markets
1771
+ * @see https://coins-docs.github.io/rest-api/#trade-fee-user_data
1772
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1773
+ * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
1774
+ */
1775
+ async fetchTradingFees(params = {}) {
1776
+ await this.loadMarkets();
1777
+ const response = await this.privateGetOpenapiV1AssetTradeFee(params);
1778
+ //
1779
+ // [
1780
+ // {
1781
+ // "symbol": "ETHPHP",
1782
+ // "makerCommission": "0.0025",
1783
+ // "takerCommission": "0.003"
1784
+ // },
1785
+ // {
1786
+ // "symbol": "UNIPHP",
1787
+ // "makerCommission": "0.0025",
1788
+ // "takerCommission": "0.003"
1789
+ // },
1790
+ // ]
1791
+ //
1792
+ const result = {};
1793
+ for (let i = 0; i < response.length; i++) {
1794
+ const fee = this.parseTradingFee(response[i]);
1795
+ const symbol = fee['symbol'];
1796
+ result[symbol] = fee;
1797
+ }
1798
+ return result;
1799
+ }
1800
+ parseTradingFee(fee, market = undefined) {
1801
+ //
1802
+ // {
1803
+ // "symbol": "ETHUSDT",
1804
+ // "makerCommission": "0.0025",
1805
+ // "takerCommission": "0.003"
1806
+ // }
1807
+ //
1808
+ const marketId = this.safeString(fee, 'symbol');
1809
+ market = this.safeMarket(marketId, market);
1810
+ const symbol = market['symbol'];
1811
+ return {
1812
+ 'info': fee,
1813
+ 'symbol': symbol,
1814
+ 'maker': this.safeNumber(fee, 'makerCommission'),
1815
+ 'taker': this.safeNumber(fee, 'takerCommission'),
1816
+ 'percentage': undefined,
1817
+ 'tierBased': undefined,
1818
+ };
1819
+ }
1820
+ /**
1821
+ * @method
1822
+ * @name coinsph#withdraw
1823
+ * @description make a withdrawal to coins_ph account
1824
+ * @see https://coins-docs.github.io/rest-api/#withdrawuser_data
1825
+ * @param {string} code unified currency code
1826
+ * @param {float} amount the amount to withdraw
1827
+ * @param {string} address not used by coinsph withdraw ()
1828
+ * @param {string} tag
1829
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1830
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1831
+ */
1832
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
1833
+ const options = this.safeValue(this.options, 'withdraw');
1834
+ const warning = this.safeBool(options, 'warning', true);
1835
+ if (warning) {
1836
+ throw new InvalidAddress(this.id + " withdraw() makes a withdrawals only to coins_ph account, add .options['withdraw']['warning'] = false to make a withdrawal to your coins_ph account");
1837
+ }
1838
+ const networkCode = this.safeString(params, 'network');
1839
+ const networkId = this.networkCodeToId(networkCode, code);
1840
+ if (networkId === undefined) {
1841
+ throw new BadRequest(this.id + ' withdraw() require network parameter');
1842
+ }
1843
+ await this.loadMarkets();
1844
+ const currency = this.currency(code);
1845
+ const request = {
1846
+ 'coin': currency['id'],
1847
+ 'amount': this.numberToString(amount),
1848
+ 'network': networkId,
1849
+ 'address': address,
1850
+ };
1851
+ if (tag !== undefined) {
1852
+ request['withdrawOrderId'] = tag;
1853
+ }
1854
+ params = this.omit(params, 'network');
1855
+ const response = await this.privatePostOpenapiWalletV1WithdrawApply(this.extend(request, params));
1856
+ return this.parseTransaction(response, currency);
1857
+ }
1858
+ /**
1859
+ * @method
1860
+ * @name coinsph#fetchDeposits
1861
+ * @description fetch all deposits made to an account
1862
+ * @see https://coins-docs.github.io/rest-api/#deposit-history-user_data
1863
+ * @param {string} code unified currency code
1864
+ * @param {int} [since] the earliest time in ms to fetch deposits for
1865
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
1866
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1867
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1868
+ */
1869
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1870
+ // todo: returns an empty array - find out why
1871
+ await this.loadMarkets();
1872
+ let currency = undefined;
1873
+ const request = {};
1874
+ if (code !== undefined) {
1875
+ currency = this.currency(code);
1876
+ request['coin'] = currency['id'];
1877
+ }
1878
+ if (since !== undefined) {
1879
+ request['startTime'] = since;
1880
+ }
1881
+ if (limit !== undefined) {
1882
+ request['limit'] = limit;
1883
+ }
1884
+ const response = await this.privateGetOpenapiWalletV1DepositHistory(this.extend(request, params));
1885
+ //
1886
+ // [
1887
+ // {
1888
+ // "id": "d_769800519366885376",
1889
+ // "amount": "0.001",
1890
+ // "coin": "BNB",
1891
+ // "network": "BNB",
1892
+ // "status": 0,
1893
+ // "address": "bnb136ns6lfw4zs5hg4n85vdthaad7hq5m4gtkgf23",
1894
+ // "addressTag": "101764890",
1895
+ // "txId": "98A3EA560C6B3336D348B6C83F0F95ECE4F1F5919E94BD006E5BF3BF264FACFC",
1896
+ // "insertTime": 1661493146000,
1897
+ // "confirmNo": 10,
1898
+ // },
1899
+ // {
1900
+ // "id": "d_769754833590042625",
1901
+ // "amount":"0.5",
1902
+ // "coin":"IOTA",
1903
+ // "network":"IOTA",
1904
+ // "status":1,
1905
+ // "address":"SIZ9VLMHWATXKV99LH99CIGFJFUMLEHGWVZVNNZXRJJVWBPHYWPPBOSDORZ9EQSHCZAMPVAPGFYQAUUV9DROOXJLNW",
1906
+ // "addressTag":"",
1907
+ // "txId":"ESBFVQUTPIWQNJSPXFNHNYHSQNTGKRVKPRABQWTAXCDWOAKDKYWPTVG9BGXNVNKTLEJGESAVXIKIZ9999",
1908
+ // "insertTime":1599620082000,
1909
+ // "confirmNo": 20,
1910
+ // }
1911
+ // ]
1912
+ //
1913
+ return this.parseTransactions(response, currency, since, limit);
1914
+ }
1915
+ /**
1916
+ * @method
1917
+ * @name coinsph#fetchWithdrawals
1918
+ * @description fetch all withdrawals made from an account
1919
+ * @see https://coins-docs.github.io/rest-api/#withdraw-history-user_data
1920
+ * @param {string} code unified currency code
1921
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
1922
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1923
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1924
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1925
+ */
1926
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1927
+ // todo: returns an empty array - find out why
1928
+ await this.loadMarkets();
1929
+ let currency = undefined;
1930
+ const request = {};
1931
+ if (code !== undefined) {
1932
+ currency = this.currency(code);
1933
+ request['coin'] = currency['id'];
1934
+ }
1935
+ if (since !== undefined) {
1936
+ request['startTime'] = since;
1937
+ }
1938
+ if (limit !== undefined) {
1939
+ request['limit'] = limit;
1940
+ }
1941
+ const response = await this.privateGetOpenapiWalletV1WithdrawHistory(this.extend(request, params));
1942
+ //
1943
+ // [
1944
+ // {
1945
+ // "id": "459890698271244288",
1946
+ // "amount": "0.01",
1947
+ // "transactionFee": "0",
1948
+ // "coin": "ETH",
1949
+ // "status": 1,
1950
+ // "address": "0x386AE30AE2dA293987B5d51ddD03AEb70b21001F",
1951
+ // "addressTag": "",
1952
+ // "txId": "0x4ae2fed36a90aada978fc31c38488e8b60d7435cfe0b4daed842456b4771fcf7",
1953
+ // "applyTime": 1673601139000,
1954
+ // "network": "ETH",
1955
+ // "withdrawOrderId": "thomas123",
1956
+ // "info": "",
1957
+ // "confirmNo": 100
1958
+ // },
1959
+ // {
1960
+ // "id": "451899190746456064",
1961
+ // "amount": "0.00063",
1962
+ // "transactionFee": "0.00037",
1963
+ // "coin": "ETH",
1964
+ // "status": 1,
1965
+ // "address": "0x386AE30AE2dA293987B5d51ddD03AEb70b21001F",
1966
+ // "addressTag": "",
1967
+ // "txId": "0x62690ca4f9d6a8868c258e2ce613805af614d9354dda7b39779c57b2e4da0260",
1968
+ // "applyTime": 1671695815000,
1969
+ // "network": "ETH",
1970
+ // "withdrawOrderId": "",
1971
+ // "info": "",
1972
+ // "confirmNo": 100
1973
+ // }
1974
+ // ]
1975
+ //
1976
+ return this.parseTransactions(response, currency, since, limit);
1977
+ }
1978
+ parseTransaction(transaction, currency = undefined) {
1979
+ //
1980
+ // fetchDeposits
1981
+ // {
1982
+ // "coin": "PHP",
1983
+ // "address": "Internal Transfer",
1984
+ // "addressTag": "Internal Transfer",
1985
+ // "amount": "0.02",
1986
+ // "id": "31312321312312312312322",
1987
+ // "network": "Internal",
1988
+ // "transferType": "0",
1989
+ // "status": 3,
1990
+ // "confirmTimes": "",
1991
+ // "unlockConfirm": "",
1992
+ // "txId": "Internal Transfer",
1993
+ // "insertTime": 1657623798000,
1994
+ // "depositOrderId": "the deposit id which created by client"
1995
+ // }
1996
+ //
1997
+ // fetchWithdrawals
1998
+ // {
1999
+ // "coin": "BTC",
2000
+ // "address": "Internal Transfer",
2001
+ // "amount": "0.1",
2002
+ // "id": "1201515362324421632",
2003
+ // "withdrawOrderId": null,
2004
+ // "network": "Internal",
2005
+ // "transferType": "0",
2006
+ // "status": 0,
2007
+ // "transactionFee": "0",
2008
+ // "confirmNo": 0,
2009
+ // "info": "{}",
2010
+ // "txId": "Internal Transfer",
2011
+ // "applyTime": 1657967792000
2012
+ // }
2013
+ //
2014
+ // todo: this is in progress
2015
+ const id = this.safeString(transaction, 'id');
2016
+ const address = this.safeString(transaction, 'address');
2017
+ let tag = this.safeString(transaction, 'addressTag');
2018
+ if (tag !== undefined) {
2019
+ if (tag.length < 1) {
2020
+ tag = undefined;
2021
+ }
2022
+ }
2023
+ const txid = this.safeString(transaction, 'txId');
2024
+ const currencyId = this.safeString(transaction, 'coin');
2025
+ const code = this.safeCurrencyCode(currencyId, currency);
2026
+ let timestamp = undefined;
2027
+ timestamp = this.safeInteger2(transaction, 'insertTime', 'applyTime');
2028
+ const updated = undefined;
2029
+ let type = undefined;
2030
+ const withdrawOrderId = this.safeString(transaction, 'withdrawOrderId');
2031
+ const depositOrderId = this.safeString(transaction, 'depositOrderId');
2032
+ if (withdrawOrderId !== undefined) {
2033
+ type = 'withdrawal';
2034
+ }
2035
+ else if (depositOrderId !== undefined) {
2036
+ type = 'deposit';
2037
+ }
2038
+ const status = this.parseTransactionStatus(this.safeString(transaction, 'status'));
2039
+ const amount = this.safeNumber(transaction, 'amount');
2040
+ const feeCost = this.safeNumber(transaction, 'transactionFee');
2041
+ let fee = undefined;
2042
+ if (feeCost !== undefined) {
2043
+ fee = { 'currency': code, 'cost': feeCost };
2044
+ }
2045
+ const network = this.safeString(transaction, 'network');
2046
+ const internal = network === 'Internal';
2047
+ return {
2048
+ 'info': transaction,
2049
+ 'id': id,
2050
+ 'txid': txid,
2051
+ 'timestamp': timestamp,
2052
+ 'datetime': this.iso8601(timestamp),
2053
+ 'network': network,
2054
+ 'address': address,
2055
+ 'addressTo': address,
2056
+ 'addressFrom': undefined,
2057
+ 'tag': tag,
2058
+ 'tagTo': tag,
2059
+ 'tagFrom': undefined,
2060
+ 'type': type,
2061
+ 'amount': amount,
2062
+ 'currency': code,
2063
+ 'status': status,
2064
+ 'updated': updated,
2065
+ 'internal': internal,
2066
+ 'comment': undefined,
2067
+ 'fee': fee,
2068
+ };
2069
+ }
2070
+ parseTransactionStatus(status) {
2071
+ const statuses = {
2072
+ '0': 'pending',
2073
+ '1': 'ok',
2074
+ '2': 'failed',
2075
+ '3': 'pending',
2076
+ };
2077
+ return this.safeString(statuses, status, status);
2078
+ }
2079
+ /**
2080
+ * @method
2081
+ * @name coinsph#fetchDepositAddress
2082
+ * @description fetch the deposit address for a currency associated with this account
2083
+ * @see https://coins-docs.github.io/rest-api/#deposit-address-user_data
2084
+ * @param {string} code unified currency code
2085
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2086
+ * @param {string} [params.network] network for fetch deposit address
2087
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2088
+ */
2089
+ async fetchDepositAddress(code, params = {}) {
2090
+ const networkCode = this.safeString(params, 'network');
2091
+ const networkId = this.networkCodeToId(networkCode, code);
2092
+ if (networkId === undefined) {
2093
+ throw new BadRequest(this.id + ' fetchDepositAddress() require network parameter');
2094
+ }
2095
+ await this.loadMarkets();
2096
+ const currency = this.currency(code);
2097
+ const request = {
2098
+ 'coin': currency['id'],
2099
+ 'network': networkId,
2100
+ };
2101
+ params = this.omit(params, 'network');
2102
+ const response = await this.privateGetOpenapiWalletV1DepositAddress(this.extend(request, params));
2103
+ //
2104
+ // {
2105
+ // "coin": "ETH",
2106
+ // "address": "0xfe98628173830bf79c59f04585ce41f7de168784",
2107
+ // "addressTag": ""
2108
+ // }
2109
+ //
2110
+ return this.parseDepositAddress(response, currency);
2111
+ }
2112
+ parseDepositAddress(depositAddress, currency = undefined) {
2113
+ //
2114
+ // {
2115
+ // "coin": "ETH",
2116
+ // "address": "0xfe98628173830bf79c59f04585ce41f7de168784",
2117
+ // "addressTag": ""
2118
+ // }
2119
+ //
2120
+ const currencyId = this.safeString(depositAddress, 'coin');
2121
+ const parsedCurrency = this.safeCurrencyCode(currencyId, currency);
2122
+ return {
2123
+ 'info': depositAddress,
2124
+ 'currency': parsedCurrency,
2125
+ 'network': null,
2126
+ 'address': this.safeString(depositAddress, 'address'),
2127
+ 'tag': this.safeString(depositAddress, 'addressTag'),
2128
+ };
2129
+ }
2130
+ urlEncodeQuery(query = {}) {
2131
+ let encodedArrayParams = '';
2132
+ const keys = Object.keys(query);
2133
+ for (let i = 0; i < keys.length; i++) {
2134
+ const key = keys[i];
2135
+ if (Array.isArray(query[key])) {
2136
+ if (i !== 0) {
2137
+ encodedArrayParams += '&';
2138
+ }
2139
+ const innerArray = query[key];
2140
+ query = this.omit(query, key);
2141
+ const encodedArrayParam = this.parseArrayParam(innerArray, key);
2142
+ encodedArrayParams += encodedArrayParam;
2143
+ }
2144
+ }
2145
+ const encodedQuery = this.urlencode(query);
2146
+ if (encodedQuery.length !== 0) {
2147
+ return encodedQuery + '&' + encodedArrayParams;
2148
+ }
2149
+ else {
2150
+ return encodedArrayParams;
2151
+ }
2152
+ }
2153
+ parseArrayParam(array, key) {
2154
+ let stringifiedArray = this.json(array);
2155
+ stringifiedArray = stringifiedArray.replace('[', '%5B');
2156
+ stringifiedArray = stringifiedArray.replace(']', '%5D');
2157
+ const urlEncodedParam = key + '=' + stringifiedArray;
2158
+ return urlEncodedParam;
2159
+ }
2160
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2161
+ let url = this.urls['api'][api];
2162
+ let query = this.omit(params, this.extractParams(path));
2163
+ const endpoint = this.implodeParams(path, params);
2164
+ url = url + '/' + endpoint;
2165
+ if (api === 'private') {
2166
+ this.checkRequiredCredentials();
2167
+ query['timestamp'] = this.milliseconds();
2168
+ const recvWindow = this.safeInteger(query, 'recvWindow');
2169
+ if (recvWindow === undefined) {
2170
+ const defaultRecvWindow = this.safeInteger(this.options, 'recvWindow');
2171
+ if (defaultRecvWindow !== undefined) {
2172
+ query['recvWindow'] = defaultRecvWindow;
2173
+ }
2174
+ }
2175
+ query = this.urlEncodeQuery(query);
2176
+ const signature = this.hmac(this.encode(query), this.encode(this.secret), sha256);
2177
+ url = url + '?' + query + '&signature=' + signature;
2178
+ headers = {
2179
+ 'X-COINS-APIKEY': this.apiKey,
2180
+ };
2181
+ }
2182
+ else {
2183
+ query = this.urlEncodeQuery(query);
2184
+ if (query.length !== 0) {
2185
+ url += '?' + query;
2186
+ }
2187
+ }
2188
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2189
+ }
2190
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2191
+ if (response === undefined) {
2192
+ return undefined;
2193
+ }
2194
+ const responseCode = this.safeString(response, 'code', undefined);
2195
+ if ((responseCode !== undefined) && (responseCode !== '200') && (responseCode !== '0')) {
2196
+ const feedback = this.id + ' ' + body;
2197
+ this.throwBroadlyMatchedException(this.exceptions['broad'], body, feedback);
2198
+ this.throwExactlyMatchedException(this.exceptions['exact'], responseCode, feedback);
2199
+ throw new ExchangeError(feedback);
2200
+ }
2201
+ return undefined;
2202
+ }
2203
+ }