ccxt-ir 4.9.32 → 4.11.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 +7 -1
  4. package/dist/cjs/package.json +1 -1
  5. package/dist/cjs/src/abstract/asretether.js +11 -0
  6. package/dist/cjs/src/abstract/bidarz.js +11 -0
  7. package/dist/cjs/src/asretether.js +325 -0
  8. package/dist/cjs/src/bidarz.js +337 -0
  9. package/dist/cjs/src/bit24.js +4 -3
  10. package/dist/cjs/src/raastin.js +144 -16
  11. package/js/ccxt.d.ts +8 -2
  12. package/js/ccxt.js +6 -2
  13. package/js/src/abstract/asretether.d.ts +8 -0
  14. package/js/src/abstract/asretether.js +11 -0
  15. package/js/src/abstract/bidarz.d.ts +9 -0
  16. package/js/src/abstract/bidarz.js +11 -0
  17. package/js/src/abstract/raastin.d.ts +1 -0
  18. package/js/src/asretether.d.ts +21 -0
  19. package/js/src/asretether.js +324 -0
  20. package/js/src/bidarz.d.ts +22 -0
  21. package/js/src/bidarz.js +336 -0
  22. package/js/src/bit24.js +4 -3
  23. package/js/src/raastin.d.ts +2 -0
  24. package/js/src/raastin.js +144 -16
  25. package/js/src/src/abantether.d.ts +21 -0
  26. package/js/src/src/abantether.js +353 -0
  27. package/js/src/src/abstract/abantether.d.ts +8 -0
  28. package/js/src/src/abstract/abantether.js +11 -0
  29. package/js/src/src/abstract/afratether.d.ts +9 -0
  30. package/js/src/src/abstract/afratether.js +11 -0
  31. package/js/src/src/abstract/alpaca.d.ts +77 -0
  32. package/js/src/src/abstract/alpaca.js +11 -0
  33. package/js/src/src/abstract/apex.d.ts +34 -0
  34. package/js/src/src/abstract/apex.js +11 -0
  35. package/js/src/src/abstract/arzinja.d.ts +8 -0
  36. package/js/src/src/abstract/arzinja.js +11 -0
  37. package/js/src/src/abstract/arzplus.d.ts +11 -0
  38. package/js/src/src/abstract/arzplus.js +11 -0
  39. package/js/src/src/abstract/ascendex.d.ts +80 -0
  40. package/js/src/src/abstract/ascendex.js +11 -0
  41. package/js/src/src/abstract/asretether.d.ts +8 -0
  42. package/js/src/src/abstract/asretether.js +11 -0
  43. package/js/src/src/abstract/bidarz.d.ts +9 -0
  44. package/js/src/src/abstract/bidarz.js +11 -0
  45. package/js/src/src/abstract/bigone.d.ts +48 -0
  46. package/js/src/src/abstract/bigone.js +11 -0
  47. package/js/src/src/abstract/binance.d.ts +773 -0
  48. package/js/src/src/abstract/binance.js +11 -0
  49. package/js/src/src/abstract/bingx.d.ts +165 -0
  50. package/js/src/src/abstract/bingx.js +11 -0
  51. package/js/src/src/abstract/bit24.d.ts +9 -0
  52. package/js/src/src/abstract/bit24.js +11 -0
  53. package/js/src/src/abstract/bit2c.d.ts +30 -0
  54. package/js/src/src/abstract/bit2c.js +11 -0
  55. package/js/src/src/abstract/bitbank.d.ts +35 -0
  56. package/js/src/src/abstract/bitbank.js +11 -0
  57. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  58. package/js/src/src/abstract/bitbarg.js +11 -0
  59. package/js/src/src/abstract/bitbns.d.ts +43 -0
  60. package/js/src/src/abstract/bitbns.js +11 -0
  61. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  62. package/js/src/src/abstract/bitfinex.js +11 -0
  63. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  64. package/js/src/src/abstract/bitflyer.js +11 -0
  65. package/js/src/src/abstract/bitget.d.ts +578 -0
  66. package/js/src/src/abstract/bitget.js +11 -0
  67. package/js/src/src/abstract/bithumb.d.ts +35 -0
  68. package/js/src/src/abstract/bithumb.js +11 -0
  69. package/js/src/src/abstract/bitimen.d.ts +10 -0
  70. package/js/src/src/abstract/bitimen.js +11 -0
  71. package/js/src/src/abstract/bitir.d.ts +10 -0
  72. package/js/src/src/abstract/bitir.js +11 -0
  73. package/js/src/src/abstract/bitmart.d.ts +120 -0
  74. package/js/src/src/abstract/bitmart.js +11 -0
  75. package/js/src/src/abstract/bitmex.d.ts +100 -0
  76. package/js/src/src/abstract/bitmex.js +11 -0
  77. package/js/src/src/abstract/bitopro.d.ts +33 -0
  78. package/js/src/src/abstract/bitopro.js +11 -0
  79. package/js/src/src/abstract/bitpin.d.ts +11 -0
  80. package/js/src/src/abstract/bitpin.js +11 -0
  81. package/js/src/src/abstract/bitrue.d.ts +75 -0
  82. package/js/src/src/abstract/bitrue.js +11 -0
  83. package/js/src/src/abstract/bitso.d.ts +46 -0
  84. package/js/src/src/abstract/bitso.js +11 -0
  85. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  86. package/js/src/src/abstract/bitstamp.js +11 -0
  87. package/js/src/src/abstract/bitteam.d.ts +32 -0
  88. package/js/src/src/abstract/bitteam.js +11 -0
  89. package/js/src/src/abstract/bittrade.d.ts +117 -0
  90. package/js/src/src/abstract/bittrade.js +11 -0
  91. package/js/src/src/abstract/bitunix.d.ts +9 -0
  92. package/js/src/src/abstract/bitunix.js +11 -0
  93. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  94. package/js/src/src/abstract/bitvavo.js +11 -0
  95. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  96. package/js/src/src/abstract/blockchaincom.js +11 -0
  97. package/js/src/src/abstract/blofin.d.ts +70 -0
  98. package/js/src/src/abstract/blofin.js +11 -0
  99. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  100. package/js/src/src/abstract/btcalpha.js +11 -0
  101. package/js/src/src/abstract/btcbox.d.ts +18 -0
  102. package/js/src/src/abstract/btcbox.js +11 -0
  103. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  104. package/js/src/src/abstract/btcmarkets.js +11 -0
  105. package/js/src/src/abstract/btcturk.d.ts +23 -0
  106. package/js/src/src/abstract/btcturk.js +11 -0
  107. package/js/src/src/abstract/bybit.d.ts +316 -0
  108. package/js/src/src/abstract/bybit.js +11 -0
  109. package/js/src/src/abstract/bydfi.d.ts +11 -0
  110. package/js/src/src/abstract/bydfi.js +11 -0
  111. package/js/src/src/abstract/cafearz.d.ts +8 -0
  112. package/js/src/src/abstract/cafearz.js +11 -0
  113. package/js/src/src/abstract/cex.d.ts +35 -0
  114. package/js/src/src/abstract/cex.js +11 -0
  115. package/js/src/src/abstract/coinbase.d.ts +97 -0
  116. package/js/src/src/abstract/coinbase.js +11 -0
  117. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  118. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  119. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  120. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  121. package/js/src/src/abstract/coincatch.d.ts +97 -0
  122. package/js/src/src/abstract/coincatch.js +11 -0
  123. package/js/src/src/abstract/coincheck.d.ts +36 -0
  124. package/js/src/src/abstract/coincheck.js +11 -0
  125. package/js/src/src/abstract/coinex.d.ts +240 -0
  126. package/js/src/src/abstract/coinex.js +11 -0
  127. package/js/src/src/abstract/coinmate.d.ts +65 -0
  128. package/js/src/src/abstract/coinmate.js +11 -0
  129. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  130. package/js/src/src/abstract/coinmetro.js +11 -0
  131. package/js/src/src/abstract/coinone.d.ts +70 -0
  132. package/js/src/src/abstract/coinone.js +11 -0
  133. package/js/src/src/abstract/coinsph.d.ts +57 -0
  134. package/js/src/src/abstract/coinsph.js +11 -0
  135. package/js/src/src/abstract/coinspot.d.ts +31 -0
  136. package/js/src/src/abstract/coinspot.js +11 -0
  137. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  138. package/js/src/src/abstract/cryptocom.js +11 -0
  139. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  140. package/js/src/src/abstract/cryptomus.js +11 -0
  141. package/js/src/src/abstract/defx.d.ts +72 -0
  142. package/js/src/src/abstract/defx.js +11 -0
  143. package/js/src/src/abstract/delta.d.ts +53 -0
  144. package/js/src/src/abstract/delta.js +11 -0
  145. package/js/src/src/abstract/deribit.d.ts +129 -0
  146. package/js/src/src/abstract/deribit.js +11 -0
  147. package/js/src/src/abstract/derive.d.ts +120 -0
  148. package/js/src/src/abstract/derive.js +11 -0
  149. package/js/src/src/abstract/digifinex.d.ts +95 -0
  150. package/js/src/src/abstract/digifinex.js +11 -0
  151. package/js/src/src/abstract/ellipx.d.ts +28 -0
  152. package/js/src/src/abstract/ellipx.js +11 -0
  153. package/js/src/src/abstract/eterex.d.ts +8 -0
  154. package/js/src/src/abstract/eterex.js +11 -0
  155. package/js/src/src/abstract/excoino.d.ts +10 -0
  156. package/js/src/src/abstract/excoino.js +11 -0
  157. package/js/src/src/abstract/exir.d.ts +11 -0
  158. package/js/src/src/abstract/exir.js +11 -0
  159. package/js/src/src/abstract/exmo.d.ts +58 -0
  160. package/js/src/src/abstract/exmo.js +11 -0
  161. package/js/src/src/abstract/exnovin.d.ts +9 -0
  162. package/js/src/src/abstract/exnovin.js +11 -0
  163. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  164. package/js/src/src/abstract/farhadexchange.js +11 -0
  165. package/js/src/src/abstract/foxbit.d.ts +29 -0
  166. package/js/src/src/abstract/foxbit.js +11 -0
  167. package/js/src/src/abstract/gate.d.ts +287 -0
  168. package/js/src/src/abstract/gate.js +11 -0
  169. package/js/src/src/abstract/gemini.d.ts +62 -0
  170. package/js/src/src/abstract/gemini.js +11 -0
  171. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  172. package/js/src/src/abstract/hamtapay.js +11 -0
  173. package/js/src/src/abstract/hashkey.d.ts +70 -0
  174. package/js/src/src/abstract/hashkey.js +11 -0
  175. package/js/src/src/abstract/hibachi.d.ts +29 -0
  176. package/js/src/src/abstract/hibachi.js +11 -0
  177. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  178. package/js/src/src/abstract/hitbtc.js +11 -0
  179. package/js/src/src/abstract/hitobit.d.ts +11 -0
  180. package/js/src/src/abstract/hitobit.js +11 -0
  181. package/js/src/src/abstract/hollaex.d.ts +36 -0
  182. package/js/src/src/abstract/hollaex.js +11 -0
  183. package/js/src/src/abstract/htx.d.ts +551 -0
  184. package/js/src/src/abstract/htx.js +11 -0
  185. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  186. package/js/src/src/abstract/hyperliquid.js +11 -0
  187. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  188. package/js/src/src/abstract/independentreserve.js +11 -0
  189. package/js/src/src/abstract/indodax.d.ts +29 -0
  190. package/js/src/src/abstract/indodax.js +11 -0
  191. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  192. package/js/src/src/abstract/iranexchange.js +11 -0
  193. package/js/src/src/abstract/jibitex.d.ts +10 -0
  194. package/js/src/src/abstract/jibitex.js +11 -0
  195. package/js/src/src/abstract/kcex.d.ts +10 -0
  196. package/js/src/src/abstract/kcex.js +11 -0
  197. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  198. package/js/src/src/abstract/kifpoolme.js +11 -0
  199. package/js/src/src/abstract/kraken.d.ts +61 -0
  200. package/js/src/src/abstract/kraken.js +11 -0
  201. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  202. package/js/src/src/abstract/krakenfutures.js +11 -0
  203. package/js/src/src/abstract/kucoin.d.ts +227 -0
  204. package/js/src/src/abstract/kucoin.js +11 -0
  205. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  206. package/js/src/src/abstract/kucoinfutures.js +11 -0
  207. package/js/src/src/abstract/latoken.d.ts +59 -0
  208. package/js/src/src/abstract/latoken.js +11 -0
  209. package/js/src/src/abstract/lbank.d.ts +65 -0
  210. package/js/src/src/abstract/lbank.js +11 -0
  211. package/js/src/src/abstract/luno.d.ts +41 -0
  212. package/js/src/src/abstract/luno.js +11 -0
  213. package/js/src/src/abstract/mazdax.d.ts +11 -0
  214. package/js/src/src/abstract/mazdax.js +11 -0
  215. package/js/src/src/abstract/mercado.d.ts +28 -0
  216. package/js/src/src/abstract/mercado.js +11 -0
  217. package/js/src/src/abstract/mexc.d.ts +183 -0
  218. package/js/src/src/abstract/mexc.js +11 -0
  219. package/js/src/src/abstract/modetrade.d.ts +122 -0
  220. package/js/src/src/abstract/modetrade.js +11 -0
  221. package/js/src/src/abstract/ndax.d.ts +100 -0
  222. package/js/src/src/abstract/ndax.js +11 -0
  223. package/js/src/src/abstract/nobitex.d.ts +10 -0
  224. package/js/src/src/abstract/nobitex.js +11 -0
  225. package/js/src/src/abstract/novadax.d.ts +32 -0
  226. package/js/src/src/abstract/novadax.js +11 -0
  227. package/js/src/src/abstract/oceanex.d.ts +30 -0
  228. package/js/src/src/abstract/oceanex.js +11 -0
  229. package/js/src/src/abstract/okcoin.d.ts +77 -0
  230. package/js/src/src/abstract/okcoin.js +11 -0
  231. package/js/src/src/abstract/okexchange.d.ts +11 -0
  232. package/js/src/src/abstract/okexchange.js +11 -0
  233. package/js/src/src/abstract/okx.d.ts +352 -0
  234. package/js/src/src/abstract/okx.js +11 -0
  235. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  236. package/js/src/src/abstract/ompfinex.js +11 -0
  237. package/js/src/src/abstract/onetrading.d.ts +26 -0
  238. package/js/src/src/abstract/onetrading.js +11 -0
  239. package/js/src/src/abstract/oxfun.d.ts +37 -0
  240. package/js/src/src/abstract/oxfun.js +11 -0
  241. package/js/src/src/abstract/p2b.d.ts +25 -0
  242. package/js/src/src/abstract/p2b.js +11 -0
  243. package/js/src/src/abstract/paradex.d.ts +66 -0
  244. package/js/src/src/abstract/paradex.js +11 -0
  245. package/js/src/src/abstract/paymium.d.ts +31 -0
  246. package/js/src/src/abstract/paymium.js +11 -0
  247. package/js/src/src/abstract/phemex.d.ts +120 -0
  248. package/js/src/src/abstract/phemex.js +11 -0
  249. package/js/src/src/abstract/pingi.d.ts +9 -0
  250. package/js/src/src/abstract/pingi.js +11 -0
  251. package/js/src/src/abstract/poloniex.d.ts +108 -0
  252. package/js/src/src/abstract/poloniex.js +11 -0
  253. package/js/src/src/abstract/pooleno.d.ts +8 -0
  254. package/js/src/src/abstract/pooleno.js +11 -0
  255. package/js/src/src/abstract/probit.d.ts +26 -0
  256. package/js/src/src/abstract/probit.js +11 -0
  257. package/js/src/src/abstract/raastin.d.ts +11 -0
  258. package/js/src/src/abstract/raastin.js +11 -0
  259. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  260. package/js/src/src/abstract/ramzinex.js +11 -0
  261. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  262. package/js/src/src/abstract/sarmayex.js +11 -0
  263. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  264. package/js/src/src/abstract/sarrafex.js +11 -0
  265. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  266. package/js/src/src/abstract/tabdeal.js +11 -0
  267. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  268. package/js/src/src/abstract/tehran_exchange.js +11 -0
  269. package/js/src/src/abstract/tetherland.d.ts +8 -0
  270. package/js/src/src/abstract/tetherland.js +11 -0
  271. package/js/src/src/abstract/timex.d.ts +65 -0
  272. package/js/src/src/abstract/timex.js +11 -0
  273. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  274. package/js/src/src/abstract/tokocrypto.js +11 -0
  275. package/js/src/src/abstract/toobit.d.ts +10 -0
  276. package/js/src/src/abstract/toobit.js +11 -0
  277. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  278. package/js/src/src/abstract/tradeogre.js +11 -0
  279. package/js/src/src/abstract/twox.d.ts +8 -0
  280. package/js/src/src/abstract/twox.js +11 -0
  281. package/js/src/src/abstract/ubitex.d.ts +10 -0
  282. package/js/src/src/abstract/ubitex.js +11 -0
  283. package/js/src/src/abstract/upbit.d.ts +58 -0
  284. package/js/src/src/abstract/upbit.js +11 -0
  285. package/js/src/src/abstract/vertex.d.ts +22 -0
  286. package/js/src/src/abstract/vertex.js +11 -0
  287. package/js/src/src/abstract/wallex.d.ts +11 -0
  288. package/js/src/src/abstract/wallex.js +11 -0
  289. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  290. package/js/src/src/abstract/wavesexchange.js +11 -0
  291. package/js/src/src/abstract/whitebit.d.ts +117 -0
  292. package/js/src/src/abstract/whitebit.js +11 -0
  293. package/js/src/src/abstract/woo.d.ts +144 -0
  294. package/js/src/src/abstract/woo.js +11 -0
  295. package/js/src/src/abstract/woofipro.d.ts +122 -0
  296. package/js/src/src/abstract/woofipro.js +11 -0
  297. package/js/src/src/abstract/xt.d.ts +160 -0
  298. package/js/src/src/abstract/xt.js +11 -0
  299. package/js/src/src/abstract/yobit.d.ts +19 -0
  300. package/js/src/src/abstract/yobit.js +11 -0
  301. package/js/src/src/abstract/zaif.d.ts +41 -0
  302. package/js/src/src/abstract/zaif.js +11 -0
  303. package/js/src/src/abstract/zonda.d.ts +56 -0
  304. package/js/src/src/abstract/zonda.js +11 -0
  305. package/js/src/src/afratether.d.ts +21 -0
  306. package/js/src/src/afratether.js +356 -0
  307. package/js/src/src/alpaca.d.ts +332 -0
  308. package/js/src/src/alpaca.js +1908 -0
  309. package/js/src/src/apex.d.ts +333 -0
  310. package/js/src/src/apex.js +1942 -0
  311. package/js/src/src/arzinja.d.ts +21 -0
  312. package/js/src/src/arzinja.js +298 -0
  313. package/js/src/src/arzplus.d.ts +26 -0
  314. package/js/src/src/arzplus.js +581 -0
  315. package/js/src/src/ascendex.d.ts +424 -0
  316. package/js/src/src/ascendex.js +3699 -0
  317. package/js/src/src/asretether.d.ts +21 -0
  318. package/js/src/src/asretether.js +324 -0
  319. package/js/src/src/base/Exchange.d.ts +926 -0
  320. package/js/src/src/base/Exchange.js +7399 -0
  321. package/js/src/src/base/Precise.d.ts +42 -0
  322. package/js/src/src/base/Precise.js +275 -0
  323. package/js/src/src/base/errors.d.ts +168 -0
  324. package/js/src/src/base/errors.js +255 -0
  325. package/js/src/src/base/functions/crypto.d.ts +16 -0
  326. package/js/src/src/base/functions/crypto.js +131 -0
  327. package/js/src/src/base/functions/encode.d.ts +4 -0
  328. package/js/src/src/base/functions/encode.js +32 -0
  329. package/js/src/src/base/functions/generic.d.ts +29 -0
  330. package/js/src/src/base/functions/generic.js +203 -0
  331. package/js/src/src/base/functions/misc.d.ts +9 -0
  332. package/js/src/src/base/functions/misc.js +101 -0
  333. package/js/src/src/base/functions/number.d.ts +27 -0
  334. package/js/src/src/base/functions/number.js +313 -0
  335. package/js/src/src/base/functions/platform.d.ts +7 -0
  336. package/js/src/src/base/functions/platform.js +27 -0
  337. package/js/src/src/base/functions/rsa.d.ts +5 -0
  338. package/js/src/src/base/functions/rsa.js +49 -0
  339. package/js/src/src/base/functions/string.d.ts +7 -0
  340. package/js/src/src/base/functions/string.js +44 -0
  341. package/js/src/src/base/functions/throttle.d.ts +6 -0
  342. package/js/src/src/base/functions/throttle.js +67 -0
  343. package/js/src/src/base/functions/time.d.ts +21 -0
  344. package/js/src/src/base/functions/time.js +171 -0
  345. package/js/src/src/base/functions/totp.d.ts +3 -0
  346. package/js/src/src/base/functions/totp.js +25 -0
  347. package/js/src/src/base/functions/type.d.ts +37 -0
  348. package/js/src/src/base/functions/type.js +179 -0
  349. package/js/src/src/base/functions.d.ts +10 -0
  350. package/js/src/src/base/functions.js +18 -0
  351. package/js/src/src/base/types.d.ts +586 -0
  352. package/js/src/src/base/types.js +7 -0
  353. package/js/src/src/base/ws/Cache.d.ts +27 -0
  354. package/js/src/src/base/ws/Cache.js +260 -0
  355. package/js/src/src/base/ws/Client.d.ts +53 -0
  356. package/js/src/src/base/ws/Client.js +307 -0
  357. package/js/src/src/base/ws/Future.d.ts +8 -0
  358. package/js/src/src/base/ws/Future.js +35 -0
  359. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  360. package/js/src/src/base/ws/OrderBook.js +130 -0
  361. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  362. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  363. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  364. package/js/src/src/base/ws/WsClient.js +69 -0
  365. package/js/src/src/bequant.d.ts +4 -0
  366. package/js/src/src/bequant.js +35 -0
  367. package/js/src/src/bidarz.d.ts +16 -0
  368. package/js/src/src/bidarz.js +327 -0
  369. package/js/src/src/bigone.d.ts +296 -0
  370. package/js/src/src/bigone.js +2340 -0
  371. package/js/src/src/binance.d.ts +1667 -0
  372. package/js/src/src/binance.js +14400 -0
  373. package/js/src/src/binancecoinm.d.ts +6 -0
  374. package/js/src/src/binancecoinm.js +51 -0
  375. package/js/src/src/binanceus.d.ts +4 -0
  376. package/js/src/src/binanceus.js +225 -0
  377. package/js/src/src/binanceusdm.d.ts +6 -0
  378. package/js/src/src/binanceusdm.js +63 -0
  379. package/js/src/src/bingx.d.ts +778 -0
  380. package/js/src/src/bingx.js +6705 -0
  381. package/js/src/src/bit24.d.ts +24 -0
  382. package/js/src/src/bit24.js +520 -0
  383. package/js/src/src/bit2c.d.ts +146 -0
  384. package/js/src/src/bit2c.js +1029 -0
  385. package/js/src/src/bitbank.d.ts +181 -0
  386. package/js/src/src/bitbank.js +1146 -0
  387. package/js/src/src/bitbarg.d.ts +21 -0
  388. package/js/src/src/bitbarg.js +312 -0
  389. package/js/src/src/bitbns.d.ts +184 -0
  390. package/js/src/src/bitbns.js +1288 -0
  391. package/js/src/src/bitfinex.d.ts +516 -0
  392. package/js/src/src/bitfinex.js +3951 -0
  393. package/js/src/src/bitflyer.d.ts +229 -0
  394. package/js/src/src/bitflyer.js +1209 -0
  395. package/js/src/src/bitget.d.ts +1109 -0
  396. package/js/src/src/bitget.js +11033 -0
  397. package/js/src/src/bithumb.d.ts +165 -0
  398. package/js/src/src/bithumb.js +1257 -0
  399. package/js/src/src/bitimen.d.ts +23 -0
  400. package/js/src/src/bitimen.js +424 -0
  401. package/js/src/src/bitir.d.ts +23 -0
  402. package/js/src/src/bitir.js +521 -0
  403. package/js/src/src/bitmart.d.ts +736 -0
  404. package/js/src/src/bitmart.js +5639 -0
  405. package/js/src/src/bitmex.d.ts +395 -0
  406. package/js/src/src/bitmex.js +3088 -0
  407. package/js/src/src/bitopro.d.ts +295 -0
  408. package/js/src/src/bitopro.js +1892 -0
  409. package/js/src/src/bitpin.d.ts +23 -0
  410. package/js/src/src/bitpin.js +487 -0
  411. package/js/src/src/bitrue.d.ts +384 -0
  412. package/js/src/src/bitrue.js +3382 -0
  413. package/js/src/src/bitso.d.ts +270 -0
  414. package/js/src/src/bitso.js +1881 -0
  415. package/js/src/src/bitstamp.d.ts +355 -0
  416. package/js/src/src/bitstamp.js +2445 -0
  417. package/js/src/src/bitteam.d.ts +229 -0
  418. package/js/src/src/bitteam.js +2420 -0
  419. package/js/src/src/bittrade.d.ts +298 -0
  420. package/js/src/src/bittrade.js +2050 -0
  421. package/js/src/src/bitunix.d.ts +21 -0
  422. package/js/src/src/bitunix.js +326 -0
  423. package/js/src/src/bitvavo.d.ts +311 -0
  424. package/js/src/src/bitvavo.js +2204 -0
  425. package/js/src/src/blockchaincom.d.ts +256 -0
  426. package/js/src/src/blockchaincom.js +1259 -0
  427. package/js/src/src/blofin.d.ts +439 -0
  428. package/js/src/src/blofin.js +2576 -0
  429. package/js/src/src/btcalpha.d.ts +209 -0
  430. package/js/src/src/btcalpha.js +1056 -0
  431. package/js/src/src/btcbox.d.ts +144 -0
  432. package/js/src/src/btcbox.js +834 -0
  433. package/js/src/src/btcmarkets.d.ts +253 -0
  434. package/js/src/src/btcmarkets.js +1418 -0
  435. package/js/src/src/btcturk.d.ts +161 -0
  436. package/js/src/src/btcturk.js +1058 -0
  437. package/js/src/src/bybit.d.ts +1097 -0
  438. package/js/src/src/bybit.js +9382 -0
  439. package/js/src/src/bydfi.d.ts +23 -0
  440. package/js/src/src/bydfi.js +434 -0
  441. package/js/src/src/cafearz.d.ts +21 -0
  442. package/js/src/src/cafearz.js +346 -0
  443. package/js/src/src/cex.d.ts +286 -0
  444. package/js/src/src/cex.js +1799 -0
  445. package/js/src/src/coinbase.d.ts +623 -0
  446. package/js/src/src/coinbase.js +5220 -0
  447. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  448. package/js/src/src/coinbaseadvanced.js +18 -0
  449. package/js/src/src/coinbaseexchange.d.ts +334 -0
  450. package/js/src/src/coinbaseexchange.js +2127 -0
  451. package/js/src/src/coinbaseinternational.d.ts +443 -0
  452. package/js/src/src/coinbaseinternational.js +2336 -0
  453. package/js/src/src/coincatch.d.ts +786 -0
  454. package/js/src/src/coincatch.js +5492 -0
  455. package/js/src/src/coincheck.d.ts +147 -0
  456. package/js/src/src/coincheck.js +962 -0
  457. package/js/src/src/coinex.d.ts +719 -0
  458. package/js/src/src/coinex.js +6166 -0
  459. package/js/src/src/coinmate.d.ts +202 -0
  460. package/js/src/src/coinmate.js +1215 -0
  461. package/js/src/src/coinmetro.d.ts +244 -0
  462. package/js/src/src/coinmetro.js +2024 -0
  463. package/js/src/src/coinone.d.ts +158 -0
  464. package/js/src/src/coinone.js +1278 -0
  465. package/js/src/src/coinsph.d.ts +310 -0
  466. package/js/src/src/coinsph.js +2203 -0
  467. package/js/src/src/coinspot.d.ts +108 -0
  468. package/js/src/src/coinspot.js +653 -0
  469. package/js/src/src/cryptocom.d.ts +463 -0
  470. package/js/src/src/cryptocom.js +3549 -0
  471. package/js/src/src/cryptomus.d.ts +158 -0
  472. package/js/src/src/cryptomus.js +1169 -0
  473. package/js/src/src/defx.d.ts +348 -0
  474. package/js/src/src/defx.js +2139 -0
  475. package/js/src/src/delta.d.ts +407 -0
  476. package/js/src/src/delta.js +3654 -0
  477. package/js/src/src/deribit.d.ts +516 -0
  478. package/js/src/src/deribit.js +3790 -0
  479. package/js/src/src/derive.d.ts +324 -0
  480. package/js/src/src/derive.js +2655 -0
  481. package/js/src/src/digifinex.d.ts +544 -0
  482. package/js/src/src/digifinex.js +4453 -0
  483. package/js/src/src/ellipx.d.ts +237 -0
  484. package/js/src/src/ellipx.js +2071 -0
  485. package/js/src/src/eterex.d.ts +21 -0
  486. package/js/src/src/eterex.js +299 -0
  487. package/js/src/src/excoino.d.ts +23 -0
  488. package/js/src/src/excoino.js +426 -0
  489. package/js/src/src/exir.d.ts +23 -0
  490. package/js/src/src/exir.js +403 -0
  491. package/js/src/src/exmo.d.ts +426 -0
  492. package/js/src/src/exmo.js +2825 -0
  493. package/js/src/src/exnovin.d.ts +22 -0
  494. package/js/src/src/exnovin.js +378 -0
  495. package/js/src/src/farhadexchange.d.ts +21 -0
  496. package/js/src/src/farhadexchange.js +280 -0
  497. package/js/src/src/fmfwio.d.ts +4 -0
  498. package/js/src/src/fmfwio.js +35 -0
  499. package/js/src/src/foxbit.d.ts +352 -0
  500. package/js/src/src/foxbit.js +2016 -0
  501. package/js/src/src/gate.d.ts +1071 -0
  502. package/js/src/src/gate.js +8282 -0
  503. package/js/src/src/gateio.d.ts +4 -0
  504. package/js/src/src/gateio.js +17 -0
  505. package/js/src/src/gemini.d.ts +257 -0
  506. package/js/src/src/gemini.js +2006 -0
  507. package/js/src/src/hamtapay.d.ts +21 -0
  508. package/js/src/src/hamtapay.js +303 -0
  509. package/js/src/src/hashkey.d.ts +628 -0
  510. package/js/src/src/hashkey.js +4363 -0
  511. package/js/src/src/hibachi.d.ts +346 -0
  512. package/js/src/src/hibachi.js +2137 -0
  513. package/js/src/src/hitbtc.d.ts +558 -0
  514. package/js/src/src/hitbtc.js +3847 -0
  515. package/js/src/src/hitobit.d.ts +23 -0
  516. package/js/src/src/hitobit.js +412 -0
  517. package/js/src/src/hollaex.d.ts +305 -0
  518. package/js/src/src/hollaex.js +2046 -0
  519. package/js/src/src/htx.d.ts +961 -0
  520. package/js/src/src/htx.js +9668 -0
  521. package/js/src/src/huobi.d.ts +4 -0
  522. package/js/src/src/huobi.js +17 -0
  523. package/js/src/src/hyperliquid.d.ts +651 -0
  524. package/js/src/src/hyperliquid.js +3937 -0
  525. package/js/src/src/independentreserve.d.ts +169 -0
  526. package/js/src/src/independentreserve.js +1115 -0
  527. package/js/src/src/indodax.d.ts +217 -0
  528. package/js/src/src/indodax.js +1454 -0
  529. package/js/src/src/iranexchange.d.ts +21 -0
  530. package/js/src/src/iranexchange.js +399 -0
  531. package/js/src/src/jibitex.d.ts +23 -0
  532. package/js/src/src/jibitex.js +416 -0
  533. package/js/src/src/kcex.d.ts +21 -0
  534. package/js/src/src/kcex.js +335 -0
  535. package/js/src/src/kifpoolme.d.ts +23 -0
  536. package/js/src/src/kifpoolme.js +410 -0
  537. package/js/src/src/kraken.d.ts +484 -0
  538. package/js/src/src/kraken.js +3518 -0
  539. package/js/src/src/krakenfutures.d.ts +362 -0
  540. package/js/src/src/krakenfutures.js +2885 -0
  541. package/js/src/src/kucoin.d.ts +759 -0
  542. package/js/src/src/kucoin.js +5153 -0
  543. package/js/src/src/kucoinfutures.d.ts +521 -0
  544. package/js/src/src/kucoinfutures.js +3381 -0
  545. package/js/src/src/latoken.d.ts +274 -0
  546. package/js/src/src/latoken.js +1824 -0
  547. package/js/src/src/lbank.d.ts +350 -0
  548. package/js/src/src/lbank.js +3146 -0
  549. package/js/src/src/luno.d.ts +252 -0
  550. package/js/src/src/luno.js +1479 -0
  551. package/js/src/src/mazdax.d.ts +23 -0
  552. package/js/src/src/mazdax.js +534 -0
  553. package/js/src/src/mercado.d.ts +160 -0
  554. package/js/src/src/mercado.js +1011 -0
  555. package/js/src/src/mexc.d.ts +768 -0
  556. package/js/src/src/mexc.js +6102 -0
  557. package/js/src/src/modetrade.d.ts +496 -0
  558. package/js/src/src/modetrade.js +2936 -0
  559. package/js/src/src/myokx.d.ts +4 -0
  560. package/js/src/src/myokx.js +54 -0
  561. package/js/src/src/ndax.d.ts +285 -0
  562. package/js/src/src/ndax.js +2598 -0
  563. package/js/src/src/nobitex.d.ts +23 -0
  564. package/js/src/src/nobitex.js +454 -0
  565. package/js/src/src/novadax.d.ts +279 -0
  566. package/js/src/src/novadax.js +1676 -0
  567. package/js/src/src/oceanex.d.ts +231 -0
  568. package/js/src/src/oceanex.js +1123 -0
  569. package/js/src/src/okcoin.d.ts +346 -0
  570. package/js/src/src/okcoin.js +3211 -0
  571. package/js/src/src/okexchange.d.ts +23 -0
  572. package/js/src/src/okexchange.js +373 -0
  573. package/js/src/src/okx.d.ts +1125 -0
  574. package/js/src/src/okx.js +9009 -0
  575. package/js/src/src/okxus.d.ts +4 -0
  576. package/js/src/src/okxus.js +54 -0
  577. package/js/src/src/ompfinex.d.ts +23 -0
  578. package/js/src/src/ompfinex.js +510 -0
  579. package/js/src/src/onetrading.d.ts +228 -0
  580. package/js/src/src/onetrading.js +1769 -0
  581. package/js/src/src/oxfun.d.ts +442 -0
  582. package/js/src/src/oxfun.js +2920 -0
  583. package/js/src/src/p2b.d.ts +189 -0
  584. package/js/src/src/p2b.js +1344 -0
  585. package/js/src/src/paradex.d.ts +389 -0
  586. package/js/src/src/paradex.js +2607 -0
  587. package/js/src/src/paymium.d.ts +133 -0
  588. package/js/src/src/paymium.js +644 -0
  589. package/js/src/src/phemex.d.ts +497 -0
  590. package/js/src/src/phemex.js +5333 -0
  591. package/js/src/src/pingi.d.ts +22 -0
  592. package/js/src/src/pingi.js +446 -0
  593. package/js/src/src/poloniex.d.ts +441 -0
  594. package/js/src/src/poloniex.js +3681 -0
  595. package/js/src/src/pooleno.d.ts +21 -0
  596. package/js/src/src/pooleno.js +347 -0
  597. package/js/src/src/pro/alpaca.d.ts +95 -0
  598. package/js/src/src/pro/alpaca.js +724 -0
  599. package/js/src/src/pro/apex.d.ts +160 -0
  600. package/js/src/src/pro/apex.js +1044 -0
  601. package/js/src/src/pro/ascendex.d.ts +99 -0
  602. package/js/src/src/pro/ascendex.js +1012 -0
  603. package/js/src/src/pro/bequant.d.ts +4 -0
  604. package/js/src/src/pro/bequant.js +42 -0
  605. package/js/src/src/pro/binance.d.ts +796 -0
  606. package/js/src/src/pro/binance.js +4373 -0
  607. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  608. package/js/src/src/pro/binancecoinm.js +32 -0
  609. package/js/src/src/pro/binanceus.d.ts +4 -0
  610. package/js/src/src/pro/binanceus.js +52 -0
  611. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  612. package/js/src/src/pro/binanceusdm.js +37 -0
  613. package/js/src/src/pro/bingx.d.ts +151 -0
  614. package/js/src/src/pro/bingx.js +1568 -0
  615. package/js/src/src/pro/bitfinex.d.ts +99 -0
  616. package/js/src/src/pro/bitfinex.js +1165 -0
  617. package/js/src/src/pro/bitget.d.ts +257 -0
  618. package/js/src/src/pro/bitget.js +2327 -0
  619. package/js/src/src/pro/bithumb.d.ts +59 -0
  620. package/js/src/src/pro/bithumb.js +395 -0
  621. package/js/src/src/pro/bitmart.d.ts +168 -0
  622. package/js/src/src/pro/bitmart.js +1686 -0
  623. package/js/src/src/pro/bitmex.d.ts +170 -0
  624. package/js/src/src/pro/bitmex.js +1760 -0
  625. package/js/src/src/pro/bitopro.d.ts +69 -0
  626. package/js/src/src/pro/bitopro.js +477 -0
  627. package/js/src/src/pro/bitrue.d.ts +40 -0
  628. package/js/src/src/pro/bitrue.js +461 -0
  629. package/js/src/src/pro/bitstamp.d.ts +53 -0
  630. package/js/src/src/pro/bitstamp.js +587 -0
  631. package/js/src/src/pro/bittrade.d.ts +66 -0
  632. package/js/src/src/pro/bittrade.js +606 -0
  633. package/js/src/src/pro/bitvavo.d.ts +321 -0
  634. package/js/src/src/pro/bitvavo.js +1451 -0
  635. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  636. package/js/src/src/pro/blockchaincom.js +777 -0
  637. package/js/src/src/pro/blofin.d.ts +174 -0
  638. package/js/src/src/pro/blofin.js +743 -0
  639. package/js/src/src/pro/bybit.d.ts +397 -0
  640. package/js/src/src/pro/bybit.js +2519 -0
  641. package/js/src/src/pro/cex.d.ts +220 -0
  642. package/js/src/src/pro/cex.js +1535 -0
  643. package/js/src/src/pro/coinbase.d.ts +119 -0
  644. package/js/src/src/pro/coinbase.js +736 -0
  645. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  646. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  647. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  648. package/js/src/src/pro/coinbaseexchange.js +969 -0
  649. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  650. package/js/src/src/pro/coinbaseinternational.js +804 -0
  651. package/js/src/src/pro/coincatch.d.ts +207 -0
  652. package/js/src/src/pro/coincatch.js +1562 -0
  653. package/js/src/src/pro/coincheck.d.ts +33 -0
  654. package/js/src/src/pro/coincheck.js +210 -0
  655. package/js/src/src/pro/coinex.d.ts +147 -0
  656. package/js/src/src/pro/coinex.js +1426 -0
  657. package/js/src/src/pro/coinone.d.ts +51 -0
  658. package/js/src/src/pro/coinone.js +413 -0
  659. package/js/src/src/pro/cryptocom.d.ts +300 -0
  660. package/js/src/src/pro/cryptocom.js +1414 -0
  661. package/js/src/src/pro/defx.d.ts +236 -0
  662. package/js/src/src/pro/defx.js +865 -0
  663. package/js/src/src/pro/deribit.d.ts +163 -0
  664. package/js/src/src/pro/deribit.js +1066 -0
  665. package/js/src/src/pro/derive.d.ts +100 -0
  666. package/js/src/src/pro/derive.js +753 -0
  667. package/js/src/src/pro/exmo.d.ts +97 -0
  668. package/js/src/src/pro/exmo.js +903 -0
  669. package/js/src/src/pro/gate.d.ts +360 -0
  670. package/js/src/src/pro/gate.js +2119 -0
  671. package/js/src/src/pro/gateio.d.ts +4 -0
  672. package/js/src/src/pro/gateio.js +17 -0
  673. package/js/src/src/pro/gemini.d.ts +106 -0
  674. package/js/src/src/pro/gemini.js +932 -0
  675. package/js/src/src/pro/hashkey.d.ts +121 -0
  676. package/js/src/src/pro/hashkey.js +843 -0
  677. package/js/src/src/pro/hitbtc.d.ts +235 -0
  678. package/js/src/src/pro/hitbtc.js +1400 -0
  679. package/js/src/src/pro/hollaex.d.ts +77 -0
  680. package/js/src/src/pro/hollaex.js +604 -0
  681. package/js/src/src/pro/htx.d.ts +141 -0
  682. package/js/src/src/pro/htx.js +2415 -0
  683. package/js/src/src/pro/huobi.d.ts +4 -0
  684. package/js/src/src/pro/huobi.js +17 -0
  685. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  686. package/js/src/src/pro/hyperliquid.js +1126 -0
  687. package/js/src/src/pro/independentreserve.d.ts +36 -0
  688. package/js/src/src/pro/independentreserve.js +287 -0
  689. package/js/src/src/pro/kraken.d.ts +233 -0
  690. package/js/src/src/pro/kraken.js +1785 -0
  691. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  692. package/js/src/src/pro/krakenfutures.js +1592 -0
  693. package/js/src/src/pro/kucoin.d.ts +221 -0
  694. package/js/src/src/pro/kucoin.js +1430 -0
  695. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  696. package/js/src/src/pro/kucoinfutures.js +1295 -0
  697. package/js/src/src/pro/lbank.d.ts +134 -0
  698. package/js/src/src/pro/lbank.js +950 -0
  699. package/js/src/src/pro/luno.d.ts +44 -0
  700. package/js/src/src/pro/luno.js +322 -0
  701. package/js/src/src/pro/mexc.d.ts +210 -0
  702. package/js/src/src/pro/mexc.js +2009 -0
  703. package/js/src/src/pro/modetrade.d.ts +155 -0
  704. package/js/src/src/pro/modetrade.js +1335 -0
  705. package/js/src/src/pro/myokx.d.ts +4 -0
  706. package/js/src/src/pro/myokx.js +39 -0
  707. package/js/src/src/pro/ndax.d.ts +60 -0
  708. package/js/src/src/pro/ndax.js +545 -0
  709. package/js/src/src/pro/okcoin.d.ts +91 -0
  710. package/js/src/src/pro/okcoin.js +763 -0
  711. package/js/src/src/pro/okx.d.ts +408 -0
  712. package/js/src/src/pro/okx.js +2479 -0
  713. package/js/src/src/pro/okxus.d.ts +4 -0
  714. package/js/src/src/pro/okxus.js +39 -0
  715. package/js/src/src/pro/onetrading.d.ts +107 -0
  716. package/js/src/src/pro/onetrading.js +1343 -0
  717. package/js/src/src/pro/oxfun.d.ts +234 -0
  718. package/js/src/src/pro/oxfun.js +1112 -0
  719. package/js/src/src/pro/p2b.d.ts +104 -0
  720. package/js/src/src/pro/p2b.js +506 -0
  721. package/js/src/src/pro/paradex.d.ts +54 -0
  722. package/js/src/src/pro/paradex.js +370 -0
  723. package/js/src/src/pro/phemex.d.ts +129 -0
  724. package/js/src/src/pro/phemex.js +1569 -0
  725. package/js/src/src/pro/poloniex.d.ts +214 -0
  726. package/js/src/src/pro/poloniex.js +1318 -0
  727. package/js/src/src/pro/probit.d.ts +91 -0
  728. package/js/src/src/pro/probit.js +593 -0
  729. package/js/src/src/pro/tradeogre.d.ts +49 -0
  730. package/js/src/src/pro/tradeogre.js +284 -0
  731. package/js/src/src/pro/upbit.d.ts +124 -0
  732. package/js/src/src/pro/upbit.js +689 -0
  733. package/js/src/src/pro/vertex.d.ts +104 -0
  734. package/js/src/src/pro/vertex.js +999 -0
  735. package/js/src/src/pro/whitebit.d.ts +123 -0
  736. package/js/src/src/pro/whitebit.js +971 -0
  737. package/js/src/src/pro/woo.d.ts +161 -0
  738. package/js/src/src/pro/woo.js +1351 -0
  739. package/js/src/src/pro/woofipro.d.ts +155 -0
  740. package/js/src/src/pro/woofipro.js +1335 -0
  741. package/js/src/src/pro/xt.d.ts +165 -0
  742. package/js/src/src/pro/xt.js +1230 -0
  743. package/js/src/src/probit.d.ts +283 -0
  744. package/js/src/src/probit.js +1935 -0
  745. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  746. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  747. package/js/src/src/raastin.d.ts +24 -0
  748. package/js/src/src/raastin.js +494 -0
  749. package/js/src/src/ramzinex.d.ts +23 -0
  750. package/js/src/src/ramzinex.js +510 -0
  751. package/js/src/src/sarmayex.d.ts +21 -0
  752. package/js/src/src/sarmayex.js +376 -0
  753. package/js/src/src/sarrafex.d.ts +23 -0
  754. package/js/src/src/sarrafex.js +501 -0
  755. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  756. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  757. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  758. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  759. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  760. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  761. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  762. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  763. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  764. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  765. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  766. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  767. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  768. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  769. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  770. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  771. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  772. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  773. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  774. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  775. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  776. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  777. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  778. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  779. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  780. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  781. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  782. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  783. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  784. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  785. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  786. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  787. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  788. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  789. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  790. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  791. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  792. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  793. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  794. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  795. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  796. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  797. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  798. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  799. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  800. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  801. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  802. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  803. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  804. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  805. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  806. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  807. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  808. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  809. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  810. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  811. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  812. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  813. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  814. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  815. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  816. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  817. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  818. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  819. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  820. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  821. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  822. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  823. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  824. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  825. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  826. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  827. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  828. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  829. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  830. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  831. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  832. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  833. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  834. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  835. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  836. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  837. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  838. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  850. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  851. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  852. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  853. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  854. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  855. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  856. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  857. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  858. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  859. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  860. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  861. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  862. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  868. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  869. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  870. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  871. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  872. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  873. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  874. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  875. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  876. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  877. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  878. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  879. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  880. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  881. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  882. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  883. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  884. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  885. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  886. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  887. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  888. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  889. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  890. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  891. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  892. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  893. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  894. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  895. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  896. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  897. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  898. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  899. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  900. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  901. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  902. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  903. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  904. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  905. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  906. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  907. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  908. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  909. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  910. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  911. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  912. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  913. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  914. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  915. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  916. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  917. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  918. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  919. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  920. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  921. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  922. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  923. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  924. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  925. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  926. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  927. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  928. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  929. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  930. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  931. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  932. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  933. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  934. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  935. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  936. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  937. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  938. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  939. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  940. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  941. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  942. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  943. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  944. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  945. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  946. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  947. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  948. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  949. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  950. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  951. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  952. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  953. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  954. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  955. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  956. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  957. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  958. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  959. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  960. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  984. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  985. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  986. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  987. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  988. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  989. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  990. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  991. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  992. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  993. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  994. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  995. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  996. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  997. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  998. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  999. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  1000. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  1001. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  1002. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  1003. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  1004. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  1005. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  1006. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  1007. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  1008. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  1009. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  1010. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1011. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1012. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1013. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1014. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1015. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1016. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1017. package/js/src/src/tabdeal.d.ts +23 -0
  1018. package/js/src/src/tabdeal.js +387 -0
  1019. package/js/src/src/tehran_exchange.d.ts +21 -0
  1020. package/js/src/src/tehran_exchange.js +333 -0
  1021. package/js/src/src/tetherland.d.ts +21 -0
  1022. package/js/src/src/tetherland.js +367 -0
  1023. package/js/src/src/timex.d.ts +247 -0
  1024. package/js/src/src/timex.js +1792 -0
  1025. package/js/src/src/tokocrypto.d.ts +261 -0
  1026. package/js/src/src/tokocrypto.js +2641 -0
  1027. package/js/src/src/toobit.d.ts +22 -0
  1028. package/js/src/src/toobit.js +445 -0
  1029. package/js/src/src/tradeogre.d.ts +149 -0
  1030. package/js/src/src/tradeogre.js +878 -0
  1031. package/js/src/src/twox.d.ts +21 -0
  1032. package/js/src/src/twox.js +371 -0
  1033. package/js/src/src/ubitex.d.ts +23 -0
  1034. package/js/src/src/ubitex.js +433 -0
  1035. package/js/src/src/upbit.d.ts +377 -0
  1036. package/js/src/src/upbit.js +2340 -0
  1037. package/js/src/src/vertex.d.ts +346 -0
  1038. package/js/src/src/vertex.js +3146 -0
  1039. package/js/src/src/wallex.d.ts +23 -0
  1040. package/js/src/src/wallex.js +467 -0
  1041. package/js/src/src/wavesexchange.d.ts +244 -0
  1042. package/js/src/src/wavesexchange.js +2747 -0
  1043. package/js/src/src/whitebit.d.ts +571 -0
  1044. package/js/src/src/whitebit.js +3437 -0
  1045. package/js/src/src/woo.d.ts +727 -0
  1046. package/js/src/src/woo.js +4183 -0
  1047. package/js/src/src/woofipro.d.ts +497 -0
  1048. package/js/src/src/woofipro.js +2941 -0
  1049. package/js/src/src/xt.d.ts +568 -0
  1050. package/js/src/src/xt.js +5184 -0
  1051. package/js/src/src/yobit.d.ts +197 -0
  1052. package/js/src/src/yobit.js +1453 -0
  1053. package/js/src/src/zaif.d.ts +136 -0
  1054. package/js/src/src/zaif.js +821 -0
  1055. package/js/src/src/zonda.d.ts +214 -0
  1056. package/js/src/src/zonda.js +1984 -0
  1057. package/js/test.d.ts +1 -1
  1058. package/js/test.js +33 -33
  1059. package/package.json +1 -1
@@ -0,0 +1,2127 @@
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
+ // ----------------------------------------------------------------------------
8
+ import Exchange from './abstract/coinbaseexchange.js';
9
+ import { InsufficientFunds, ArgumentsRequired, ExchangeError, InvalidOrder, InvalidAddress, AuthenticationError, OrderNotFound, OnMaintenance, PermissionDenied, RateLimitExceeded } from './base/errors.js';
10
+ import { Precise } from './base/Precise.js';
11
+ import { TICK_SIZE } from './base/functions/number.js';
12
+ import { sha256 } from './static_dependencies/noble-hashes/sha256.js';
13
+ // ----------------------------------------------------------------------------
14
+ /**
15
+ * @class coinbaseexchange
16
+ * @augments Exchange
17
+ */
18
+ export default class coinbaseexchange extends Exchange {
19
+ describe() {
20
+ return this.deepExtend(super.describe(), {
21
+ 'id': 'coinbaseexchange',
22
+ 'name': 'Coinbase Exchange',
23
+ 'countries': ['US'],
24
+ 'rateLimit': 100,
25
+ 'userAgent': this.userAgents['chrome'],
26
+ 'pro': true,
27
+ 'has': {
28
+ 'CORS': true,
29
+ 'spot': true,
30
+ 'margin': false,
31
+ 'swap': false,
32
+ 'future': false,
33
+ 'option': false,
34
+ 'addMargin': false,
35
+ 'borrowCrossMargin': false,
36
+ 'borrowIsolatedMargin': false,
37
+ 'borrowMargin': false,
38
+ 'cancelAllOrders': true,
39
+ 'cancelOrder': true,
40
+ 'closeAllPositions': false,
41
+ 'closePosition': false,
42
+ 'createDepositAddress': true,
43
+ 'createOrder': true,
44
+ 'createOrderWithTakeProfitAndStopLoss': false,
45
+ 'createOrderWithTakeProfitAndStopLossWs': false,
46
+ 'createPostOnlyOrder': false,
47
+ 'createReduceOnlyOrder': false,
48
+ 'createStopLimitOrder': true,
49
+ 'createStopMarketOrder': true,
50
+ 'createStopOrder': true,
51
+ 'fetchAccounts': true,
52
+ 'fetchBalance': true,
53
+ 'fetchBorrowInterest': false,
54
+ 'fetchBorrowRate': false,
55
+ 'fetchBorrowRateHistories': false,
56
+ 'fetchBorrowRateHistory': false,
57
+ 'fetchBorrowRates': false,
58
+ 'fetchBorrowRatesPerSymbol': false,
59
+ 'fetchClosedOrders': true,
60
+ 'fetchCrossBorrowRate': false,
61
+ 'fetchCrossBorrowRates': false,
62
+ 'fetchCurrencies': true,
63
+ 'fetchDepositAddress': false,
64
+ 'fetchDeposits': true,
65
+ 'fetchDepositsWithdrawals': true,
66
+ 'fetchFundingHistory': false,
67
+ 'fetchFundingInterval': false,
68
+ 'fetchFundingIntervals': false,
69
+ 'fetchFundingRate': false,
70
+ 'fetchFundingRateHistory': false,
71
+ 'fetchFundingRates': false,
72
+ 'fetchGreeks': false,
73
+ 'fetchIndexOHLCV': false,
74
+ 'fetchIsolatedBorrowRate': false,
75
+ 'fetchIsolatedBorrowRates': false,
76
+ 'fetchIsolatedPositions': false,
77
+ 'fetchLedger': true,
78
+ 'fetchLeverage': false,
79
+ 'fetchLeverages': false,
80
+ 'fetchLeverageTiers': false,
81
+ 'fetchLiquidations': false,
82
+ 'fetchLongShortRatio': false,
83
+ 'fetchLongShortRatioHistory': false,
84
+ 'fetchMarginAdjustmentHistory': false,
85
+ 'fetchMarginMode': false,
86
+ 'fetchMarginModes': false,
87
+ 'fetchMarketLeverageTiers': false,
88
+ 'fetchMarkets': true,
89
+ 'fetchMarkOHLCV': false,
90
+ 'fetchMarkPrices': false,
91
+ 'fetchMyLiquidations': false,
92
+ 'fetchMySettlementHistory': false,
93
+ 'fetchMyTrades': true,
94
+ 'fetchOHLCV': true,
95
+ 'fetchOpenInterest': false,
96
+ 'fetchOpenInterestHistory': false,
97
+ 'fetchOpenInterests': false,
98
+ 'fetchOpenOrders': true,
99
+ 'fetchOption': false,
100
+ 'fetchOptionChain': false,
101
+ 'fetchOrder': true,
102
+ 'fetchOrderBook': true,
103
+ 'fetchOrders': true,
104
+ 'fetchOrderTrades': true,
105
+ 'fetchPosition': false,
106
+ 'fetchPositionHistory': false,
107
+ 'fetchPositionMode': false,
108
+ 'fetchPositions': false,
109
+ 'fetchPositionsForSymbol': false,
110
+ 'fetchPositionsHistory': false,
111
+ 'fetchPositionsRisk': false,
112
+ 'fetchPremiumIndexOHLCV': false,
113
+ 'fetchSettlementHistory': false,
114
+ 'fetchTicker': true,
115
+ 'fetchTickers': true,
116
+ 'fetchTime': true,
117
+ 'fetchTrades': true,
118
+ 'fetchTradingFee': false,
119
+ 'fetchTradingFees': true,
120
+ 'fetchTransactions': 'emulated',
121
+ 'fetchVolatilityHistory': false,
122
+ 'fetchWithdrawals': true,
123
+ 'reduceMargin': false,
124
+ 'repayCrossMargin': false,
125
+ 'repayIsolatedMargin': false,
126
+ 'repayMargin': false,
127
+ 'setLeverage': false,
128
+ 'setMargin': false,
129
+ 'setMarginMode': false,
130
+ 'setPositionMode': false,
131
+ 'withdraw': true,
132
+ },
133
+ 'timeframes': {
134
+ '1m': 60,
135
+ '5m': 300,
136
+ '15m': 900,
137
+ '1h': 3600,
138
+ '6h': 21600,
139
+ '1d': 86400,
140
+ },
141
+ 'hostname': 'exchange.coinbase.com',
142
+ 'urls': {
143
+ 'test': {
144
+ 'public': 'https://api-public.sandbox.exchange.coinbase.com',
145
+ 'private': 'https://api-public.sandbox.exchange.coinbase.com',
146
+ },
147
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/34a65553-88aa-4a38-a714-064bd228b97e',
148
+ 'api': {
149
+ 'public': 'https://api.{hostname}',
150
+ 'private': 'https://api.{hostname}',
151
+ },
152
+ 'www': 'https://coinbase.com/',
153
+ 'doc': 'https://docs.cloud.coinbase.com/exchange/docs/',
154
+ 'fees': [
155
+ 'https://docs.pro.coinbase.com/#fees',
156
+ 'https://support.pro.coinbase.com/customer/en/portal/articles/2945310-fees',
157
+ ],
158
+ },
159
+ 'requiredCredentials': {
160
+ 'apiKey': true,
161
+ 'secret': true,
162
+ 'password': true,
163
+ },
164
+ 'api': {
165
+ 'public': {
166
+ 'get': [
167
+ 'currencies',
168
+ 'products',
169
+ 'products/{id}',
170
+ 'products/{id}/book',
171
+ 'products/{id}/candles',
172
+ 'products/{id}/stats',
173
+ 'products/{id}/ticker',
174
+ 'products/{id}/trades',
175
+ 'time',
176
+ 'products/spark-lines',
177
+ 'products/volume-summary',
178
+ ],
179
+ },
180
+ 'private': {
181
+ 'get': [
182
+ 'address-book',
183
+ 'accounts',
184
+ 'accounts/{id}',
185
+ 'accounts/{id}/holds',
186
+ 'accounts/{id}/ledger',
187
+ 'accounts/{id}/transfers',
188
+ 'coinbase-accounts',
189
+ 'fills',
190
+ 'funding',
191
+ 'fees',
192
+ 'margin/profile_information',
193
+ 'margin/buying_power',
194
+ 'margin/withdrawal_power',
195
+ 'margin/withdrawal_power_all',
196
+ 'margin/exit_plan',
197
+ 'margin/liquidation_history',
198
+ 'margin/position_refresh_amounts',
199
+ 'margin/status',
200
+ 'oracle',
201
+ 'orders',
202
+ 'orders/{id}',
203
+ 'orders/client:{client_oid}',
204
+ 'otc/orders',
205
+ 'payment-methods',
206
+ 'position',
207
+ 'profiles',
208
+ 'profiles/{id}',
209
+ 'reports/{report_id}',
210
+ 'transfers',
211
+ 'transfers/{transfer_id}',
212
+ 'users/self/exchange-limits',
213
+ 'users/self/hold-balances',
214
+ 'users/self/trailing-volume',
215
+ 'withdrawals/fee-estimate',
216
+ 'conversions/{conversion_id}',
217
+ 'conversions/fees',
218
+ ],
219
+ 'post': [
220
+ 'conversions',
221
+ 'deposits/coinbase-account',
222
+ 'deposits/payment-method',
223
+ 'coinbase-accounts/{id}/addresses',
224
+ 'funding/repay',
225
+ 'orders',
226
+ 'position/close',
227
+ 'profiles/margin-transfer',
228
+ 'profiles/transfer',
229
+ 'reports',
230
+ 'withdrawals/coinbase',
231
+ 'withdrawals/coinbase-account',
232
+ 'withdrawals/crypto',
233
+ 'withdrawals/payment-method',
234
+ ],
235
+ 'delete': [
236
+ 'orders',
237
+ 'orders/client:{client_oid}',
238
+ 'orders/{id}',
239
+ ],
240
+ },
241
+ },
242
+ 'commonCurrencies': {
243
+ 'CGLD': 'CELO',
244
+ },
245
+ 'precisionMode': TICK_SIZE,
246
+ 'fees': {
247
+ 'trading': {
248
+ 'tierBased': true,
249
+ 'percentage': true,
250
+ 'maker': this.parseNumber('0.004'),
251
+ 'taker': this.parseNumber('0.006'), // highest fee of all tiers
252
+ },
253
+ 'funding': {
254
+ 'tierBased': false,
255
+ 'percentage': false,
256
+ 'withdraw': {
257
+ 'BCH': 0,
258
+ 'BTC': 0,
259
+ 'LTC': 0,
260
+ 'ETH': 0,
261
+ 'EUR': 0.15,
262
+ 'USD': 25,
263
+ },
264
+ 'deposit': {
265
+ 'BCH': 0,
266
+ 'BTC': 0,
267
+ 'LTC': 0,
268
+ 'ETH': 0,
269
+ 'EUR': 0.15,
270
+ 'USD': 10,
271
+ },
272
+ },
273
+ },
274
+ 'features': {
275
+ 'default': {
276
+ 'sandbox': true,
277
+ 'createOrder': {
278
+ 'marginMode': true,
279
+ 'triggerPrice': true,
280
+ 'triggerPriceType': undefined,
281
+ 'triggerDirection': false,
282
+ 'stopLossPrice': false,
283
+ 'takeProfitPrice': false,
284
+ 'attachedStopLossTakeProfit': undefined,
285
+ 'timeInForce': {
286
+ 'IOC': true,
287
+ 'FOK': true,
288
+ 'PO': true,
289
+ 'GTD': true,
290
+ },
291
+ 'hedged': false,
292
+ 'trailing': false,
293
+ 'leverage': false,
294
+ 'marketBuyByCost': false,
295
+ 'marketBuyRequiresPrice': false,
296
+ 'selfTradePrevention': false,
297
+ 'iceberg': true, // todo: implement
298
+ },
299
+ 'createOrders': undefined,
300
+ 'fetchMyTrades': {
301
+ 'marginMode': false,
302
+ 'limit': 100,
303
+ 'daysBack': 100000,
304
+ 'untilDays': 100000,
305
+ 'symbolRequired': true,
306
+ },
307
+ 'fetchOrder': {
308
+ 'marginMode': false,
309
+ 'trigger': false,
310
+ 'trailing': false,
311
+ 'symbolRequired': false,
312
+ },
313
+ 'fetchOpenOrders': {
314
+ 'marginMode': false,
315
+ 'limit': 100,
316
+ 'trigger': false,
317
+ 'trailing': false,
318
+ 'symbolRequired': false,
319
+ },
320
+ 'fetchOrders': {
321
+ 'marginMode': false,
322
+ 'limit': 100,
323
+ 'daysBack': 100000,
324
+ 'untilDays': 100000,
325
+ 'trigger': false,
326
+ 'trailing': false,
327
+ 'symbolRequired': false,
328
+ },
329
+ 'fetchClosedOrders': {
330
+ 'marginMode': false,
331
+ 'limit': 100,
332
+ 'daysBack': 100000,
333
+ 'daysBackCanceled': 1,
334
+ 'untilDays': 100000,
335
+ 'trigger': false,
336
+ 'trailing': false,
337
+ 'symbolRequired': false,
338
+ },
339
+ 'fetchOHLCV': {
340
+ 'limit': 300,
341
+ },
342
+ },
343
+ 'spot': {
344
+ 'extends': 'default',
345
+ },
346
+ 'swap': {
347
+ 'linear': undefined,
348
+ 'inverse': undefined,
349
+ },
350
+ 'future': {
351
+ 'linear': undefined,
352
+ 'inverse': undefined,
353
+ },
354
+ },
355
+ 'options': {
356
+ 'networks': {
357
+ 'BTC': 'bitcoin',
358
+ // LIGHTNING unsupported
359
+ 'ETH': 'ethereum',
360
+ // TRON unsupported
361
+ 'SOL': 'solana',
362
+ // BSC unsupported
363
+ 'ARBONE': 'arbitrum',
364
+ 'AVAXC': 'avacchain',
365
+ 'MATIC': 'polygon',
366
+ 'BASE': 'base',
367
+ 'SUI': 'sui',
368
+ 'OP': 'optimism',
369
+ 'NEAR': 'near',
370
+ // CRONOS unsupported
371
+ // GNO unsupported
372
+ 'APT': 'aptos',
373
+ // SCROLL unsupported
374
+ 'KAVA': 'kava',
375
+ // TAIKO unsupported
376
+ // BOB unsupported
377
+ // LINEA unsupported
378
+ 'BLAST': 'blast',
379
+ 'XLM': 'stellar',
380
+ // RSK unsupported
381
+ 'SEI': 'sei',
382
+ // TON unsupported
383
+ // MANTLE unsupported
384
+ 'ADA': 'cardano',
385
+ // HYPE unsupported
386
+ 'CORE': 'coredao',
387
+ 'ALGO': 'algorand',
388
+ // RUNE unsupported
389
+ 'OSMO': 'osmosis',
390
+ // XIN unsupported
391
+ 'CELO': 'celo',
392
+ 'HBAR': 'hedera',
393
+ // FTM unsupported
394
+ // WEMIX unsupported
395
+ 'ZKSYNC': 'zksync',
396
+ // KLAY unsupported
397
+ // HT unsupported
398
+ // FSN unsupported
399
+ // EOS unsupported, eosio?
400
+ // ACA unsupported
401
+ 'STX': 'stacks',
402
+ 'XTZ': 'tezos',
403
+ // NEO unsupported
404
+ // METIS unsupported
405
+ // TLOS unsupported
406
+ 'EGLD': 'elrond',
407
+ // ASTR unsupported
408
+ // CFX unsupported
409
+ // GLMR unsupported
410
+ // CANTO unsupported
411
+ // SCRT unsupported
412
+ 'LTC': 'litecoin',
413
+ // AURORA unsupported
414
+ // ONG unsupported
415
+ 'ATOM': 'cosmos',
416
+ // CHZ unsupported
417
+ 'FIL': 'filecoin',
418
+ 'DOT': 'polkadot',
419
+ 'DOGE': 'dogecoin',
420
+ // BRC20 unsupported
421
+ 'XRP': 'ripple',
422
+ // XMR unsupported
423
+ 'DASH': 'dash',
424
+ // akash, aleo, axelar, bitcoincash, berachain, deso, ethereumclassic, unichain, flow, flare, dfinity, story,kusama, mina, ronin, oasis, bittensor, celestia, noble, vara, vechain, zcash, horizen, zetachain
425
+ },
426
+ },
427
+ 'exceptions': {
428
+ 'exact': {
429
+ 'Insufficient funds': InsufficientFunds,
430
+ 'NotFound': OrderNotFound,
431
+ 'Invalid API Key': AuthenticationError,
432
+ 'invalid signature': AuthenticationError,
433
+ 'Invalid Passphrase': AuthenticationError,
434
+ 'Invalid order id': InvalidOrder,
435
+ 'Private rate limit exceeded': RateLimitExceeded,
436
+ 'Trading pair not available': PermissionDenied,
437
+ 'Product not found': InvalidOrder,
438
+ },
439
+ 'broad': {
440
+ 'Order already done': OrderNotFound,
441
+ 'order not found': OrderNotFound,
442
+ 'price too small': InvalidOrder,
443
+ 'price too precise': InvalidOrder,
444
+ 'under maintenance': OnMaintenance,
445
+ 'size is too small': InvalidOrder,
446
+ 'Cancel only mode': OnMaintenance, // https://github.com/ccxt/ccxt/issues/7690
447
+ },
448
+ },
449
+ });
450
+ }
451
+ /**
452
+ * @method
453
+ * @name coinbaseexchange#fetchCurrencies
454
+ * @description fetches all available currencies on an exchange
455
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getcurrencies
456
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
457
+ * @returns {object} an associative dictionary of currencies
458
+ */
459
+ async fetchCurrencies(params = {}) {
460
+ const response = await this.publicGetCurrencies(params);
461
+ //
462
+ // {
463
+ // "id": "USDT",
464
+ // "name": "Tether",
465
+ // "min_size": "0.000001",
466
+ // "status": "online",
467
+ // "message": "",
468
+ // "max_precision": "0.000001",
469
+ // "convertible_to": [],
470
+ // "details": {
471
+ // "type": "crypto",
472
+ // "symbol": null,
473
+ // "network_confirmations": 14,
474
+ // "sort_order": 0,
475
+ // "crypto_address_link": "https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7?a={{address}}",
476
+ // "crypto_transaction_link": "https://etherscan.io/tx/0x{{txId}}",
477
+ // "push_payment_methods": [],
478
+ // "group_types": [],
479
+ // "display_name": null,
480
+ // "processing_time_seconds": null,
481
+ // "min_withdrawal_amount": 0.000001,
482
+ // "max_withdrawal_amount": 20000000
483
+ // },
484
+ // "default_network": "ethereum",
485
+ // "supported_networks": [
486
+ // {
487
+ // "id": "ethereum",
488
+ // "name": "Ethereum",
489
+ // "status": "online",
490
+ // "contract_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
491
+ // "crypto_address_link": "https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7?a={{address}}",
492
+ // "crypto_transaction_link": "https://etherscan.io/tx/0x{{txId}}",
493
+ // "min_withdrawal_amount": 0.000001,
494
+ // "max_withdrawal_amount": 20000000,
495
+ // "network_confirmations": 14,
496
+ // "processing_time_seconds": null
497
+ // }
498
+ // ],
499
+ // "display_name": "USDT"
500
+ // }
501
+ //
502
+ const result = {};
503
+ for (let i = 0; i < response.length; i++) {
504
+ const currency = response[i];
505
+ const id = this.safeString(currency, 'id');
506
+ const name = this.safeString(currency, 'name');
507
+ const code = this.safeCurrencyCode(id);
508
+ const details = this.safeDict(currency, 'details', {});
509
+ const networks = {};
510
+ const supportedNetworks = this.safeList(currency, 'supported_networks', []);
511
+ for (let j = 0; j < supportedNetworks.length; j++) {
512
+ const network = supportedNetworks[j];
513
+ const networkId = this.safeString(network, 'id');
514
+ const networkCode = this.networkIdToCode(networkId);
515
+ networks[networkCode] = {
516
+ 'id': networkId,
517
+ 'name': this.safeString(network, 'name'),
518
+ 'network': networkCode,
519
+ 'active': this.safeString(network, 'status') === 'online',
520
+ 'withdraw': undefined,
521
+ 'deposit': undefined,
522
+ 'fee': undefined,
523
+ 'precision': undefined,
524
+ 'limits': {
525
+ 'withdraw': {
526
+ 'min': this.safeNumber(network, 'min_withdrawal_amount'),
527
+ 'max': this.safeNumber(network, 'max_withdrawal_amount'),
528
+ },
529
+ },
530
+ 'contract': this.safeString(network, 'contract_address'),
531
+ 'info': network,
532
+ };
533
+ }
534
+ result[code] = this.safeCurrencyStructure({
535
+ 'id': id,
536
+ 'code': code,
537
+ 'info': currency,
538
+ 'type': this.safeString(details, 'type'),
539
+ 'name': name,
540
+ 'active': this.safeString(currency, 'status') === 'online',
541
+ 'deposit': undefined,
542
+ 'withdraw': undefined,
543
+ 'fee': undefined,
544
+ 'precision': this.safeNumber(currency, 'max_precision'),
545
+ 'limits': {
546
+ 'amount': {
547
+ 'min': this.safeNumber(details, 'min_size'),
548
+ 'max': undefined,
549
+ },
550
+ 'withdraw': {
551
+ 'min': this.safeNumber(details, 'min_withdrawal_amount'),
552
+ 'max': this.safeNumber(details, 'max_withdrawal_amount'),
553
+ },
554
+ },
555
+ 'networks': networks,
556
+ });
557
+ }
558
+ return result;
559
+ }
560
+ /**
561
+ * @method
562
+ * @name coinbaseexchange#fetchMarkets
563
+ * @description retrieves data on all markets for coinbaseexchange
564
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducts
565
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
566
+ * @returns {object[]} an array of objects representing market data
567
+ */
568
+ async fetchMarkets(params = {}) {
569
+ const response = await this.publicGetProducts(params);
570
+ //
571
+ // [
572
+ // {
573
+ // "id": "BTCAUCTION-USD",
574
+ // "base_currency": "BTC",
575
+ // "quote_currency": "USD",
576
+ // "base_min_size": "0.000016",
577
+ // "base_max_size": "1500",
578
+ // "quote_increment": "0.01",
579
+ // "base_increment": "0.00000001",
580
+ // "display_name": "BTCAUCTION/USD",
581
+ // "min_market_funds": "1",
582
+ // "max_market_funds": "20000000",
583
+ // "margin_enabled": false,
584
+ // "fx_stablecoin": false,
585
+ // "max_slippage_percentage": "0.02000000",
586
+ // "post_only": false,
587
+ // "limit_only": false,
588
+ // "cancel_only": true,
589
+ // "trading_disabled": false,
590
+ // "status": "online",
591
+ // "status_message": '',
592
+ // "auction_mode": false
593
+ // },
594
+ // {
595
+ // "id": "BTC-USD",
596
+ // "base_currency": "BTC",
597
+ // "quote_currency": "USD",
598
+ // "base_min_size": "0.000016",
599
+ // "base_max_size": "1500",
600
+ // "quote_increment": "0.01",
601
+ // "base_increment": "0.00000001",
602
+ // "display_name": "BTC/USD",
603
+ // "min_market_funds": "1",
604
+ // "max_market_funds": "20000000",
605
+ // "margin_enabled": false,
606
+ // "fx_stablecoin": false,
607
+ // "max_slippage_percentage": "0.02000000",
608
+ // "post_only": false,
609
+ // "limit_only": false,
610
+ // "cancel_only": false,
611
+ // "trading_disabled": false,
612
+ // "status": "online",
613
+ // "status_message": '',
614
+ // "auction_mode": false
615
+ // }
616
+ // ]
617
+ //
618
+ const result = [];
619
+ for (let i = 0; i < response.length; i++) {
620
+ const market = response[i];
621
+ const id = this.safeString(market, 'id');
622
+ const [baseId, quoteId] = id.split('-');
623
+ // BTCAUCTION-USD vs BTC-USD conflict workaround, see the output sample above
624
+ // const baseId = this.safeString (market, 'base_currency');
625
+ // const quoteId = this.safeString (market, 'quote_currency');
626
+ const base = this.safeCurrencyCode(baseId);
627
+ const quote = this.safeCurrencyCode(quoteId);
628
+ const status = this.safeString(market, 'status');
629
+ result.push(this.extend(this.fees['trading'], {
630
+ 'id': id,
631
+ 'symbol': base + '/' + quote,
632
+ 'base': base,
633
+ 'quote': quote,
634
+ 'settle': undefined,
635
+ 'baseId': baseId,
636
+ 'quoteId': quoteId,
637
+ 'settleId': undefined,
638
+ 'type': 'spot',
639
+ 'spot': true,
640
+ 'margin': this.safeValue(market, 'margin_enabled'),
641
+ 'swap': false,
642
+ 'future': false,
643
+ 'option': false,
644
+ 'active': (status === 'online'),
645
+ 'contract': false,
646
+ 'linear': undefined,
647
+ 'inverse': undefined,
648
+ 'contractSize': undefined,
649
+ 'expiry': undefined,
650
+ 'expiryDatetime': undefined,
651
+ 'strike': undefined,
652
+ 'optionType': undefined,
653
+ 'precision': {
654
+ 'amount': this.safeNumber(market, 'base_increment'),
655
+ 'price': this.safeNumber(market, 'quote_increment'),
656
+ },
657
+ 'limits': {
658
+ 'leverage': {
659
+ 'min': undefined,
660
+ 'max': undefined,
661
+ },
662
+ 'amount': {
663
+ 'min': undefined,
664
+ 'max': undefined,
665
+ },
666
+ 'price': {
667
+ 'min': undefined,
668
+ 'max': undefined,
669
+ },
670
+ 'cost': {
671
+ 'min': this.safeNumber(market, 'min_market_funds'),
672
+ 'max': undefined,
673
+ },
674
+ },
675
+ 'created': undefined,
676
+ 'info': market,
677
+ }));
678
+ }
679
+ return result;
680
+ }
681
+ /**
682
+ * @method
683
+ * @name coinbaseexchange#fetchAccounts
684
+ * @description fetch all the accounts associated with a profile
685
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
686
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
687
+ * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
688
+ */
689
+ async fetchAccounts(params = {}) {
690
+ await this.loadMarkets();
691
+ const response = await this.privateGetAccounts(params);
692
+ //
693
+ // [
694
+ // {
695
+ // "id": "4aac9c60-cbda-4396-9da4-4aa71e95fba0",
696
+ // "currency": "BTC",
697
+ // "balance": "0.0000000000000000",
698
+ // "available": "0",
699
+ // "hold": "0.0000000000000000",
700
+ // "profile_id": "b709263e-f42a-4c7d-949a-a95c83d065da"
701
+ // },
702
+ // {
703
+ // "id": "f75fa69a-1ad1-4a80-bd61-ee7faa6135a3",
704
+ // "currency": "USDC",
705
+ // "balance": "0.0000000000000000",
706
+ // "available": "0",
707
+ // "hold": "0.0000000000000000",
708
+ // "profile_id": "b709263e-f42a-4c7d-949a-a95c83d065da"
709
+ // },
710
+ // ]
711
+ //
712
+ return this.parseAccounts(response, params);
713
+ }
714
+ parseAccount(account) {
715
+ //
716
+ // {
717
+ // "id": "4aac9c60-cbda-4396-9da4-4aa71e95fba0",
718
+ // "currency": "BTC",
719
+ // "balance": "0.0000000000000000",
720
+ // "available": "0",
721
+ // "hold": "0.0000000000000000",
722
+ // "profile_id": "b709263e-f42a-4c7d-949a-a95c83d065da"
723
+ // }
724
+ //
725
+ const currencyId = this.safeString(account, 'currency');
726
+ return {
727
+ 'id': this.safeString(account, 'id'),
728
+ 'type': undefined,
729
+ 'code': this.safeCurrencyCode(currencyId),
730
+ 'info': account,
731
+ };
732
+ }
733
+ parseBalance(response) {
734
+ const result = { 'info': response };
735
+ for (let i = 0; i < response.length; i++) {
736
+ const balance = response[i];
737
+ const currencyId = this.safeString(balance, 'currency');
738
+ const code = this.safeCurrencyCode(currencyId);
739
+ const account = this.account();
740
+ account['free'] = this.safeString(balance, 'available');
741
+ account['used'] = this.safeString(balance, 'hold');
742
+ account['total'] = this.safeString(balance, 'balance');
743
+ result[code] = account;
744
+ }
745
+ return this.safeBalance(result);
746
+ }
747
+ /**
748
+ * @method
749
+ * @name coinbaseexchange#fetchBalance
750
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
751
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounts
752
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
753
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
754
+ */
755
+ async fetchBalance(params = {}) {
756
+ await this.loadMarkets();
757
+ const response = await this.privateGetAccounts(params);
758
+ return this.parseBalance(response);
759
+ }
760
+ /**
761
+ * @method
762
+ * @name coinbaseexchange#fetchOrderBook
763
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductbook
764
+ * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
765
+ * @param {string} symbol unified symbol of the market to fetch the order book for
766
+ * @param {int} [limit] the maximum amount of order book entries to return
767
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
768
+ * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
769
+ */
770
+ async fetchOrderBook(symbol, limit = undefined, params = {}) {
771
+ await this.loadMarkets();
772
+ // level 1 - only the best bid and ask
773
+ // level 2 - top 50 bids and asks (aggregated)
774
+ // level 3 - full order book (non aggregated)
775
+ const request = {
776
+ 'id': this.marketId(symbol),
777
+ 'level': 2, // 1 best bidask, 2 aggregated, 3 full
778
+ };
779
+ const response = await this.publicGetProductsIdBook(this.extend(request, params));
780
+ //
781
+ // {
782
+ // "sequence":1924393896,
783
+ // "bids":[
784
+ // ["0.01825","24.34811287",2],
785
+ // ["0.01824","72.5463",3],
786
+ // ["0.01823","424.54298049",6],
787
+ // ],
788
+ // "asks":[
789
+ // ["0.01826","171.10414904",4],
790
+ // ["0.01827","22.60427028",1],
791
+ // ["0.01828","397.46018784",7],
792
+ // ]
793
+ // }
794
+ //
795
+ const orderbook = this.parseOrderBook(response, symbol);
796
+ orderbook['nonce'] = this.safeInteger(response, 'sequence');
797
+ return orderbook;
798
+ }
799
+ parseTicker(ticker, market = undefined) {
800
+ //
801
+ // fetchTickers
802
+ //
803
+ // [
804
+ // 1639472400, // timestamp
805
+ // 4.26, // low
806
+ // 4.38, // high
807
+ // 4.35, // open
808
+ // 4.27 // close
809
+ // ]
810
+ //
811
+ // fetchTicker
812
+ //
813
+ // publicGetProductsIdTicker
814
+ //
815
+ // {
816
+ // "trade_id":843439,
817
+ // "price":"0.997999",
818
+ // "size":"80.29769",
819
+ // "time":"2020-01-28T02:13:33.012523Z",
820
+ // "bid":"0.997094",
821
+ // "ask":"0.998",
822
+ // "volume":"1903188.03750000"
823
+ // }
824
+ //
825
+ // publicGetProductsIdStats
826
+ //
827
+ // {
828
+ // "open": "34.19000000",
829
+ // "high": "95.70000000",
830
+ // "low": "7.06000000",
831
+ // "volume": "2.41000000"
832
+ // }
833
+ //
834
+ let timestamp = undefined;
835
+ let bid = undefined;
836
+ let ask = undefined;
837
+ let last = undefined;
838
+ let high = undefined;
839
+ let low = undefined;
840
+ let open = undefined;
841
+ let volume = undefined;
842
+ const symbol = (market === undefined) ? undefined : market['symbol'];
843
+ if (Array.isArray(ticker)) {
844
+ last = this.safeString(ticker, 4);
845
+ timestamp = this.milliseconds();
846
+ }
847
+ else {
848
+ timestamp = this.parse8601(this.safeValue(ticker, 'time'));
849
+ bid = this.safeString(ticker, 'bid');
850
+ ask = this.safeString(ticker, 'ask');
851
+ high = this.safeString(ticker, 'high');
852
+ low = this.safeString(ticker, 'low');
853
+ open = this.safeString(ticker, 'open');
854
+ last = this.safeString2(ticker, 'price', 'last');
855
+ volume = this.safeString(ticker, 'volume');
856
+ }
857
+ return this.safeTicker({
858
+ 'symbol': symbol,
859
+ 'timestamp': timestamp,
860
+ 'datetime': this.iso8601(timestamp),
861
+ 'high': high,
862
+ 'low': low,
863
+ 'bid': bid,
864
+ 'bidVolume': undefined,
865
+ 'ask': ask,
866
+ 'askVolume': undefined,
867
+ 'vwap': undefined,
868
+ 'open': open,
869
+ 'close': last,
870
+ 'last': last,
871
+ 'previousClose': undefined,
872
+ 'change': undefined,
873
+ 'percentage': undefined,
874
+ 'average': undefined,
875
+ 'baseVolume': volume,
876
+ 'quoteVolume': undefined,
877
+ 'info': ticker,
878
+ }, market);
879
+ }
880
+ /**
881
+ * @method
882
+ * @name coinbaseexchange#fetchTickers
883
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
884
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproduct
885
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
886
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
887
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
888
+ */
889
+ async fetchTickers(symbols = undefined, params = {}) {
890
+ await this.loadMarkets();
891
+ symbols = this.marketSymbols(symbols);
892
+ const request = {};
893
+ const response = await this.publicGetProductsSparkLines(this.extend(request, params));
894
+ //
895
+ // {
896
+ // YYY-USD: [
897
+ // [
898
+ // 1639472400, // timestamp
899
+ // 4.26, // low
900
+ // 4.38, // high
901
+ // 4.35, // open
902
+ // 4.27 // close
903
+ // ],
904
+ // [
905
+ // 1639468800,
906
+ // 4.31,
907
+ // 4.45,
908
+ // 4.35,
909
+ // 4.35
910
+ // ],
911
+ // ]
912
+ // }
913
+ //
914
+ const result = {};
915
+ const marketIds = Object.keys(response);
916
+ const delimiter = '-';
917
+ for (let i = 0; i < marketIds.length; i++) {
918
+ const marketId = marketIds[i];
919
+ const entry = this.safeValue(response, marketId, []);
920
+ const first = this.safeValue(entry, 0, []);
921
+ const market = this.safeMarket(marketId, undefined, delimiter);
922
+ const symbol = market['symbol'];
923
+ result[symbol] = this.parseTicker(first, market);
924
+ }
925
+ return this.filterByArrayTickers(result, 'symbol', symbols);
926
+ }
927
+ /**
928
+ * @method
929
+ * @name coinbaseexchange#fetchTicker
930
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductticker
931
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
932
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
933
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
934
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
935
+ */
936
+ async fetchTicker(symbol, params = {}) {
937
+ await this.loadMarkets();
938
+ const market = this.market(symbol);
939
+ const request = {
940
+ 'id': market['id'],
941
+ };
942
+ // publicGetProductsIdTicker or publicGetProductsIdStats
943
+ const method = this.safeString(this.options, 'fetchTickerMethod', 'publicGetProductsIdTicker');
944
+ const response = await this[method](this.extend(request, params));
945
+ //
946
+ // publicGetProductsIdTicker
947
+ //
948
+ // {
949
+ // "trade_id":843439,
950
+ // "price":"0.997999",
951
+ // "size":"80.29769",
952
+ // "time":"2020-01-28T02:13:33.012523Z",
953
+ // "bid":"0.997094",
954
+ // "ask":"0.998",
955
+ // "volume":"1903188.03750000"
956
+ // }
957
+ //
958
+ // publicGetProductsIdStats
959
+ //
960
+ // {
961
+ // "open": "34.19000000",
962
+ // "high": "95.70000000",
963
+ // "low": "7.06000000",
964
+ // "volume": "2.41000000"
965
+ // }
966
+ //
967
+ return this.parseTicker(response, market);
968
+ }
969
+ parseTrade(trade, market = undefined) {
970
+ //
971
+ // {
972
+ // "type": "match",
973
+ // "trade_id": 82047307,
974
+ // "maker_order_id": "0f358725-2134-435e-be11-753912a326e0",
975
+ // "taker_order_id": "252b7002-87a3-425c-ac73-f5b9e23f3caf",
976
+ // "order_id": "d50ec984-77a8-460a-b958-66f114b0de9b",
977
+ // "side": "sell",
978
+ // "size": "0.00513192",
979
+ // "price": "9314.78",
980
+ // "product_id": "BTC-USD",
981
+ // "profile_id": "6244401d-c078-40d9-b305-7ad3551bc3b0",
982
+ // "sequence": 12038915443,
983
+ // "time": "2020-01-31T20:03:41.158814Z"
984
+ // "created_at": "2014-11-07T22:19:28.578544Z",
985
+ // "liquidity": "T",
986
+ // "fee": "0.00025",
987
+ // "settled": true,
988
+ // "usd_volume": "0.0924556000000000",
989
+ // "user_id": "595eb864313c2b02ddf2937d"
990
+ // }
991
+ //
992
+ const timestamp = this.parse8601(this.safeString2(trade, 'time', 'created_at'));
993
+ const marketId = this.safeString(trade, 'product_id');
994
+ market = this.safeMarket(marketId, market, '-');
995
+ let feeRate = undefined;
996
+ let takerOrMaker = undefined;
997
+ let cost = undefined;
998
+ const feeCurrencyId = this.safeStringLower(market, 'quoteId');
999
+ if (feeCurrencyId !== undefined) {
1000
+ const costField = feeCurrencyId + '_value';
1001
+ cost = this.safeString(trade, costField);
1002
+ const liquidity = this.safeString(trade, 'liquidity');
1003
+ if (liquidity !== undefined) {
1004
+ takerOrMaker = (liquidity === 'T') ? 'taker' : 'maker';
1005
+ feeRate = this.safeString(market, takerOrMaker);
1006
+ }
1007
+ }
1008
+ const feeCost = this.safeString2(trade, 'fill_fees', 'fee');
1009
+ const fee = {
1010
+ 'cost': feeCost,
1011
+ 'currency': market['quote'],
1012
+ 'rate': feeRate,
1013
+ };
1014
+ const id = this.safeString(trade, 'trade_id');
1015
+ let side = (trade['side'] === 'buy') ? 'sell' : 'buy';
1016
+ const orderId = this.safeString(trade, 'order_id');
1017
+ // Coinbase Pro returns inverted side to fetchMyTrades vs fetchTrades
1018
+ const makerOrderId = this.safeString(trade, 'maker_order_id');
1019
+ const takerOrderId = this.safeString(trade, 'taker_order_id');
1020
+ if ((orderId !== undefined) || ((makerOrderId !== undefined) && (takerOrderId !== undefined))) {
1021
+ side = (trade['side'] === 'buy') ? 'buy' : 'sell';
1022
+ }
1023
+ const price = this.safeString(trade, 'price');
1024
+ const amount = this.safeString(trade, 'size');
1025
+ return this.safeTrade({
1026
+ 'id': id,
1027
+ 'order': orderId,
1028
+ 'info': trade,
1029
+ 'timestamp': timestamp,
1030
+ 'datetime': this.iso8601(timestamp),
1031
+ 'symbol': market['symbol'],
1032
+ 'type': undefined,
1033
+ 'takerOrMaker': takerOrMaker,
1034
+ 'side': side,
1035
+ 'price': price,
1036
+ 'amount': amount,
1037
+ 'fee': fee,
1038
+ 'cost': cost,
1039
+ }, market);
1040
+ }
1041
+ /**
1042
+ * @method
1043
+ * @name coinbaseexchange#fetchMyTrades
1044
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfills
1045
+ * @description fetch all trades made by the user
1046
+ * @param {string} symbol unified market symbol
1047
+ * @param {int} [since] the earliest time in ms to fetch trades for
1048
+ * @param {int} [limit] the maximum number of trades structures to retrieve
1049
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1050
+ * @param {int} [params.until] the latest time in ms to fetch trades for
1051
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1052
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1053
+ */
1054
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1055
+ if (symbol === undefined) {
1056
+ throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
1057
+ }
1058
+ let paginate = false;
1059
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'paginate');
1060
+ if (paginate) {
1061
+ return await this.fetchPaginatedCallDynamic('fetchMyTrades', symbol, since, limit, params, 100);
1062
+ }
1063
+ await this.loadMarkets();
1064
+ const market = this.market(symbol);
1065
+ const request = {
1066
+ 'product_id': market['id'],
1067
+ };
1068
+ if (limit !== undefined) {
1069
+ request['limit'] = limit;
1070
+ }
1071
+ if (since !== undefined) {
1072
+ request['start_date'] = this.iso8601(since);
1073
+ }
1074
+ const until = this.safeValue2(params, 'until', 'end_date');
1075
+ if (until !== undefined) {
1076
+ params = this.omit(params, ['until']);
1077
+ request['end_date'] = this.iso8601(until);
1078
+ }
1079
+ const response = await this.privateGetFills(this.extend(request, params));
1080
+ return this.parseTrades(response, market, since, limit);
1081
+ }
1082
+ /**
1083
+ * @method
1084
+ * @name coinbaseexchange#fetchTrades
1085
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproducttrades
1086
+ * @description get the list of most recent trades for a particular symbol
1087
+ * @param {string} symbol unified symbol of the market to fetch trades for
1088
+ * @param {int} [since] timestamp in ms of the earliest trade to fetch
1089
+ * @param {int} [limit] the maximum amount of trades to fetch
1090
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1091
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
1092
+ */
1093
+ async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
1094
+ await this.loadMarkets();
1095
+ const market = this.market(symbol);
1096
+ const request = {
1097
+ 'id': market['id'], // fixes issue #2
1098
+ };
1099
+ if (limit !== undefined) {
1100
+ request['limit'] = limit; // default 100
1101
+ }
1102
+ const response = await this.publicGetProductsIdTrades(this.extend(request, params));
1103
+ //
1104
+ // [
1105
+ // {
1106
+ // "trade_id": "15035219",
1107
+ // "side": "sell",
1108
+ // "size": "0.27426731",
1109
+ // "price": "25820.42000000",
1110
+ // "time": "2023-09-10T13:47:41.447577Z"
1111
+ // },
1112
+ // ]
1113
+ //
1114
+ return this.parseTrades(response, market, since, limit);
1115
+ }
1116
+ /**
1117
+ * @method
1118
+ * @name coinbaseexchange#fetchTradingFees
1119
+ * @description fetch the trading fees for multiple markets
1120
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getfees
1121
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1122
+ * @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
1123
+ */
1124
+ async fetchTradingFees(params = {}) {
1125
+ await this.loadMarkets();
1126
+ const response = await this.privateGetFees(params);
1127
+ //
1128
+ // {
1129
+ // "maker_fee_rate": "0.0050",
1130
+ // "taker_fee_rate": "0.0050",
1131
+ // "usd_volume": "43806.92"
1132
+ // }
1133
+ //
1134
+ const maker = this.safeNumber(response, 'maker_fee_rate');
1135
+ const taker = this.safeNumber(response, 'taker_fee_rate');
1136
+ const result = {};
1137
+ for (let i = 0; i < this.symbols.length; i++) {
1138
+ const symbol = this.symbols[i];
1139
+ result[symbol] = {
1140
+ 'info': response,
1141
+ 'symbol': symbol,
1142
+ 'maker': maker,
1143
+ 'taker': taker,
1144
+ 'percentage': true,
1145
+ 'tierBased': true,
1146
+ };
1147
+ }
1148
+ return result;
1149
+ }
1150
+ parseOHLCV(ohlcv, market = undefined) {
1151
+ //
1152
+ // [
1153
+ // 1591514160,
1154
+ // 0.02507,
1155
+ // 0.02507,
1156
+ // 0.02507,
1157
+ // 0.02507,
1158
+ // 0.02816506
1159
+ // ]
1160
+ //
1161
+ return [
1162
+ this.safeTimestamp(ohlcv, 0),
1163
+ this.safeNumber(ohlcv, 3),
1164
+ this.safeNumber(ohlcv, 2),
1165
+ this.safeNumber(ohlcv, 1),
1166
+ this.safeNumber(ohlcv, 4),
1167
+ this.safeNumber(ohlcv, 5),
1168
+ ];
1169
+ }
1170
+ /**
1171
+ * @method
1172
+ * @name coinbaseexchange#fetchOHLCV
1173
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductcandles
1174
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1175
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
1176
+ * @param {string} timeframe the length of time each candle represents
1177
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
1178
+ * @param {int} [limit] the maximum amount of candles to fetch
1179
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1180
+ * @param {int} [params.until] the latest time in ms to fetch trades for
1181
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1182
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
1183
+ */
1184
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = undefined, params = {}) {
1185
+ await this.loadMarkets();
1186
+ let paginate = false;
1187
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate', false);
1188
+ if (paginate) {
1189
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 300);
1190
+ }
1191
+ const market = this.market(symbol);
1192
+ const parsedTimeframe = this.safeInteger(this.timeframes, timeframe);
1193
+ const request = {
1194
+ 'id': market['id'],
1195
+ };
1196
+ if (parsedTimeframe !== undefined) {
1197
+ request['granularity'] = parsedTimeframe;
1198
+ }
1199
+ else {
1200
+ request['granularity'] = timeframe;
1201
+ }
1202
+ const until = this.safeValue2(params, 'until', 'end');
1203
+ params = this.omit(params, ['until']);
1204
+ if (since !== undefined) {
1205
+ request['start'] = this.iso8601(since);
1206
+ if (limit === undefined) {
1207
+ // https://docs.pro.coinbase.com/#get-historic-rates
1208
+ limit = 300; // max = 300
1209
+ }
1210
+ else {
1211
+ limit = Math.min(300, limit);
1212
+ }
1213
+ if (until === undefined) {
1214
+ const parsedTimeframeMilliseconds = parsedTimeframe * 1000;
1215
+ if (this.isRoundNumber(since % parsedTimeframeMilliseconds)) {
1216
+ request['end'] = this.iso8601(this.sum((limit - 1) * parsedTimeframeMilliseconds, since));
1217
+ }
1218
+ else {
1219
+ request['end'] = this.iso8601(this.sum(limit * parsedTimeframeMilliseconds, since));
1220
+ }
1221
+ }
1222
+ else {
1223
+ request['end'] = this.iso8601(until);
1224
+ }
1225
+ }
1226
+ const response = await this.publicGetProductsIdCandles(this.extend(request, params));
1227
+ //
1228
+ // [
1229
+ // [1591514160,0.02507,0.02507,0.02507,0.02507,0.02816506],
1230
+ // [1591514100,0.02507,0.02507,0.02507,0.02507,1.63830323],
1231
+ // [1591514040,0.02505,0.02507,0.02505,0.02507,0.19918178]
1232
+ // ]
1233
+ //
1234
+ return this.parseOHLCVs(response, market, timeframe, since, limit);
1235
+ }
1236
+ /**
1237
+ * @method
1238
+ * @name coinbaseexchange#fetchTime
1239
+ * @description fetches the current integer timestamp in milliseconds from the exchange server
1240
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1241
+ * @returns {int} the current integer timestamp in milliseconds from the exchange server
1242
+ */
1243
+ async fetchTime(params = {}) {
1244
+ const response = await this.publicGetTime(params);
1245
+ //
1246
+ // {
1247
+ // "iso":"2020-05-12T08:00:51.504Z",
1248
+ // "epoch":1589270451.504
1249
+ // }
1250
+ //
1251
+ return this.safeTimestamp(response, 'epoch');
1252
+ }
1253
+ parseOrderStatus(status) {
1254
+ const statuses = {
1255
+ 'pending': 'open',
1256
+ 'active': 'open',
1257
+ 'open': 'open',
1258
+ 'done': 'closed',
1259
+ 'canceled': 'canceled',
1260
+ 'canceling': 'open',
1261
+ };
1262
+ return this.safeString(statuses, status, status);
1263
+ }
1264
+ parseOrder(order, market = undefined) {
1265
+ //
1266
+ // createOrder
1267
+ //
1268
+ // {
1269
+ // "id": "d0c5340b-6d6c-49d9-b567-48c4bfca13d2",
1270
+ // "price": "0.10000000",
1271
+ // "size": "0.01000000",
1272
+ // "product_id": "BTC-USD",
1273
+ // "side": "buy",
1274
+ // "stp": "dc",
1275
+ // "type": "limit",
1276
+ // "time_in_force": "GTC",
1277
+ // "post_only": false,
1278
+ // "created_at": "2016-12-08T20:02:28.53864Z",
1279
+ // "fill_fees": "0.0000000000000000",
1280
+ // "filled_size": "0.00000000",
1281
+ // "executed_value": "0.0000000000000000",
1282
+ // "status": "pending",
1283
+ // "settled": false
1284
+ // }
1285
+ //
1286
+ const timestamp = this.parse8601(this.safeString(order, 'created_at'));
1287
+ const marketId = this.safeString(order, 'product_id');
1288
+ market = this.safeMarket(marketId, market, '-');
1289
+ let status = this.parseOrderStatus(this.safeString(order, 'status'));
1290
+ const doneReason = this.safeString(order, 'done_reason');
1291
+ if ((status === 'closed') && (doneReason === 'canceled')) {
1292
+ status = 'canceled';
1293
+ }
1294
+ const price = this.safeString(order, 'price');
1295
+ const filled = this.safeString(order, 'filled_size');
1296
+ const amount = this.safeString(order, 'size', filled);
1297
+ const cost = this.safeString(order, 'executed_value');
1298
+ const feeCost = this.safeNumber(order, 'fill_fees');
1299
+ let fee = undefined;
1300
+ if (feeCost !== undefined) {
1301
+ fee = {
1302
+ 'cost': feeCost,
1303
+ 'currency': market['quote'],
1304
+ 'rate': undefined,
1305
+ };
1306
+ }
1307
+ const id = this.safeString(order, 'id');
1308
+ const type = this.safeString(order, 'type');
1309
+ const side = this.safeString(order, 'side');
1310
+ const timeInForce = this.safeString(order, 'time_in_force');
1311
+ const postOnly = this.safeValue(order, 'post_only');
1312
+ const triggerPrice = this.safeNumber(order, 'stop_price');
1313
+ const clientOrderId = this.safeString(order, 'client_oid');
1314
+ return this.safeOrder({
1315
+ 'id': id,
1316
+ 'clientOrderId': clientOrderId,
1317
+ 'info': order,
1318
+ 'timestamp': timestamp,
1319
+ 'datetime': this.iso8601(timestamp),
1320
+ 'lastTradeTimestamp': undefined,
1321
+ 'status': status,
1322
+ 'symbol': market['symbol'],
1323
+ 'type': type,
1324
+ 'timeInForce': timeInForce,
1325
+ 'postOnly': postOnly,
1326
+ 'side': side,
1327
+ 'price': price,
1328
+ 'triggerPrice': triggerPrice,
1329
+ 'cost': cost,
1330
+ 'amount': amount,
1331
+ 'filled': filled,
1332
+ 'remaining': undefined,
1333
+ 'fee': fee,
1334
+ 'average': undefined,
1335
+ 'trades': undefined,
1336
+ }, market);
1337
+ }
1338
+ /**
1339
+ * @method
1340
+ * @name coinbaseexchange#fetchOrder
1341
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorder
1342
+ * @description fetches information on an order made by the user
1343
+ * @param {string} id the order id
1344
+ * @param {string} symbol not used by coinbaseexchange fetchOrder
1345
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1346
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1347
+ */
1348
+ async fetchOrder(id, symbol = undefined, params = {}) {
1349
+ await this.loadMarkets();
1350
+ const request = {};
1351
+ const clientOrderId = this.safeString2(params, 'clientOrderId', 'client_oid');
1352
+ let method = undefined;
1353
+ if (clientOrderId === undefined) {
1354
+ method = 'privateGetOrdersId';
1355
+ request['id'] = id;
1356
+ }
1357
+ else {
1358
+ method = 'privateGetOrdersClientClientOid';
1359
+ request['client_oid'] = clientOrderId;
1360
+ params = this.omit(params, ['clientOrderId', 'client_oid']);
1361
+ }
1362
+ const response = await this[method](this.extend(request, params));
1363
+ return this.parseOrder(response);
1364
+ }
1365
+ /**
1366
+ * @method
1367
+ * @name coinbaseexchange#fetchOrderTrades
1368
+ * @description fetch all the trades made from a single order
1369
+ * @param {string} id order id
1370
+ * @param {string} symbol unified market symbol
1371
+ * @param {int} [since] the earliest time in ms to fetch trades for
1372
+ * @param {int} [limit] the maximum number of trades to retrieve
1373
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1374
+ * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
1375
+ */
1376
+ async fetchOrderTrades(id, symbol = undefined, since = undefined, limit = undefined, params = {}) {
1377
+ await this.loadMarkets();
1378
+ let market = undefined;
1379
+ if (symbol !== undefined) {
1380
+ market = this.market(symbol);
1381
+ }
1382
+ const request = {
1383
+ 'order_id': id,
1384
+ };
1385
+ const response = await this.privateGetFills(this.extend(request, params));
1386
+ return this.parseTrades(response, market, since, limit);
1387
+ }
1388
+ /**
1389
+ * @method
1390
+ * @name coinbaseexchange#fetchOrders
1391
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1392
+ * @description fetches information on multiple orders made by the user
1393
+ * @param {string} symbol unified market symbol of the market orders were made in
1394
+ * @param {int} [since] the earliest time in ms to fetch orders for
1395
+ * @param {int} [limit] the maximum number of order structures to retrieve
1396
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1397
+ * @param {int} [params.until] the latest time in ms to fetch open orders for
1398
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1399
+ */
1400
+ async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1401
+ const request = {
1402
+ 'status': 'all',
1403
+ };
1404
+ return await this.fetchOpenOrders(symbol, since, limit, this.extend(request, params));
1405
+ }
1406
+ /**
1407
+ * @method
1408
+ * @name coinbaseexchange#fetchOpenOrders
1409
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1410
+ * @description fetch all unfilled currently open orders
1411
+ * @param {string} symbol unified market symbol
1412
+ * @param {int} [since] the earliest time in ms to fetch open orders for
1413
+ * @param {int} [limit] the maximum number of open orders structures to retrieve
1414
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1415
+ * @param {int} [params.until] the latest time in ms to fetch open orders for
1416
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
1417
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1418
+ */
1419
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1420
+ await this.loadMarkets();
1421
+ let paginate = false;
1422
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'paginate');
1423
+ if (paginate) {
1424
+ return await this.fetchPaginatedCallDynamic('fetchOpenOrders', symbol, since, limit, params, 100);
1425
+ }
1426
+ const request = {};
1427
+ let market = undefined;
1428
+ if (symbol !== undefined) {
1429
+ market = this.market(symbol);
1430
+ request['product_id'] = market['id'];
1431
+ }
1432
+ if (limit !== undefined) {
1433
+ request['limit'] = limit; // default 100
1434
+ }
1435
+ if (since !== undefined) {
1436
+ request['start_date'] = this.iso8601(since);
1437
+ }
1438
+ const until = this.safeValue2(params, 'until', 'end_date');
1439
+ if (until !== undefined) {
1440
+ params = this.omit(params, ['until']);
1441
+ request['end_date'] = this.iso8601(until);
1442
+ }
1443
+ const response = await this.privateGetOrders(this.extend(request, params));
1444
+ return this.parseOrders(response, market, since, limit);
1445
+ }
1446
+ /**
1447
+ * @method
1448
+ * @name coinbaseexchange#fetchClosedOrders
1449
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getorders
1450
+ * @description fetches information on multiple closed orders made by the user
1451
+ * @param {string} symbol unified market symbol of the market orders were made in
1452
+ * @param {int} [since] the earliest time in ms to fetch orders for
1453
+ * @param {int} [limit] the maximum number of order structures to retrieve
1454
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1455
+ * @param {int} [params.until] the latest time in ms to fetch open orders for
1456
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1457
+ */
1458
+ async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
1459
+ const request = {
1460
+ 'status': 'done',
1461
+ };
1462
+ return await this.fetchOpenOrders(symbol, since, limit, this.extend(request, params));
1463
+ }
1464
+ /**
1465
+ * @method
1466
+ * @name coinbaseexchange#createOrder
1467
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postorders
1468
+ * @description create a trade order
1469
+ * @param {string} symbol unified symbol of the market to create an order in
1470
+ * @param {string} type 'market' or 'limit'
1471
+ * @param {string} side 'buy' or 'sell'
1472
+ * @param {float} amount how much of currency you want to trade in units of base currency
1473
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1474
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1475
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1476
+ */
1477
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1478
+ await this.loadMarkets();
1479
+ const market = this.market(symbol);
1480
+ const request = {
1481
+ // common params --------------------------------------------------
1482
+ // 'client_oid': clientOrderId,
1483
+ 'type': type,
1484
+ 'side': side,
1485
+ 'product_id': market['id'],
1486
+ // 'size': this.amountToPrecision (symbol, amount),
1487
+ // 'stp': 'dc', // self-trade prevention, dc = decrease and cancel, co = cancel oldest, cn = cancel newest, cb = cancel both
1488
+ // 'stop': 'loss', // "loss" = stop loss below price, "entry" = take profit above price
1489
+ // 'stop_price': this.priceToPrecision (symbol, price),
1490
+ // limit order params ---------------------------------------------
1491
+ // 'price': this.priceToPrecision (symbol, price),
1492
+ // 'size': this.amountToPrecision (symbol, amount),
1493
+ // 'time_in_force': 'GTC', // GTC, GTT, IOC, or FOK
1494
+ // 'cancel_after' [optional]* min, hour, day, requires time_in_force to be GTT
1495
+ // 'post_only': false, // invalid when time_in_force is IOC or FOK
1496
+ // market order params --------------------------------------------
1497
+ // 'size': this.amountToPrecision (symbol, amount),
1498
+ // 'funds': this.costToPrecision (symbol, amount),
1499
+ };
1500
+ const clientOrderId = this.safeString2(params, 'clientOrderId', 'client_oid');
1501
+ if (clientOrderId !== undefined) {
1502
+ request['client_oid'] = clientOrderId;
1503
+ }
1504
+ const triggerPrice = this.safeNumberN(params, ['stopPrice', 'stop_price', 'triggerPrice']);
1505
+ if (triggerPrice !== undefined) {
1506
+ request['stop_price'] = this.priceToPrecision(symbol, triggerPrice);
1507
+ }
1508
+ const timeInForce = this.safeString2(params, 'timeInForce', 'time_in_force');
1509
+ if (timeInForce !== undefined) {
1510
+ request['time_in_force'] = timeInForce;
1511
+ }
1512
+ const postOnly = this.safeValue2(params, 'postOnly', 'post_only', false);
1513
+ if (postOnly) {
1514
+ request['post_only'] = true;
1515
+ }
1516
+ params = this.omit(params, ['timeInForce', 'time_in_force', 'stopPrice', 'stop_price', 'clientOrderId', 'client_oid', 'postOnly', 'post_only', 'triggerPrice']);
1517
+ if (type === 'limit') {
1518
+ request['price'] = this.priceToPrecision(symbol, price);
1519
+ request['size'] = this.amountToPrecision(symbol, amount);
1520
+ }
1521
+ else if (type === 'market') {
1522
+ let cost = this.safeNumber2(params, 'cost', 'funds');
1523
+ if (cost === undefined) {
1524
+ if (price !== undefined) {
1525
+ cost = amount * price;
1526
+ }
1527
+ }
1528
+ else {
1529
+ params = this.omit(params, ['cost', 'funds']);
1530
+ }
1531
+ if (cost !== undefined) {
1532
+ request['funds'] = this.costToPrecision(symbol, cost);
1533
+ }
1534
+ else {
1535
+ request['size'] = this.amountToPrecision(symbol, amount);
1536
+ }
1537
+ }
1538
+ const response = await this.privatePostOrders(this.extend(request, params));
1539
+ //
1540
+ // {
1541
+ // "id": "d0c5340b-6d6c-49d9-b567-48c4bfca13d2",
1542
+ // "price": "0.10000000",
1543
+ // "size": "0.01000000",
1544
+ // "product_id": "BTC-USD",
1545
+ // "side": "buy",
1546
+ // "stp": "dc",
1547
+ // "type": "limit",
1548
+ // "time_in_force": "GTC",
1549
+ // "post_only": false,
1550
+ // "created_at": "2016-12-08T20:02:28.53864Z",
1551
+ // "fill_fees": "0.0000000000000000",
1552
+ // "filled_size": "0.00000000",
1553
+ // "executed_value": "0.0000000000000000",
1554
+ // "status": "pending",
1555
+ // "settled": false
1556
+ // }
1557
+ //
1558
+ return this.parseOrder(response, market);
1559
+ }
1560
+ /**
1561
+ * @method
1562
+ * @name coinbaseexchange#cancelOrder
1563
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorder
1564
+ * @description cancels an open order
1565
+ * @param {string} id order id
1566
+ * @param {string} symbol unified symbol of the market the order was made in
1567
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1568
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1569
+ */
1570
+ async cancelOrder(id, symbol = undefined, params = {}) {
1571
+ await this.loadMarkets();
1572
+ const request = {
1573
+ // 'product_id': market['id'], // the request will be more performant if you include it
1574
+ };
1575
+ const clientOrderId = this.safeString2(params, 'clientOrderId', 'client_oid');
1576
+ let method = undefined;
1577
+ if (clientOrderId === undefined) {
1578
+ method = 'privateDeleteOrdersId';
1579
+ request['id'] = id;
1580
+ }
1581
+ else {
1582
+ method = 'privateDeleteOrdersClientClientOid';
1583
+ request['client_oid'] = clientOrderId;
1584
+ params = this.omit(params, ['clientOrderId', 'client_oid']);
1585
+ }
1586
+ let market = undefined;
1587
+ if (symbol !== undefined) {
1588
+ market = this.market(symbol);
1589
+ request['product_id'] = market['symbol']; // the request will be more performant if you include it
1590
+ }
1591
+ const response = await this[method](this.extend(request, params));
1592
+ return this.safeOrder({ 'info': response });
1593
+ }
1594
+ /**
1595
+ * @method
1596
+ * @name coinbaseexchange#cancelAllOrders
1597
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_deleteorders
1598
+ * @description cancel all open orders
1599
+ * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1600
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1601
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1602
+ */
1603
+ async cancelAllOrders(symbol = undefined, params = {}) {
1604
+ await this.loadMarkets();
1605
+ const request = {};
1606
+ let market = undefined;
1607
+ if (symbol !== undefined) {
1608
+ market = this.market(symbol);
1609
+ request['product_id'] = market['symbol']; // the request will be more performant if you include it
1610
+ }
1611
+ const response = await this.privateDeleteOrders(this.extend(request, params));
1612
+ return [this.safeOrder({ 'info': response })];
1613
+ }
1614
+ async fetchPaymentMethods(params = {}) {
1615
+ return await this.privateGetPaymentMethods(params);
1616
+ }
1617
+ /**
1618
+ * @method
1619
+ * @name coinbaseexchange#withdraw
1620
+ * @description make a withdrawal
1621
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawpaymentmethod
1622
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postwithdrawcoinbaseaccount
1623
+ * @param {string} code unified currency code
1624
+ * @param {float} amount the amount to withdraw
1625
+ * @param {string} address the address to withdraw to
1626
+ * @param {string} tag
1627
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1628
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1629
+ */
1630
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
1631
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
1632
+ this.checkAddress(address);
1633
+ await this.loadMarkets();
1634
+ const currency = this.currency(code);
1635
+ const request = {
1636
+ 'currency': currency['id'],
1637
+ 'amount': amount,
1638
+ };
1639
+ let method = 'privatePostWithdrawals';
1640
+ if ('payment_method_id' in params) {
1641
+ method += 'PaymentMethod';
1642
+ }
1643
+ else if ('coinbase_account_id' in params) {
1644
+ method += 'CoinbaseAccount';
1645
+ }
1646
+ else {
1647
+ method += 'Crypto';
1648
+ request['crypto_address'] = address;
1649
+ if (tag !== undefined) {
1650
+ request['destination_tag'] = tag;
1651
+ }
1652
+ }
1653
+ const response = await this[method](this.extend(request, params));
1654
+ if (!response) {
1655
+ throw new ExchangeError(this.id + ' withdraw() error: ' + this.json(response));
1656
+ }
1657
+ return this.parseTransaction(response, currency);
1658
+ }
1659
+ parseLedgerEntryType(type) {
1660
+ const types = {
1661
+ 'transfer': 'transfer',
1662
+ 'match': 'trade',
1663
+ 'fee': 'fee',
1664
+ 'rebate': 'rebate',
1665
+ 'conversion': 'trade', // Funds converted between fiat currency and a stablecoin
1666
+ };
1667
+ return this.safeString(types, type, type);
1668
+ }
1669
+ parseLedgerEntry(item, currency = undefined) {
1670
+ // {
1671
+ // "id": "12087495079",
1672
+ // "amount": "-0.0100000000000000",
1673
+ // "balance": "0.0645419900000000",
1674
+ // "created_at": "2021-10-28T17:14:32.593168Z",
1675
+ // "type": "transfer",
1676
+ // "details": {
1677
+ // "from": "2f74edf7-1440-4586-86dc-ae58c5693691",
1678
+ // "profile_transfer_id": "3ef093ad-2482-40d1-8ede-2f89cff5099e",
1679
+ // "to": "dda99503-4980-4b60-9549-0b770ee51336"
1680
+ // }
1681
+ // },
1682
+ // {
1683
+ // "id": "11740725774",
1684
+ // "amount": "-1.7565669701255000",
1685
+ // "balance": "0.0016490047745000",
1686
+ // "created_at": "2021-10-22T03:47:34.764122Z",
1687
+ // "type": "fee",
1688
+ // "details": {
1689
+ // "order_id": "ad06abf4-95ab-432a-a1d8-059ef572e296",
1690
+ // "product_id": "ETH-DAI",
1691
+ // "trade_id": "1740617"
1692
+ // }
1693
+ // }
1694
+ const id = this.safeString(item, 'id');
1695
+ let amountString = this.safeString(item, 'amount');
1696
+ let direction = undefined;
1697
+ const afterString = this.safeString(item, 'balance');
1698
+ const beforeString = Precise.stringSub(afterString, amountString);
1699
+ if (Precise.stringLt(amountString, '0')) {
1700
+ direction = 'out';
1701
+ amountString = Precise.stringAbs(amountString);
1702
+ }
1703
+ else {
1704
+ direction = 'in';
1705
+ }
1706
+ const amount = this.parseNumber(amountString);
1707
+ const after = this.parseNumber(afterString);
1708
+ const before = this.parseNumber(beforeString);
1709
+ const timestamp = this.parse8601(this.safeValue(item, 'created_at'));
1710
+ const type = this.parseLedgerEntryType(this.safeString(item, 'type'));
1711
+ const code = this.safeCurrencyCode(undefined, currency);
1712
+ const details = this.safeValue(item, 'details', {});
1713
+ let account = undefined;
1714
+ let referenceAccount = undefined;
1715
+ let referenceId = undefined;
1716
+ if (type === 'transfer') {
1717
+ account = this.safeString(details, 'from');
1718
+ referenceAccount = this.safeString(details, 'to');
1719
+ referenceId = this.safeString(details, 'profile_transfer_id');
1720
+ }
1721
+ else {
1722
+ referenceId = this.safeString(details, 'order_id');
1723
+ }
1724
+ const status = 'ok';
1725
+ return this.safeLedgerEntry({
1726
+ 'info': item,
1727
+ 'id': id,
1728
+ 'timestamp': timestamp,
1729
+ 'datetime': this.iso8601(timestamp),
1730
+ 'direction': direction,
1731
+ 'account': account,
1732
+ 'referenceAccount': referenceAccount,
1733
+ 'referenceId': referenceId,
1734
+ 'type': type,
1735
+ 'currency': code,
1736
+ 'amount': amount,
1737
+ 'before': before,
1738
+ 'after': after,
1739
+ 'status': status,
1740
+ 'fee': undefined,
1741
+ }, currency);
1742
+ }
1743
+ /**
1744
+ * @method
1745
+ * @name coinbaseexchange#fetchLedger
1746
+ * @description fetch the history of changes, actions done by the user or operations that altered the balance of the user
1747
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccountledger
1748
+ * @param {string} code unified currency code, default is undefined
1749
+ * @param {int} [since] timestamp in ms of the earliest ledger entry, default is undefined
1750
+ * @param {int} [limit] max number of ledger entries to return, default is undefined
1751
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1752
+ * @param {int} [params.until] the latest time in ms to fetch trades for
1753
+ * @returns {object} a [ledger structure]{@link https://docs.ccxt.com/#/?id=ledger}
1754
+ */
1755
+ async fetchLedger(code = undefined, since = undefined, limit = undefined, params = {}) {
1756
+ // https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccountledger
1757
+ if (code === undefined) {
1758
+ throw new ArgumentsRequired(this.id + ' fetchLedger() requires a code param');
1759
+ }
1760
+ await this.loadMarkets();
1761
+ await this.loadAccounts();
1762
+ const currency = this.currency(code);
1763
+ const accountsByCurrencyCode = this.indexBy(this.accounts, 'code');
1764
+ const account = this.safeValue(accountsByCurrencyCode, code);
1765
+ if (account === undefined) {
1766
+ throw new ExchangeError(this.id + ' fetchLedger() could not find account id for ' + code);
1767
+ }
1768
+ const request = {
1769
+ 'id': account['id'],
1770
+ // 'start_date': this.iso8601 (since),
1771
+ // 'end_date': this.iso8601 (this.milliseconds ()),
1772
+ // 'before': 'cursor', // sets start cursor to before date
1773
+ // 'after': 'cursor', // sets end cursor to after date
1774
+ // 'limit': limit, // default 100
1775
+ // 'profile_id': 'string'
1776
+ };
1777
+ if (since !== undefined) {
1778
+ request['start_date'] = this.iso8601(since);
1779
+ }
1780
+ if (limit !== undefined) {
1781
+ request['limit'] = limit; // default 100
1782
+ }
1783
+ const until = this.safeValue2(params, 'until', 'end_date');
1784
+ if (until !== undefined) {
1785
+ params = this.omit(params, ['until']);
1786
+ request['end_date'] = this.iso8601(until);
1787
+ }
1788
+ const response = await this.privateGetAccountsIdLedger(this.extend(request, params));
1789
+ for (let i = 0; i < response.length; i++) {
1790
+ response[i]['currency'] = code;
1791
+ }
1792
+ return this.parseLedger(response, currency, since, limit);
1793
+ }
1794
+ /**
1795
+ * @method
1796
+ * @name coinbaseexchange#fetchDepositsWithdrawals
1797
+ * @description fetch history of deposits and withdrawals
1798
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1799
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1800
+ * @param {string} [code] unified currency code for the currency of the deposit/withdrawals, default is undefined
1801
+ * @param {int} [since] timestamp in ms of the earliest deposit/withdrawal, default is undefined
1802
+ * @param {int} [limit] max number of deposit/withdrawals to return, default is undefined
1803
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1804
+ * @param {string} [params.id] account id, when defined, the endpoint used is '/accounts/{account_id}/transfers/' instead of '/transfers/'
1805
+ * @returns {object} a list of [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1806
+ */
1807
+ async fetchDepositsWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1808
+ await this.loadMarkets();
1809
+ await this.loadAccounts();
1810
+ let currency = undefined;
1811
+ let id = this.safeString(params, 'id'); // account id
1812
+ if (id === undefined) {
1813
+ if (code !== undefined) {
1814
+ currency = this.currency(code);
1815
+ const accountsByCurrencyCode = this.indexBy(this.accounts, 'code');
1816
+ const account = this.safeValue(accountsByCurrencyCode, code);
1817
+ if (account === undefined) {
1818
+ throw new ExchangeError(this.id + ' fetchDepositsWithdrawals() could not find account id for ' + code);
1819
+ }
1820
+ id = account['id'];
1821
+ }
1822
+ }
1823
+ const request = {};
1824
+ if (id !== undefined) {
1825
+ request['id'] = id;
1826
+ }
1827
+ if (limit !== undefined) {
1828
+ request['limit'] = limit;
1829
+ }
1830
+ let response = undefined;
1831
+ if (id === undefined) {
1832
+ response = await this.privateGetTransfers(this.extend(request, params));
1833
+ //
1834
+ // [
1835
+ // {
1836
+ // "id": "bee6fd7c-afb2-4e47-8298-671d09997d16",
1837
+ // "type": "deposit",
1838
+ // "created_at": "2022-12-21 00:48:45.477503+00",
1839
+ // "completed_at": null,
1840
+ // "account_id": "sal3802-36bd-46be-a7b8-alsjf383sldak",
1841
+ // "user_id": "6382048209f92as392039dlks2",
1842
+ // "amount": "0.01000000",
1843
+ // "details": {
1844
+ // "network": "litecoin",
1845
+ // "crypto_address": "MKemtnCFUYKsNWaf5EMYMpwSszcXWFDtTY",
1846
+ // "coinbase_account_id": "fl2b6925-f6ba-403n-jj03-40fl435n430f",
1847
+ // "coinbase_transaction_id": "63a25bb13cb5cf0001d2cf17", // withdrawals only
1848
+ // "crypto_transaction_hash": "752f35570736341e2a253f7041a34cf1e196fc56128c900fd03d99da899d94c1",
1849
+ // "tx_service_transaction_id": "1873249104",
1850
+ // "coinbase_payment_method_id": ""
1851
+ // },
1852
+ // "canceled_at": null,
1853
+ // "processed_at": null,
1854
+ // "user_nonce": null,
1855
+ // "idem": "5e3201b0-e390-5k3k-a913-c32932049242",
1856
+ // "profile_id": "k3k302a8-c4dk-4f49-9d39-3203923wpk39",
1857
+ // "currency": "LTC"
1858
+ // }
1859
+ // ]
1860
+ //
1861
+ for (let i = 0; i < response.length; i++) {
1862
+ const account_id = this.safeString(response[i], 'account_id');
1863
+ const account = this.safeValue(this.accountsById, account_id);
1864
+ const codeInner = this.safeString(account, 'code');
1865
+ response[i]['currency'] = codeInner;
1866
+ }
1867
+ }
1868
+ else {
1869
+ response = await this.privateGetAccountsIdTransfers(this.extend(request, params));
1870
+ //
1871
+ // [
1872
+ // {
1873
+ // "id": "bee6fd7c-afb2-4e47-8298-671d09997d16",
1874
+ // "type": "deposit",
1875
+ // "created_at": "2022-12-21 00:48:45.477503+00",
1876
+ // "completed_at": null,
1877
+ // "amount": "0.01000000",
1878
+ // "details": {
1879
+ // "network": "litecoin",
1880
+ // "crypto_address": "MKemtnCFUYKsNWaf5EMYMpwSszcXWFDtTY",
1881
+ // "coinbase_account_id": "fl2b6925-f6ba-403n-jj03-40fl435n430f",
1882
+ // "coinbase_transaction_id": "63a25bb13cb5cf0001d2cf17", // withdrawals only
1883
+ // "crypto_transaction_hash": "752f35570736341e2a253f7041a34cf1e196fc56128c900fd03d99da899d94c1",
1884
+ // "tx_service_transaction_id": "1873249104",
1885
+ // "coinbase_payment_method_id": ""
1886
+ // },
1887
+ // "canceled_at": null,
1888
+ // "processed_at": null,
1889
+ // "user_nonce": null,
1890
+ // "idem": "5e3201b0-e390-5k3k-a913-c32932049242",
1891
+ // "profile_id": "k3k302a8-c4dk-4f49-9d39-3203923wpk39",
1892
+ // "currency": "LTC"
1893
+ // }
1894
+ // ]
1895
+ //
1896
+ for (let i = 0; i < response.length; i++) {
1897
+ response[i]['currency'] = code;
1898
+ }
1899
+ }
1900
+ return this.parseTransactions(response, currency, since, limit);
1901
+ }
1902
+ /**
1903
+ * @method
1904
+ * @name coinbaseexchange#fetchDeposits
1905
+ * @description fetch all deposits made to an account
1906
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1907
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1908
+ * @param {string} code unified currency code
1909
+ * @param {int} [since] the earliest time in ms to fetch deposits for
1910
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
1911
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1912
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1913
+ */
1914
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1915
+ return await this.fetchDepositsWithdrawals(code, since, limit, this.extend({ 'type': 'deposit' }, params));
1916
+ }
1917
+ /**
1918
+ * @method
1919
+ * @name coinbaseexchange#fetchWithdrawals
1920
+ * @description fetch all withdrawals made from an account
1921
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_gettransfers
1922
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getaccounttransfers
1923
+ * @param {string} code unified currency code
1924
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
1925
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1926
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1927
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1928
+ */
1929
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1930
+ return await this.fetchDepositsWithdrawals(code, since, limit, this.extend({ 'type': 'withdraw' }, params));
1931
+ }
1932
+ parseTransactionStatus(transaction) {
1933
+ const canceled = this.safeValue(transaction, 'canceled_at');
1934
+ if (canceled) {
1935
+ return 'canceled';
1936
+ }
1937
+ const processed = this.safeValue(transaction, 'processed_at');
1938
+ const completed = this.safeValue(transaction, 'completed_at');
1939
+ if (completed) {
1940
+ return 'ok';
1941
+ }
1942
+ else if (processed && !completed) {
1943
+ return 'failed';
1944
+ }
1945
+ else {
1946
+ return 'pending';
1947
+ }
1948
+ }
1949
+ parseTransaction(transaction, currency = undefined) {
1950
+ //
1951
+ // privateGetTransfers
1952
+ //
1953
+ // [
1954
+ // {
1955
+ // "id": "bee6fd7c-afb2-4e47-8298-671d09997d16",
1956
+ // "type": "deposit",
1957
+ // "created_at": "2022-12-21 00:48:45.477503+00",
1958
+ // "completed_at": null,
1959
+ // "account_id": "sal3802-36bd-46be-a7b8-alsjf383sldak", // only from privateGetTransfers
1960
+ // "user_id": "6382048209f92as392039dlks2", // only from privateGetTransfers
1961
+ // "amount": "0.01000000",
1962
+ // "details": {
1963
+ // "network": "litecoin",
1964
+ // "crypto_address": "MKemtnCFUYKsNWaf5EMYMpwSszcXWFDtTY",
1965
+ // "coinbase_account_id": "fl2b6925-f6ba-403n-jj03-40fl435n430f",
1966
+ // "coinbase_transaction_id": "63a25bb13cb5cf0001d2cf17", // withdrawals only
1967
+ // "crypto_transaction_hash": "752f35570736341e2a253f7041a34cf1e196fc56128c900fd03d99da899d94c1",
1968
+ // "tx_service_transaction_id": "1873249104",
1969
+ // "coinbase_payment_method_id": ""
1970
+ // },
1971
+ // "canceled_at": null,
1972
+ // "processed_at": null,
1973
+ // "user_nonce": null,
1974
+ // "idem": "5e3201b0-e390-5k3k-a913-c32932049242",
1975
+ // "profile_id": "k3k302a8-c4dk-4f49-9d39-3203923wpk39",
1976
+ // "currency": "LTC"
1977
+ // }
1978
+ // ]
1979
+ //
1980
+ const details = this.safeValue(transaction, 'details', {});
1981
+ const timestamp = this.parse8601(this.safeString(transaction, 'created_at'));
1982
+ const currencyId = this.safeString(transaction, 'currency');
1983
+ const code = this.safeCurrencyCode(currencyId, currency);
1984
+ let amount = this.safeNumber(transaction, 'amount');
1985
+ let type = this.safeString(transaction, 'type');
1986
+ let address = this.safeString(details, 'crypto_address');
1987
+ address = this.safeString(transaction, 'crypto_address', address);
1988
+ const fee = {
1989
+ 'currency': undefined,
1990
+ 'cost': undefined,
1991
+ 'rate': undefined,
1992
+ };
1993
+ if (type === 'withdraw') {
1994
+ type = 'withdrawal';
1995
+ address = this.safeString(details, 'sent_to_address', address);
1996
+ const feeCost = this.safeNumber(details, 'fee');
1997
+ if (feeCost !== undefined) {
1998
+ if (amount !== undefined) {
1999
+ amount -= feeCost;
2000
+ }
2001
+ fee['cost'] = feeCost;
2002
+ fee['currency'] = code;
2003
+ }
2004
+ }
2005
+ const networkId = this.safeString(details, 'network');
2006
+ return {
2007
+ 'info': transaction,
2008
+ 'id': this.safeString(transaction, 'id'),
2009
+ 'txid': this.safeString(details, 'crypto_transaction_hash'),
2010
+ 'type': type,
2011
+ 'currency': code,
2012
+ 'network': this.networkIdToCode(networkId),
2013
+ 'amount': amount,
2014
+ 'status': this.parseTransactionStatus(transaction),
2015
+ 'timestamp': timestamp,
2016
+ 'datetime': this.iso8601(timestamp),
2017
+ 'address': address,
2018
+ 'addressFrom': undefined,
2019
+ 'addressTo': this.safeString(details, 'crypto_address'),
2020
+ 'tag': this.safeString(details, 'destination_tag'),
2021
+ 'tagFrom': undefined,
2022
+ 'tagTo': undefined,
2023
+ 'updated': this.parse8601(this.safeString(transaction, 'processed_at')),
2024
+ 'comment': undefined,
2025
+ 'internal': false,
2026
+ 'fee': fee,
2027
+ };
2028
+ }
2029
+ /**
2030
+ * @method
2031
+ * @name coinbaseexchange#createDepositAddress
2032
+ * @description create a currency deposit address
2033
+ * @see https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_postcoinbaseaccountaddresses
2034
+ * @param {string} code unified currency code of the currency for the deposit address
2035
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2036
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
2037
+ */
2038
+ async createDepositAddress(code, params = {}) {
2039
+ await this.loadMarkets();
2040
+ const currency = this.currency(code);
2041
+ let accounts = this.safeValue(this.options, 'coinbaseAccounts');
2042
+ if (accounts === undefined) {
2043
+ accounts = await this.privateGetCoinbaseAccounts();
2044
+ this.options['coinbaseAccounts'] = accounts; // cache it
2045
+ this.options['coinbaseAccountsByCurrencyId'] = this.indexBy(accounts, 'currency');
2046
+ }
2047
+ const currencyId = currency['id'];
2048
+ const account = this.safeValue(this.options['coinbaseAccountsByCurrencyId'], currencyId);
2049
+ if (account === undefined) {
2050
+ // eslint-disable-next-line quotes
2051
+ throw new InvalidAddress(this.id + " createDepositAddress() could not find currency code " + code + " with id = " + currencyId + " in this.options['coinbaseAccountsByCurrencyId']");
2052
+ }
2053
+ const request = {
2054
+ 'id': account['id'],
2055
+ };
2056
+ const response = await this.privatePostCoinbaseAccountsIdAddresses(this.extend(request, params));
2057
+ const address = this.safeString(response, 'address');
2058
+ const tag = this.safeString(response, 'destination_tag');
2059
+ return {
2060
+ 'currency': code,
2061
+ 'address': this.checkAddress(address),
2062
+ 'network': undefined,
2063
+ 'tag': tag,
2064
+ 'info': response,
2065
+ };
2066
+ }
2067
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
2068
+ let request = '/' + this.implodeParams(path, params);
2069
+ const query = this.omit(params, this.extractParams(path));
2070
+ if (method === 'GET') {
2071
+ if (Object.keys(query).length) {
2072
+ request += '?' + this.urlencode(query);
2073
+ }
2074
+ }
2075
+ const url = this.implodeHostname(this.urls['api'][api]) + request;
2076
+ if (api === 'private') {
2077
+ this.checkRequiredCredentials();
2078
+ const nonce = this.nonce().toString();
2079
+ let payload = '';
2080
+ if (method !== 'GET') {
2081
+ if (Object.keys(query).length) {
2082
+ body = this.json(query);
2083
+ payload = body;
2084
+ }
2085
+ }
2086
+ const what = nonce + method + request + payload;
2087
+ let secret = undefined;
2088
+ try {
2089
+ secret = this.base64ToBinary(this.secret);
2090
+ }
2091
+ catch (e) {
2092
+ throw new AuthenticationError(this.id + ' sign() invalid base64 secret');
2093
+ }
2094
+ const signature = this.hmac(this.encode(what), secret, sha256, 'base64');
2095
+ headers = {
2096
+ 'CB-ACCESS-KEY': this.apiKey,
2097
+ 'CB-ACCESS-SIGN': signature,
2098
+ 'CB-ACCESS-TIMESTAMP': nonce,
2099
+ 'CB-ACCESS-PASSPHRASE': this.password,
2100
+ 'Content-Type': 'application/json',
2101
+ };
2102
+ }
2103
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2104
+ }
2105
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2106
+ if ((code === 400) || (code === 404)) {
2107
+ if (body[0] === '{') {
2108
+ const message = this.safeString(response, 'message');
2109
+ const feedback = this.id + ' ' + message;
2110
+ this.throwExactlyMatchedException(this.exceptions['exact'], message, feedback);
2111
+ this.throwBroadlyMatchedException(this.exceptions['broad'], message, feedback);
2112
+ throw new ExchangeError(feedback); // unknown message
2113
+ }
2114
+ throw new ExchangeError(this.id + ' ' + body);
2115
+ }
2116
+ return undefined;
2117
+ }
2118
+ async request(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined, config = {}) {
2119
+ const response = await this.fetch2(path, api, method, params, headers, body, config);
2120
+ if (typeof response !== 'string') {
2121
+ if ('message' in response) {
2122
+ throw new ExchangeError(this.id + ' ' + this.json(response));
2123
+ }
2124
+ }
2125
+ return response;
2126
+ }
2127
+ }