ccxt-ir 4.10.0 → 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 (1047) hide show
  1. package/README.md +4 -4
  2. package/dist/ccxt.browser.min.js +2 -2
  3. package/dist/cjs/ccxt.js +4 -1
  4. package/dist/cjs/src/abstract/bidarz.js +11 -0
  5. package/dist/cjs/src/bidarz.js +337 -0
  6. package/dist/cjs/src/bit24.js +4 -3
  7. package/js/ccxt.d.ts +5 -2
  8. package/js/ccxt.js +4 -2
  9. package/js/src/abstract/bidarz.d.ts +9 -0
  10. package/js/src/abstract/bidarz.js +11 -0
  11. package/js/src/bidarz.d.ts +22 -0
  12. package/js/src/bidarz.js +336 -0
  13. package/js/src/bit24.js +4 -3
  14. package/js/src/src/abantether.d.ts +21 -0
  15. package/js/src/src/abantether.js +353 -0
  16. package/js/src/src/abstract/abantether.d.ts +8 -0
  17. package/js/src/src/abstract/abantether.js +11 -0
  18. package/js/src/src/abstract/afratether.d.ts +9 -0
  19. package/js/src/src/abstract/afratether.js +11 -0
  20. package/js/src/src/abstract/alpaca.d.ts +77 -0
  21. package/js/src/src/abstract/alpaca.js +11 -0
  22. package/js/src/src/abstract/apex.d.ts +34 -0
  23. package/js/src/src/abstract/apex.js +11 -0
  24. package/js/src/src/abstract/arzinja.d.ts +8 -0
  25. package/js/src/src/abstract/arzinja.js +11 -0
  26. package/js/src/src/abstract/arzplus.d.ts +11 -0
  27. package/js/src/src/abstract/arzplus.js +11 -0
  28. package/js/src/src/abstract/ascendex.d.ts +80 -0
  29. package/js/src/src/abstract/ascendex.js +11 -0
  30. package/js/src/src/abstract/asretether.d.ts +8 -0
  31. package/js/src/src/abstract/asretether.js +11 -0
  32. package/js/src/src/abstract/bidarz.d.ts +9 -0
  33. package/js/src/src/abstract/bidarz.js +11 -0
  34. package/js/src/src/abstract/bigone.d.ts +48 -0
  35. package/js/src/src/abstract/bigone.js +11 -0
  36. package/js/src/src/abstract/binance.d.ts +773 -0
  37. package/js/src/src/abstract/binance.js +11 -0
  38. package/js/src/src/abstract/bingx.d.ts +165 -0
  39. package/js/src/src/abstract/bingx.js +11 -0
  40. package/js/src/src/abstract/bit24.d.ts +9 -0
  41. package/js/src/src/abstract/bit24.js +11 -0
  42. package/js/src/src/abstract/bit2c.d.ts +30 -0
  43. package/js/src/src/abstract/bit2c.js +11 -0
  44. package/js/src/src/abstract/bitbank.d.ts +35 -0
  45. package/js/src/src/abstract/bitbank.js +11 -0
  46. package/js/src/src/abstract/bitbarg.d.ts +8 -0
  47. package/js/src/src/abstract/bitbarg.js +11 -0
  48. package/js/src/src/abstract/bitbns.d.ts +43 -0
  49. package/js/src/src/abstract/bitbns.js +11 -0
  50. package/js/src/src/abstract/bitfinex.d.ts +143 -0
  51. package/js/src/src/abstract/bitfinex.js +11 -0
  52. package/js/src/src/abstract/bitflyer.d.ts +42 -0
  53. package/js/src/src/abstract/bitflyer.js +11 -0
  54. package/js/src/src/abstract/bitget.d.ts +578 -0
  55. package/js/src/src/abstract/bitget.js +11 -0
  56. package/js/src/src/abstract/bithumb.d.ts +35 -0
  57. package/js/src/src/abstract/bithumb.js +11 -0
  58. package/js/src/src/abstract/bitimen.d.ts +10 -0
  59. package/js/src/src/abstract/bitimen.js +11 -0
  60. package/js/src/src/abstract/bitir.d.ts +10 -0
  61. package/js/src/src/abstract/bitir.js +11 -0
  62. package/js/src/src/abstract/bitmart.d.ts +120 -0
  63. package/js/src/src/abstract/bitmart.js +11 -0
  64. package/js/src/src/abstract/bitmex.d.ts +100 -0
  65. package/js/src/src/abstract/bitmex.js +11 -0
  66. package/js/src/src/abstract/bitopro.d.ts +33 -0
  67. package/js/src/src/abstract/bitopro.js +11 -0
  68. package/js/src/src/abstract/bitpin.d.ts +11 -0
  69. package/js/src/src/abstract/bitpin.js +11 -0
  70. package/js/src/src/abstract/bitrue.d.ts +75 -0
  71. package/js/src/src/abstract/bitrue.js +11 -0
  72. package/js/src/src/abstract/bitso.d.ts +46 -0
  73. package/js/src/src/abstract/bitso.js +11 -0
  74. package/js/src/src/abstract/bitstamp.d.ts +262 -0
  75. package/js/src/src/abstract/bitstamp.js +11 -0
  76. package/js/src/src/abstract/bitteam.d.ts +32 -0
  77. package/js/src/src/abstract/bitteam.js +11 -0
  78. package/js/src/src/abstract/bittrade.d.ts +117 -0
  79. package/js/src/src/abstract/bittrade.js +11 -0
  80. package/js/src/src/abstract/bitunix.d.ts +9 -0
  81. package/js/src/src/abstract/bitunix.js +11 -0
  82. package/js/src/src/abstract/bitvavo.d.ts +30 -0
  83. package/js/src/src/abstract/bitvavo.js +11 -0
  84. package/js/src/src/abstract/blockchaincom.d.ts +31 -0
  85. package/js/src/src/abstract/blockchaincom.js +11 -0
  86. package/js/src/src/abstract/blofin.d.ts +70 -0
  87. package/js/src/src/abstract/blofin.js +11 -0
  88. package/js/src/src/abstract/btcalpha.d.ts +21 -0
  89. package/js/src/src/abstract/btcalpha.js +11 -0
  90. package/js/src/src/abstract/btcbox.d.ts +18 -0
  91. package/js/src/src/abstract/btcbox.js +11 -0
  92. package/js/src/src/abstract/btcmarkets.d.ts +42 -0
  93. package/js/src/src/abstract/btcmarkets.js +11 -0
  94. package/js/src/src/abstract/btcturk.d.ts +23 -0
  95. package/js/src/src/abstract/btcturk.js +11 -0
  96. package/js/src/src/abstract/bybit.d.ts +316 -0
  97. package/js/src/src/abstract/bybit.js +11 -0
  98. package/js/src/src/abstract/bydfi.d.ts +11 -0
  99. package/js/src/src/abstract/bydfi.js +11 -0
  100. package/js/src/src/abstract/cafearz.d.ts +8 -0
  101. package/js/src/src/abstract/cafearz.js +11 -0
  102. package/js/src/src/abstract/cex.d.ts +35 -0
  103. package/js/src/src/abstract/cex.js +11 -0
  104. package/js/src/src/abstract/coinbase.d.ts +97 -0
  105. package/js/src/src/abstract/coinbase.js +11 -0
  106. package/js/src/src/abstract/coinbaseexchange.d.ts +71 -0
  107. package/js/src/src/abstract/coinbaseexchange.js +11 -0
  108. package/js/src/src/abstract/coinbaseinternational.d.ts +42 -0
  109. package/js/src/src/abstract/coinbaseinternational.js +11 -0
  110. package/js/src/src/abstract/coincatch.d.ts +97 -0
  111. package/js/src/src/abstract/coincatch.js +11 -0
  112. package/js/src/src/abstract/coincheck.d.ts +36 -0
  113. package/js/src/src/abstract/coincheck.js +11 -0
  114. package/js/src/src/abstract/coinex.d.ts +240 -0
  115. package/js/src/src/abstract/coinex.js +11 -0
  116. package/js/src/src/abstract/coinmate.d.ts +65 -0
  117. package/js/src/src/abstract/coinmate.js +11 -0
  118. package/js/src/src/abstract/coinmetro.d.ts +37 -0
  119. package/js/src/src/abstract/coinmetro.js +11 -0
  120. package/js/src/src/abstract/coinone.d.ts +70 -0
  121. package/js/src/src/abstract/coinone.js +11 -0
  122. package/js/src/src/abstract/coinsph.d.ts +57 -0
  123. package/js/src/src/abstract/coinsph.js +11 -0
  124. package/js/src/src/abstract/coinspot.d.ts +31 -0
  125. package/js/src/src/abstract/coinspot.js +11 -0
  126. package/js/src/src/abstract/cryptocom.d.ts +126 -0
  127. package/js/src/src/abstract/cryptocom.js +11 -0
  128. package/js/src/src/abstract/cryptomus.d.ts +23 -0
  129. package/js/src/src/abstract/cryptomus.js +11 -0
  130. package/js/src/src/abstract/defx.d.ts +72 -0
  131. package/js/src/src/abstract/defx.js +11 -0
  132. package/js/src/src/abstract/delta.d.ts +53 -0
  133. package/js/src/src/abstract/delta.js +11 -0
  134. package/js/src/src/abstract/deribit.d.ts +129 -0
  135. package/js/src/src/abstract/deribit.js +11 -0
  136. package/js/src/src/abstract/derive.d.ts +120 -0
  137. package/js/src/src/abstract/derive.js +11 -0
  138. package/js/src/src/abstract/digifinex.d.ts +95 -0
  139. package/js/src/src/abstract/digifinex.js +11 -0
  140. package/js/src/src/abstract/ellipx.d.ts +28 -0
  141. package/js/src/src/abstract/ellipx.js +11 -0
  142. package/js/src/src/abstract/eterex.d.ts +8 -0
  143. package/js/src/src/abstract/eterex.js +11 -0
  144. package/js/src/src/abstract/excoino.d.ts +10 -0
  145. package/js/src/src/abstract/excoino.js +11 -0
  146. package/js/src/src/abstract/exir.d.ts +11 -0
  147. package/js/src/src/abstract/exir.js +11 -0
  148. package/js/src/src/abstract/exmo.d.ts +58 -0
  149. package/js/src/src/abstract/exmo.js +11 -0
  150. package/js/src/src/abstract/exnovin.d.ts +9 -0
  151. package/js/src/src/abstract/exnovin.js +11 -0
  152. package/js/src/src/abstract/farhadexchange.d.ts +8 -0
  153. package/js/src/src/abstract/farhadexchange.js +11 -0
  154. package/js/src/src/abstract/foxbit.d.ts +29 -0
  155. package/js/src/src/abstract/foxbit.js +11 -0
  156. package/js/src/src/abstract/gate.d.ts +287 -0
  157. package/js/src/src/abstract/gate.js +11 -0
  158. package/js/src/src/abstract/gemini.d.ts +62 -0
  159. package/js/src/src/abstract/gemini.js +11 -0
  160. package/js/src/src/abstract/hamtapay.d.ts +9 -0
  161. package/js/src/src/abstract/hamtapay.js +11 -0
  162. package/js/src/src/abstract/hashkey.d.ts +70 -0
  163. package/js/src/src/abstract/hashkey.js +11 -0
  164. package/js/src/src/abstract/hibachi.d.ts +29 -0
  165. package/js/src/src/abstract/hibachi.js +11 -0
  166. package/js/src/src/abstract/hitbtc.d.ts +118 -0
  167. package/js/src/src/abstract/hitbtc.js +11 -0
  168. package/js/src/src/abstract/hitobit.d.ts +11 -0
  169. package/js/src/src/abstract/hitobit.js +11 -0
  170. package/js/src/src/abstract/hollaex.d.ts +36 -0
  171. package/js/src/src/abstract/hollaex.js +11 -0
  172. package/js/src/src/abstract/htx.d.ts +551 -0
  173. package/js/src/src/abstract/htx.js +11 -0
  174. package/js/src/src/abstract/hyperliquid.d.ts +9 -0
  175. package/js/src/src/abstract/hyperliquid.js +11 -0
  176. package/js/src/src/abstract/independentreserve.d.ts +46 -0
  177. package/js/src/src/abstract/independentreserve.js +11 -0
  178. package/js/src/src/abstract/indodax.d.ts +29 -0
  179. package/js/src/src/abstract/indodax.js +11 -0
  180. package/js/src/src/abstract/iranexchange.d.ts +9 -0
  181. package/js/src/src/abstract/iranexchange.js +11 -0
  182. package/js/src/src/abstract/jibitex.d.ts +10 -0
  183. package/js/src/src/abstract/jibitex.js +11 -0
  184. package/js/src/src/abstract/kcex.d.ts +10 -0
  185. package/js/src/src/abstract/kcex.js +11 -0
  186. package/js/src/src/abstract/kifpoolme.d.ts +9 -0
  187. package/js/src/src/abstract/kifpoolme.js +11 -0
  188. package/js/src/src/abstract/kraken.d.ts +61 -0
  189. package/js/src/src/abstract/kraken.js +11 -0
  190. package/js/src/src/abstract/krakenfutures.d.ts +45 -0
  191. package/js/src/src/abstract/krakenfutures.js +11 -0
  192. package/js/src/src/abstract/kucoin.d.ts +227 -0
  193. package/js/src/src/abstract/kucoin.js +11 -0
  194. package/js/src/src/abstract/kucoinfutures.d.ts +254 -0
  195. package/js/src/src/abstract/kucoinfutures.js +11 -0
  196. package/js/src/src/abstract/latoken.d.ts +59 -0
  197. package/js/src/src/abstract/latoken.js +11 -0
  198. package/js/src/src/abstract/lbank.d.ts +65 -0
  199. package/js/src/src/abstract/lbank.js +11 -0
  200. package/js/src/src/abstract/luno.d.ts +41 -0
  201. package/js/src/src/abstract/luno.js +11 -0
  202. package/js/src/src/abstract/mazdax.d.ts +11 -0
  203. package/js/src/src/abstract/mazdax.js +11 -0
  204. package/js/src/src/abstract/mercado.d.ts +28 -0
  205. package/js/src/src/abstract/mercado.js +11 -0
  206. package/js/src/src/abstract/mexc.d.ts +183 -0
  207. package/js/src/src/abstract/mexc.js +11 -0
  208. package/js/src/src/abstract/modetrade.d.ts +122 -0
  209. package/js/src/src/abstract/modetrade.js +11 -0
  210. package/js/src/src/abstract/ndax.d.ts +100 -0
  211. package/js/src/src/abstract/ndax.js +11 -0
  212. package/js/src/src/abstract/nobitex.d.ts +10 -0
  213. package/js/src/src/abstract/nobitex.js +11 -0
  214. package/js/src/src/abstract/novadax.d.ts +32 -0
  215. package/js/src/src/abstract/novadax.js +11 -0
  216. package/js/src/src/abstract/oceanex.d.ts +30 -0
  217. package/js/src/src/abstract/oceanex.js +11 -0
  218. package/js/src/src/abstract/okcoin.d.ts +77 -0
  219. package/js/src/src/abstract/okcoin.js +11 -0
  220. package/js/src/src/abstract/okexchange.d.ts +11 -0
  221. package/js/src/src/abstract/okexchange.js +11 -0
  222. package/js/src/src/abstract/okx.d.ts +352 -0
  223. package/js/src/src/abstract/okx.js +11 -0
  224. package/js/src/src/abstract/ompfinex.d.ts +10 -0
  225. package/js/src/src/abstract/ompfinex.js +11 -0
  226. package/js/src/src/abstract/onetrading.d.ts +26 -0
  227. package/js/src/src/abstract/onetrading.js +11 -0
  228. package/js/src/src/abstract/oxfun.d.ts +37 -0
  229. package/js/src/src/abstract/oxfun.js +11 -0
  230. package/js/src/src/abstract/p2b.d.ts +25 -0
  231. package/js/src/src/abstract/p2b.js +11 -0
  232. package/js/src/src/abstract/paradex.d.ts +66 -0
  233. package/js/src/src/abstract/paradex.js +11 -0
  234. package/js/src/src/abstract/paymium.d.ts +31 -0
  235. package/js/src/src/abstract/paymium.js +11 -0
  236. package/js/src/src/abstract/phemex.d.ts +120 -0
  237. package/js/src/src/abstract/phemex.js +11 -0
  238. package/js/src/src/abstract/pingi.d.ts +9 -0
  239. package/js/src/src/abstract/pingi.js +11 -0
  240. package/js/src/src/abstract/poloniex.d.ts +108 -0
  241. package/js/src/src/abstract/poloniex.js +11 -0
  242. package/js/src/src/abstract/pooleno.d.ts +8 -0
  243. package/js/src/src/abstract/pooleno.js +11 -0
  244. package/js/src/src/abstract/probit.d.ts +26 -0
  245. package/js/src/src/abstract/probit.js +11 -0
  246. package/js/src/src/abstract/raastin.d.ts +11 -0
  247. package/js/src/src/abstract/raastin.js +11 -0
  248. package/js/src/src/abstract/ramzinex.d.ts +10 -0
  249. package/js/src/src/abstract/ramzinex.js +11 -0
  250. package/js/src/src/abstract/sarmayex.d.ts +8 -0
  251. package/js/src/src/abstract/sarmayex.js +11 -0
  252. package/js/src/src/abstract/sarrafex.d.ts +10 -0
  253. package/js/src/src/abstract/sarrafex.js +11 -0
  254. package/js/src/src/abstract/tabdeal.d.ts +10 -0
  255. package/js/src/src/abstract/tabdeal.js +11 -0
  256. package/js/src/src/abstract/tehran_exchange.d.ts +9 -0
  257. package/js/src/src/abstract/tehran_exchange.js +11 -0
  258. package/js/src/src/abstract/tetherland.d.ts +8 -0
  259. package/js/src/src/abstract/tetherland.js +11 -0
  260. package/js/src/src/abstract/timex.d.ts +65 -0
  261. package/js/src/src/abstract/timex.js +11 -0
  262. package/js/src/src/abstract/tokocrypto.d.ts +40 -0
  263. package/js/src/src/abstract/tokocrypto.js +11 -0
  264. package/js/src/src/abstract/toobit.d.ts +10 -0
  265. package/js/src/src/abstract/toobit.js +11 -0
  266. package/js/src/src/abstract/tradeogre.d.ts +21 -0
  267. package/js/src/src/abstract/tradeogre.js +11 -0
  268. package/js/src/src/abstract/twox.d.ts +8 -0
  269. package/js/src/src/abstract/twox.js +11 -0
  270. package/js/src/src/abstract/ubitex.d.ts +10 -0
  271. package/js/src/src/abstract/ubitex.js +11 -0
  272. package/js/src/src/abstract/upbit.d.ts +58 -0
  273. package/js/src/src/abstract/upbit.js +11 -0
  274. package/js/src/src/abstract/vertex.d.ts +22 -0
  275. package/js/src/src/abstract/vertex.js +11 -0
  276. package/js/src/src/abstract/wallex.d.ts +11 -0
  277. package/js/src/src/abstract/wallex.js +11 -0
  278. package/js/src/src/abstract/wavesexchange.d.ts +157 -0
  279. package/js/src/src/abstract/wavesexchange.js +11 -0
  280. package/js/src/src/abstract/whitebit.d.ts +117 -0
  281. package/js/src/src/abstract/whitebit.js +11 -0
  282. package/js/src/src/abstract/woo.d.ts +144 -0
  283. package/js/src/src/abstract/woo.js +11 -0
  284. package/js/src/src/abstract/woofipro.d.ts +122 -0
  285. package/js/src/src/abstract/woofipro.js +11 -0
  286. package/js/src/src/abstract/xt.d.ts +160 -0
  287. package/js/src/src/abstract/xt.js +11 -0
  288. package/js/src/src/abstract/yobit.d.ts +19 -0
  289. package/js/src/src/abstract/yobit.js +11 -0
  290. package/js/src/src/abstract/zaif.d.ts +41 -0
  291. package/js/src/src/abstract/zaif.js +11 -0
  292. package/js/src/src/abstract/zonda.d.ts +56 -0
  293. package/js/src/src/abstract/zonda.js +11 -0
  294. package/js/src/src/afratether.d.ts +21 -0
  295. package/js/src/src/afratether.js +356 -0
  296. package/js/src/src/alpaca.d.ts +332 -0
  297. package/js/src/src/alpaca.js +1908 -0
  298. package/js/src/src/apex.d.ts +333 -0
  299. package/js/src/src/apex.js +1942 -0
  300. package/js/src/src/arzinja.d.ts +21 -0
  301. package/js/src/src/arzinja.js +298 -0
  302. package/js/src/src/arzplus.d.ts +26 -0
  303. package/js/src/src/arzplus.js +581 -0
  304. package/js/src/src/ascendex.d.ts +424 -0
  305. package/js/src/src/ascendex.js +3699 -0
  306. package/js/src/src/asretether.d.ts +21 -0
  307. package/js/src/src/asretether.js +324 -0
  308. package/js/src/src/base/Exchange.d.ts +926 -0
  309. package/js/src/src/base/Exchange.js +7399 -0
  310. package/js/src/src/base/Precise.d.ts +42 -0
  311. package/js/src/src/base/Precise.js +275 -0
  312. package/js/src/src/base/errors.d.ts +168 -0
  313. package/js/src/src/base/errors.js +255 -0
  314. package/js/src/src/base/functions/crypto.d.ts +16 -0
  315. package/js/src/src/base/functions/crypto.js +131 -0
  316. package/js/src/src/base/functions/encode.d.ts +4 -0
  317. package/js/src/src/base/functions/encode.js +32 -0
  318. package/js/src/src/base/functions/generic.d.ts +29 -0
  319. package/js/src/src/base/functions/generic.js +203 -0
  320. package/js/src/src/base/functions/misc.d.ts +9 -0
  321. package/js/src/src/base/functions/misc.js +101 -0
  322. package/js/src/src/base/functions/number.d.ts +27 -0
  323. package/js/src/src/base/functions/number.js +313 -0
  324. package/js/src/src/base/functions/platform.d.ts +7 -0
  325. package/js/src/src/base/functions/platform.js +27 -0
  326. package/js/src/src/base/functions/rsa.d.ts +5 -0
  327. package/js/src/src/base/functions/rsa.js +49 -0
  328. package/js/src/src/base/functions/string.d.ts +7 -0
  329. package/js/src/src/base/functions/string.js +44 -0
  330. package/js/src/src/base/functions/throttle.d.ts +6 -0
  331. package/js/src/src/base/functions/throttle.js +67 -0
  332. package/js/src/src/base/functions/time.d.ts +21 -0
  333. package/js/src/src/base/functions/time.js +171 -0
  334. package/js/src/src/base/functions/totp.d.ts +3 -0
  335. package/js/src/src/base/functions/totp.js +25 -0
  336. package/js/src/src/base/functions/type.d.ts +37 -0
  337. package/js/src/src/base/functions/type.js +179 -0
  338. package/js/src/src/base/functions.d.ts +10 -0
  339. package/js/src/src/base/functions.js +18 -0
  340. package/js/src/src/base/types.d.ts +586 -0
  341. package/js/src/src/base/types.js +7 -0
  342. package/js/src/src/base/ws/Cache.d.ts +27 -0
  343. package/js/src/src/base/ws/Cache.js +260 -0
  344. package/js/src/src/base/ws/Client.d.ts +53 -0
  345. package/js/src/src/base/ws/Client.js +307 -0
  346. package/js/src/src/base/ws/Future.d.ts +8 -0
  347. package/js/src/src/base/ws/Future.js +35 -0
  348. package/js/src/src/base/ws/OrderBook.d.ts +25 -0
  349. package/js/src/src/base/ws/OrderBook.js +130 -0
  350. package/js/src/src/base/ws/OrderBookSide.d.ts +40 -0
  351. package/js/src/src/base/ws/OrderBookSide.js +286 -0
  352. package/js/src/src/base/ws/WsClient.d.ts +11 -0
  353. package/js/src/src/base/ws/WsClient.js +69 -0
  354. package/js/src/src/bequant.d.ts +4 -0
  355. package/js/src/src/bequant.js +35 -0
  356. package/js/src/src/bidarz.d.ts +16 -0
  357. package/js/src/src/bidarz.js +327 -0
  358. package/js/src/src/bigone.d.ts +296 -0
  359. package/js/src/src/bigone.js +2340 -0
  360. package/js/src/src/binance.d.ts +1667 -0
  361. package/js/src/src/binance.js +14400 -0
  362. package/js/src/src/binancecoinm.d.ts +6 -0
  363. package/js/src/src/binancecoinm.js +51 -0
  364. package/js/src/src/binanceus.d.ts +4 -0
  365. package/js/src/src/binanceus.js +225 -0
  366. package/js/src/src/binanceusdm.d.ts +6 -0
  367. package/js/src/src/binanceusdm.js +63 -0
  368. package/js/src/src/bingx.d.ts +778 -0
  369. package/js/src/src/bingx.js +6705 -0
  370. package/js/src/src/bit24.d.ts +24 -0
  371. package/js/src/src/bit24.js +520 -0
  372. package/js/src/src/bit2c.d.ts +146 -0
  373. package/js/src/src/bit2c.js +1029 -0
  374. package/js/src/src/bitbank.d.ts +181 -0
  375. package/js/src/src/bitbank.js +1146 -0
  376. package/js/src/src/bitbarg.d.ts +21 -0
  377. package/js/src/src/bitbarg.js +312 -0
  378. package/js/src/src/bitbns.d.ts +184 -0
  379. package/js/src/src/bitbns.js +1288 -0
  380. package/js/src/src/bitfinex.d.ts +516 -0
  381. package/js/src/src/bitfinex.js +3951 -0
  382. package/js/src/src/bitflyer.d.ts +229 -0
  383. package/js/src/src/bitflyer.js +1209 -0
  384. package/js/src/src/bitget.d.ts +1109 -0
  385. package/js/src/src/bitget.js +11033 -0
  386. package/js/src/src/bithumb.d.ts +165 -0
  387. package/js/src/src/bithumb.js +1257 -0
  388. package/js/src/src/bitimen.d.ts +23 -0
  389. package/js/src/src/bitimen.js +424 -0
  390. package/js/src/src/bitir.d.ts +23 -0
  391. package/js/src/src/bitir.js +521 -0
  392. package/js/src/src/bitmart.d.ts +736 -0
  393. package/js/src/src/bitmart.js +5639 -0
  394. package/js/src/src/bitmex.d.ts +395 -0
  395. package/js/src/src/bitmex.js +3088 -0
  396. package/js/src/src/bitopro.d.ts +295 -0
  397. package/js/src/src/bitopro.js +1892 -0
  398. package/js/src/src/bitpin.d.ts +23 -0
  399. package/js/src/src/bitpin.js +487 -0
  400. package/js/src/src/bitrue.d.ts +384 -0
  401. package/js/src/src/bitrue.js +3382 -0
  402. package/js/src/src/bitso.d.ts +270 -0
  403. package/js/src/src/bitso.js +1881 -0
  404. package/js/src/src/bitstamp.d.ts +355 -0
  405. package/js/src/src/bitstamp.js +2445 -0
  406. package/js/src/src/bitteam.d.ts +229 -0
  407. package/js/src/src/bitteam.js +2420 -0
  408. package/js/src/src/bittrade.d.ts +298 -0
  409. package/js/src/src/bittrade.js +2050 -0
  410. package/js/src/src/bitunix.d.ts +21 -0
  411. package/js/src/src/bitunix.js +326 -0
  412. package/js/src/src/bitvavo.d.ts +311 -0
  413. package/js/src/src/bitvavo.js +2204 -0
  414. package/js/src/src/blockchaincom.d.ts +256 -0
  415. package/js/src/src/blockchaincom.js +1259 -0
  416. package/js/src/src/blofin.d.ts +439 -0
  417. package/js/src/src/blofin.js +2576 -0
  418. package/js/src/src/btcalpha.d.ts +209 -0
  419. package/js/src/src/btcalpha.js +1056 -0
  420. package/js/src/src/btcbox.d.ts +144 -0
  421. package/js/src/src/btcbox.js +834 -0
  422. package/js/src/src/btcmarkets.d.ts +253 -0
  423. package/js/src/src/btcmarkets.js +1418 -0
  424. package/js/src/src/btcturk.d.ts +161 -0
  425. package/js/src/src/btcturk.js +1058 -0
  426. package/js/src/src/bybit.d.ts +1097 -0
  427. package/js/src/src/bybit.js +9382 -0
  428. package/js/src/src/bydfi.d.ts +23 -0
  429. package/js/src/src/bydfi.js +434 -0
  430. package/js/src/src/cafearz.d.ts +21 -0
  431. package/js/src/src/cafearz.js +346 -0
  432. package/js/src/src/cex.d.ts +286 -0
  433. package/js/src/src/cex.js +1799 -0
  434. package/js/src/src/coinbase.d.ts +623 -0
  435. package/js/src/src/coinbase.js +5220 -0
  436. package/js/src/src/coinbaseadvanced.d.ts +4 -0
  437. package/js/src/src/coinbaseadvanced.js +18 -0
  438. package/js/src/src/coinbaseexchange.d.ts +334 -0
  439. package/js/src/src/coinbaseexchange.js +2127 -0
  440. package/js/src/src/coinbaseinternational.d.ts +443 -0
  441. package/js/src/src/coinbaseinternational.js +2336 -0
  442. package/js/src/src/coincatch.d.ts +786 -0
  443. package/js/src/src/coincatch.js +5492 -0
  444. package/js/src/src/coincheck.d.ts +147 -0
  445. package/js/src/src/coincheck.js +962 -0
  446. package/js/src/src/coinex.d.ts +719 -0
  447. package/js/src/src/coinex.js +6166 -0
  448. package/js/src/src/coinmate.d.ts +202 -0
  449. package/js/src/src/coinmate.js +1215 -0
  450. package/js/src/src/coinmetro.d.ts +244 -0
  451. package/js/src/src/coinmetro.js +2024 -0
  452. package/js/src/src/coinone.d.ts +158 -0
  453. package/js/src/src/coinone.js +1278 -0
  454. package/js/src/src/coinsph.d.ts +310 -0
  455. package/js/src/src/coinsph.js +2203 -0
  456. package/js/src/src/coinspot.d.ts +108 -0
  457. package/js/src/src/coinspot.js +653 -0
  458. package/js/src/src/cryptocom.d.ts +463 -0
  459. package/js/src/src/cryptocom.js +3549 -0
  460. package/js/src/src/cryptomus.d.ts +158 -0
  461. package/js/src/src/cryptomus.js +1169 -0
  462. package/js/src/src/defx.d.ts +348 -0
  463. package/js/src/src/defx.js +2139 -0
  464. package/js/src/src/delta.d.ts +407 -0
  465. package/js/src/src/delta.js +3654 -0
  466. package/js/src/src/deribit.d.ts +516 -0
  467. package/js/src/src/deribit.js +3790 -0
  468. package/js/src/src/derive.d.ts +324 -0
  469. package/js/src/src/derive.js +2655 -0
  470. package/js/src/src/digifinex.d.ts +544 -0
  471. package/js/src/src/digifinex.js +4453 -0
  472. package/js/src/src/ellipx.d.ts +237 -0
  473. package/js/src/src/ellipx.js +2071 -0
  474. package/js/src/src/eterex.d.ts +21 -0
  475. package/js/src/src/eterex.js +299 -0
  476. package/js/src/src/excoino.d.ts +23 -0
  477. package/js/src/src/excoino.js +426 -0
  478. package/js/src/src/exir.d.ts +23 -0
  479. package/js/src/src/exir.js +403 -0
  480. package/js/src/src/exmo.d.ts +426 -0
  481. package/js/src/src/exmo.js +2825 -0
  482. package/js/src/src/exnovin.d.ts +22 -0
  483. package/js/src/src/exnovin.js +378 -0
  484. package/js/src/src/farhadexchange.d.ts +21 -0
  485. package/js/src/src/farhadexchange.js +280 -0
  486. package/js/src/src/fmfwio.d.ts +4 -0
  487. package/js/src/src/fmfwio.js +35 -0
  488. package/js/src/src/foxbit.d.ts +352 -0
  489. package/js/src/src/foxbit.js +2016 -0
  490. package/js/src/src/gate.d.ts +1071 -0
  491. package/js/src/src/gate.js +8282 -0
  492. package/js/src/src/gateio.d.ts +4 -0
  493. package/js/src/src/gateio.js +17 -0
  494. package/js/src/src/gemini.d.ts +257 -0
  495. package/js/src/src/gemini.js +2006 -0
  496. package/js/src/src/hamtapay.d.ts +21 -0
  497. package/js/src/src/hamtapay.js +303 -0
  498. package/js/src/src/hashkey.d.ts +628 -0
  499. package/js/src/src/hashkey.js +4363 -0
  500. package/js/src/src/hibachi.d.ts +346 -0
  501. package/js/src/src/hibachi.js +2137 -0
  502. package/js/src/src/hitbtc.d.ts +558 -0
  503. package/js/src/src/hitbtc.js +3847 -0
  504. package/js/src/src/hitobit.d.ts +23 -0
  505. package/js/src/src/hitobit.js +412 -0
  506. package/js/src/src/hollaex.d.ts +305 -0
  507. package/js/src/src/hollaex.js +2046 -0
  508. package/js/src/src/htx.d.ts +961 -0
  509. package/js/src/src/htx.js +9668 -0
  510. package/js/src/src/huobi.d.ts +4 -0
  511. package/js/src/src/huobi.js +17 -0
  512. package/js/src/src/hyperliquid.d.ts +651 -0
  513. package/js/src/src/hyperliquid.js +3937 -0
  514. package/js/src/src/independentreserve.d.ts +169 -0
  515. package/js/src/src/independentreserve.js +1115 -0
  516. package/js/src/src/indodax.d.ts +217 -0
  517. package/js/src/src/indodax.js +1454 -0
  518. package/js/src/src/iranexchange.d.ts +21 -0
  519. package/js/src/src/iranexchange.js +399 -0
  520. package/js/src/src/jibitex.d.ts +23 -0
  521. package/js/src/src/jibitex.js +416 -0
  522. package/js/src/src/kcex.d.ts +21 -0
  523. package/js/src/src/kcex.js +335 -0
  524. package/js/src/src/kifpoolme.d.ts +23 -0
  525. package/js/src/src/kifpoolme.js +410 -0
  526. package/js/src/src/kraken.d.ts +484 -0
  527. package/js/src/src/kraken.js +3518 -0
  528. package/js/src/src/krakenfutures.d.ts +362 -0
  529. package/js/src/src/krakenfutures.js +2885 -0
  530. package/js/src/src/kucoin.d.ts +759 -0
  531. package/js/src/src/kucoin.js +5153 -0
  532. package/js/src/src/kucoinfutures.d.ts +521 -0
  533. package/js/src/src/kucoinfutures.js +3381 -0
  534. package/js/src/src/latoken.d.ts +274 -0
  535. package/js/src/src/latoken.js +1824 -0
  536. package/js/src/src/lbank.d.ts +350 -0
  537. package/js/src/src/lbank.js +3146 -0
  538. package/js/src/src/luno.d.ts +252 -0
  539. package/js/src/src/luno.js +1479 -0
  540. package/js/src/src/mazdax.d.ts +23 -0
  541. package/js/src/src/mazdax.js +534 -0
  542. package/js/src/src/mercado.d.ts +160 -0
  543. package/js/src/src/mercado.js +1011 -0
  544. package/js/src/src/mexc.d.ts +768 -0
  545. package/js/src/src/mexc.js +6102 -0
  546. package/js/src/src/modetrade.d.ts +496 -0
  547. package/js/src/src/modetrade.js +2936 -0
  548. package/js/src/src/myokx.d.ts +4 -0
  549. package/js/src/src/myokx.js +54 -0
  550. package/js/src/src/ndax.d.ts +285 -0
  551. package/js/src/src/ndax.js +2598 -0
  552. package/js/src/src/nobitex.d.ts +23 -0
  553. package/js/src/src/nobitex.js +454 -0
  554. package/js/src/src/novadax.d.ts +279 -0
  555. package/js/src/src/novadax.js +1676 -0
  556. package/js/src/src/oceanex.d.ts +231 -0
  557. package/js/src/src/oceanex.js +1123 -0
  558. package/js/src/src/okcoin.d.ts +346 -0
  559. package/js/src/src/okcoin.js +3211 -0
  560. package/js/src/src/okexchange.d.ts +23 -0
  561. package/js/src/src/okexchange.js +373 -0
  562. package/js/src/src/okx.d.ts +1125 -0
  563. package/js/src/src/okx.js +9009 -0
  564. package/js/src/src/okxus.d.ts +4 -0
  565. package/js/src/src/okxus.js +54 -0
  566. package/js/src/src/ompfinex.d.ts +23 -0
  567. package/js/src/src/ompfinex.js +510 -0
  568. package/js/src/src/onetrading.d.ts +228 -0
  569. package/js/src/src/onetrading.js +1769 -0
  570. package/js/src/src/oxfun.d.ts +442 -0
  571. package/js/src/src/oxfun.js +2920 -0
  572. package/js/src/src/p2b.d.ts +189 -0
  573. package/js/src/src/p2b.js +1344 -0
  574. package/js/src/src/paradex.d.ts +389 -0
  575. package/js/src/src/paradex.js +2607 -0
  576. package/js/src/src/paymium.d.ts +133 -0
  577. package/js/src/src/paymium.js +644 -0
  578. package/js/src/src/phemex.d.ts +497 -0
  579. package/js/src/src/phemex.js +5333 -0
  580. package/js/src/src/pingi.d.ts +22 -0
  581. package/js/src/src/pingi.js +446 -0
  582. package/js/src/src/poloniex.d.ts +441 -0
  583. package/js/src/src/poloniex.js +3681 -0
  584. package/js/src/src/pooleno.d.ts +21 -0
  585. package/js/src/src/pooleno.js +347 -0
  586. package/js/src/src/pro/alpaca.d.ts +95 -0
  587. package/js/src/src/pro/alpaca.js +724 -0
  588. package/js/src/src/pro/apex.d.ts +160 -0
  589. package/js/src/src/pro/apex.js +1044 -0
  590. package/js/src/src/pro/ascendex.d.ts +99 -0
  591. package/js/src/src/pro/ascendex.js +1012 -0
  592. package/js/src/src/pro/bequant.d.ts +4 -0
  593. package/js/src/src/pro/bequant.js +42 -0
  594. package/js/src/src/pro/binance.d.ts +796 -0
  595. package/js/src/src/pro/binance.js +4373 -0
  596. package/js/src/src/pro/binancecoinm.d.ts +4 -0
  597. package/js/src/src/pro/binancecoinm.js +32 -0
  598. package/js/src/src/pro/binanceus.d.ts +4 -0
  599. package/js/src/src/pro/binanceus.js +52 -0
  600. package/js/src/src/pro/binanceusdm.d.ts +4 -0
  601. package/js/src/src/pro/binanceusdm.js +37 -0
  602. package/js/src/src/pro/bingx.d.ts +151 -0
  603. package/js/src/src/pro/bingx.js +1568 -0
  604. package/js/src/src/pro/bitfinex.d.ts +99 -0
  605. package/js/src/src/pro/bitfinex.js +1165 -0
  606. package/js/src/src/pro/bitget.d.ts +257 -0
  607. package/js/src/src/pro/bitget.js +2327 -0
  608. package/js/src/src/pro/bithumb.d.ts +59 -0
  609. package/js/src/src/pro/bithumb.js +395 -0
  610. package/js/src/src/pro/bitmart.d.ts +168 -0
  611. package/js/src/src/pro/bitmart.js +1686 -0
  612. package/js/src/src/pro/bitmex.d.ts +170 -0
  613. package/js/src/src/pro/bitmex.js +1760 -0
  614. package/js/src/src/pro/bitopro.d.ts +69 -0
  615. package/js/src/src/pro/bitopro.js +477 -0
  616. package/js/src/src/pro/bitrue.d.ts +40 -0
  617. package/js/src/src/pro/bitrue.js +461 -0
  618. package/js/src/src/pro/bitstamp.d.ts +53 -0
  619. package/js/src/src/pro/bitstamp.js +587 -0
  620. package/js/src/src/pro/bittrade.d.ts +66 -0
  621. package/js/src/src/pro/bittrade.js +606 -0
  622. package/js/src/src/pro/bitvavo.d.ts +321 -0
  623. package/js/src/src/pro/bitvavo.js +1451 -0
  624. package/js/src/src/pro/blockchaincom.d.ts +89 -0
  625. package/js/src/src/pro/blockchaincom.js +777 -0
  626. package/js/src/src/pro/blofin.d.ts +174 -0
  627. package/js/src/src/pro/blofin.js +743 -0
  628. package/js/src/src/pro/bybit.d.ts +397 -0
  629. package/js/src/src/pro/bybit.js +2519 -0
  630. package/js/src/src/pro/cex.d.ts +220 -0
  631. package/js/src/src/pro/cex.js +1535 -0
  632. package/js/src/src/pro/coinbase.d.ts +119 -0
  633. package/js/src/src/pro/coinbase.js +736 -0
  634. package/js/src/src/pro/coinbaseadvanced.d.ts +4 -0
  635. package/js/src/src/pro/coinbaseadvanced.js +18 -0
  636. package/js/src/src/pro/coinbaseexchange.d.ts +133 -0
  637. package/js/src/src/pro/coinbaseexchange.js +969 -0
  638. package/js/src/src/pro/coinbaseinternational.d.ts +143 -0
  639. package/js/src/src/pro/coinbaseinternational.js +804 -0
  640. package/js/src/src/pro/coincatch.d.ts +207 -0
  641. package/js/src/src/pro/coincatch.js +1562 -0
  642. package/js/src/src/pro/coincheck.d.ts +33 -0
  643. package/js/src/src/pro/coincheck.js +210 -0
  644. package/js/src/src/pro/coinex.d.ts +147 -0
  645. package/js/src/src/pro/coinex.js +1426 -0
  646. package/js/src/src/pro/coinone.d.ts +51 -0
  647. package/js/src/src/pro/coinone.js +413 -0
  648. package/js/src/src/pro/cryptocom.d.ts +300 -0
  649. package/js/src/src/pro/cryptocom.js +1414 -0
  650. package/js/src/src/pro/defx.d.ts +236 -0
  651. package/js/src/src/pro/defx.js +865 -0
  652. package/js/src/src/pro/deribit.d.ts +163 -0
  653. package/js/src/src/pro/deribit.js +1066 -0
  654. package/js/src/src/pro/derive.d.ts +100 -0
  655. package/js/src/src/pro/derive.js +753 -0
  656. package/js/src/src/pro/exmo.d.ts +97 -0
  657. package/js/src/src/pro/exmo.js +903 -0
  658. package/js/src/src/pro/gate.d.ts +360 -0
  659. package/js/src/src/pro/gate.js +2119 -0
  660. package/js/src/src/pro/gateio.d.ts +4 -0
  661. package/js/src/src/pro/gateio.js +17 -0
  662. package/js/src/src/pro/gemini.d.ts +106 -0
  663. package/js/src/src/pro/gemini.js +932 -0
  664. package/js/src/src/pro/hashkey.d.ts +121 -0
  665. package/js/src/src/pro/hashkey.js +843 -0
  666. package/js/src/src/pro/hitbtc.d.ts +235 -0
  667. package/js/src/src/pro/hitbtc.js +1400 -0
  668. package/js/src/src/pro/hollaex.d.ts +77 -0
  669. package/js/src/src/pro/hollaex.js +604 -0
  670. package/js/src/src/pro/htx.d.ts +141 -0
  671. package/js/src/src/pro/htx.js +2415 -0
  672. package/js/src/src/pro/huobi.d.ts +4 -0
  673. package/js/src/src/pro/huobi.js +17 -0
  674. package/js/src/src/pro/hyperliquid.d.ts +218 -0
  675. package/js/src/src/pro/hyperliquid.js +1126 -0
  676. package/js/src/src/pro/independentreserve.d.ts +36 -0
  677. package/js/src/src/pro/independentreserve.js +287 -0
  678. package/js/src/src/pro/kraken.d.ts +233 -0
  679. package/js/src/src/pro/kraken.js +1785 -0
  680. package/js/src/src/pro/krakenfutures.d.ts +178 -0
  681. package/js/src/src/pro/krakenfutures.js +1592 -0
  682. package/js/src/src/pro/kucoin.d.ts +221 -0
  683. package/js/src/src/pro/kucoin.js +1430 -0
  684. package/js/src/src/pro/kucoinfutures.d.ts +205 -0
  685. package/js/src/src/pro/kucoinfutures.js +1295 -0
  686. package/js/src/src/pro/lbank.d.ts +134 -0
  687. package/js/src/src/pro/lbank.js +950 -0
  688. package/js/src/src/pro/luno.d.ts +44 -0
  689. package/js/src/src/pro/luno.js +322 -0
  690. package/js/src/src/pro/mexc.d.ts +210 -0
  691. package/js/src/src/pro/mexc.js +2009 -0
  692. package/js/src/src/pro/modetrade.d.ts +155 -0
  693. package/js/src/src/pro/modetrade.js +1335 -0
  694. package/js/src/src/pro/myokx.d.ts +4 -0
  695. package/js/src/src/pro/myokx.js +39 -0
  696. package/js/src/src/pro/ndax.d.ts +60 -0
  697. package/js/src/src/pro/ndax.js +545 -0
  698. package/js/src/src/pro/okcoin.d.ts +91 -0
  699. package/js/src/src/pro/okcoin.js +763 -0
  700. package/js/src/src/pro/okx.d.ts +408 -0
  701. package/js/src/src/pro/okx.js +2479 -0
  702. package/js/src/src/pro/okxus.d.ts +4 -0
  703. package/js/src/src/pro/okxus.js +39 -0
  704. package/js/src/src/pro/onetrading.d.ts +107 -0
  705. package/js/src/src/pro/onetrading.js +1343 -0
  706. package/js/src/src/pro/oxfun.d.ts +234 -0
  707. package/js/src/src/pro/oxfun.js +1112 -0
  708. package/js/src/src/pro/p2b.d.ts +104 -0
  709. package/js/src/src/pro/p2b.js +506 -0
  710. package/js/src/src/pro/paradex.d.ts +54 -0
  711. package/js/src/src/pro/paradex.js +370 -0
  712. package/js/src/src/pro/phemex.d.ts +129 -0
  713. package/js/src/src/pro/phemex.js +1569 -0
  714. package/js/src/src/pro/poloniex.d.ts +214 -0
  715. package/js/src/src/pro/poloniex.js +1318 -0
  716. package/js/src/src/pro/probit.d.ts +91 -0
  717. package/js/src/src/pro/probit.js +593 -0
  718. package/js/src/src/pro/tradeogre.d.ts +49 -0
  719. package/js/src/src/pro/tradeogre.js +284 -0
  720. package/js/src/src/pro/upbit.d.ts +124 -0
  721. package/js/src/src/pro/upbit.js +689 -0
  722. package/js/src/src/pro/vertex.d.ts +104 -0
  723. package/js/src/src/pro/vertex.js +999 -0
  724. package/js/src/src/pro/whitebit.d.ts +123 -0
  725. package/js/src/src/pro/whitebit.js +971 -0
  726. package/js/src/src/pro/woo.d.ts +161 -0
  727. package/js/src/src/pro/woo.js +1351 -0
  728. package/js/src/src/pro/woofipro.d.ts +155 -0
  729. package/js/src/src/pro/woofipro.js +1335 -0
  730. package/js/src/src/pro/xt.d.ts +165 -0
  731. package/js/src/src/pro/xt.js +1230 -0
  732. package/js/src/src/probit.d.ts +283 -0
  733. package/js/src/src/probit.js +1935 -0
  734. package/js/src/src/protobuf/mexc/compiled.cjs +7186 -0
  735. package/js/src/src/protobuf/mexc/compiled.d.cts +8 -0
  736. package/js/src/src/raastin.d.ts +24 -0
  737. package/js/src/src/raastin.js +494 -0
  738. package/js/src/src/ramzinex.d.ts +23 -0
  739. package/js/src/src/ramzinex.js +510 -0
  740. package/js/src/src/sarmayex.d.ts +21 -0
  741. package/js/src/src/sarmayex.js +376 -0
  742. package/js/src/src/sarrafex.d.ts +23 -0
  743. package/js/src/src/sarrafex.js +501 -0
  744. package/js/src/src/static_dependencies/ethers/abi-coder.d.ts +50 -0
  745. package/js/src/src/static_dependencies/ethers/abi-coder.js +148 -0
  746. package/js/src/src/static_dependencies/ethers/address/address.d.ts +55 -0
  747. package/js/src/src/static_dependencies/ethers/address/address.js +162 -0
  748. package/js/src/src/static_dependencies/ethers/address/checks.d.ts +80 -0
  749. package/js/src/src/static_dependencies/ethers/address/checks.js +119 -0
  750. package/js/src/src/static_dependencies/ethers/address/contract-address.d.ts +47 -0
  751. package/js/src/src/static_dependencies/ethers/address/contract-address.js +73 -0
  752. package/js/src/src/static_dependencies/ethers/address/index.d.ts +48 -0
  753. package/js/src/src/static_dependencies/ethers/address/index.js +24 -0
  754. package/js/src/src/static_dependencies/ethers/bytes32.d.ts +14 -0
  755. package/js/src/src/static_dependencies/ethers/bytes32.js +45 -0
  756. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.d.ts +120 -0
  757. package/js/src/src/static_dependencies/ethers/coders/abstract-coder.js +424 -0
  758. package/js/src/src/static_dependencies/ethers/coders/address.d.ts +12 -0
  759. package/js/src/src/static_dependencies/ethers/coders/address.js +34 -0
  760. package/js/src/src/static_dependencies/ethers/coders/anonymous.d.ts +14 -0
  761. package/js/src/src/static_dependencies/ethers/coders/anonymous.js +27 -0
  762. package/js/src/src/static_dependencies/ethers/coders/array.d.ts +24 -0
  763. package/js/src/src/static_dependencies/ethers/coders/array.js +162 -0
  764. package/js/src/src/static_dependencies/ethers/coders/boolean.d.ts +12 -0
  765. package/js/src/src/static_dependencies/ethers/coders/boolean.js +26 -0
  766. package/js/src/src/static_dependencies/ethers/coders/bytes.d.ts +18 -0
  767. package/js/src/src/static_dependencies/ethers/coders/bytes.js +39 -0
  768. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.d.ts +14 -0
  769. package/js/src/src/static_dependencies/ethers/coders/fixed-bytes.js +32 -0
  770. package/js/src/src/static_dependencies/ethers/coders/null.d.ts +11 -0
  771. package/js/src/src/static_dependencies/ethers/coders/null.js +29 -0
  772. package/js/src/src/static_dependencies/ethers/coders/number.d.ts +15 -0
  773. package/js/src/src/static_dependencies/ethers/coders/number.js +48 -0
  774. package/js/src/src/static_dependencies/ethers/coders/string.d.ts +12 -0
  775. package/js/src/src/static_dependencies/ethers/coders/string.js +26 -0
  776. package/js/src/src/static_dependencies/ethers/coders/tuple.d.ts +15 -0
  777. package/js/src/src/static_dependencies/ethers/coders/tuple.js +67 -0
  778. package/js/src/src/static_dependencies/ethers/fragments.d.ts +458 -0
  779. package/js/src/src/static_dependencies/ethers/fragments.js +1252 -0
  780. package/js/src/src/static_dependencies/ethers/hash/index.d.ts +10 -0
  781. package/js/src/src/static_dependencies/ethers/hash/index.js +15 -0
  782. package/js/src/src/static_dependencies/ethers/hash/solidity.d.ts +30 -0
  783. package/js/src/src/static_dependencies/ethers/hash/solidity.js +107 -0
  784. package/js/src/src/static_dependencies/ethers/hash/typed-data.d.ts +144 -0
  785. package/js/src/src/static_dependencies/ethers/hash/typed-data.js +490 -0
  786. package/js/src/src/static_dependencies/ethers/index.d.ts +19 -0
  787. package/js/src/src/static_dependencies/ethers/index.js +22 -0
  788. package/js/src/src/static_dependencies/ethers/interface.d.ts +380 -0
  789. package/js/src/src/static_dependencies/ethers/interface.js +990 -0
  790. package/js/src/src/static_dependencies/ethers/typed.d.ts +569 -0
  791. package/js/src/src/static_dependencies/ethers/typed.js +608 -0
  792. package/js/src/src/static_dependencies/ethers/utils/base58.d.ts +22 -0
  793. package/js/src/src/static_dependencies/ethers/utils/base58.js +68 -0
  794. package/js/src/src/static_dependencies/ethers/utils/base64.d.ts +39 -0
  795. package/js/src/src/static_dependencies/ethers/utils/base64.js +58 -0
  796. package/js/src/src/static_dependencies/ethers/utils/data.d.ts +92 -0
  797. package/js/src/src/static_dependencies/ethers/utils/data.js +175 -0
  798. package/js/src/src/static_dependencies/ethers/utils/errors.d.ts +509 -0
  799. package/js/src/src/static_dependencies/ethers/utils/errors.js +227 -0
  800. package/js/src/src/static_dependencies/ethers/utils/events.d.ts +76 -0
  801. package/js/src/src/static_dependencies/ethers/utils/events.js +52 -0
  802. package/js/src/src/static_dependencies/ethers/utils/fixednumber.d.ts +251 -0
  803. package/js/src/src/static_dependencies/ethers/utils/fixednumber.js +529 -0
  804. package/js/src/src/static_dependencies/ethers/utils/index.d.ts +30 -0
  805. package/js/src/src/static_dependencies/ethers/utils/index.js +38 -0
  806. package/js/src/src/static_dependencies/ethers/utils/maths.d.ts +65 -0
  807. package/js/src/src/static_dependencies/ethers/utils/maths.js +220 -0
  808. package/js/src/src/static_dependencies/ethers/utils/properties.d.ts +22 -0
  809. package/js/src/src/static_dependencies/ethers/utils/properties.js +59 -0
  810. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.d.ts +5 -0
  811. package/js/src/src/static_dependencies/ethers/utils/rlp-decode.js +84 -0
  812. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.d.ts +5 -0
  813. package/js/src/src/static_dependencies/ethers/utils/rlp-encode.js +54 -0
  814. package/js/src/src/static_dependencies/ethers/utils/rlp.d.ts +16 -0
  815. package/js/src/src/static_dependencies/ethers/utils/rlp.js +14 -0
  816. package/js/src/src/static_dependencies/ethers/utils/units.d.ts +23 -0
  817. package/js/src/src/static_dependencies/ethers/utils/units.js +88 -0
  818. package/js/src/src/static_dependencies/ethers/utils/utf8.d.ts +95 -0
  819. package/js/src/src/static_dependencies/ethers/utils/utf8.js +225 -0
  820. package/js/src/src/static_dependencies/ethers/utils/uuid.d.ts +7 -0
  821. package/js/src/src/static_dependencies/ethers/utils/uuid.js +35 -0
  822. package/js/src/src/static_dependencies/fflake/browser.d.ts +222 -0
  823. package/js/src/src/static_dependencies/fflake/browser.js +2578 -0
  824. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.d.ts +116 -0
  825. package/js/src/src/static_dependencies/jsencrypt/JSEncrypt.js +194 -0
  826. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.d.ts +142 -0
  827. package/js/src/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +307 -0
  828. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.d.ts +51 -0
  829. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +565 -0
  830. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.d.ts +5 -0
  831. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  832. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.d.ts +3 -0
  833. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  834. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.d.ts +9 -0
  835. package/js/src/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  836. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.d.ts +3 -0
  837. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +25 -0
  838. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.d.ts +101 -0
  839. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1757 -0
  840. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.d.ts +10 -0
  841. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +50 -0
  842. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.d.ts +3 -0
  843. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +80 -0
  844. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.d.ts +23 -0
  845. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +377 -0
  846. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.d.ts +7 -0
  847. package/js/src/src/static_dependencies/jsencrypt/lib/jsbn/util.js +64 -0
  848. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.d.ts +24 -0
  849. package/js/src/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1627 -0
  850. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.d.ts +60 -0
  851. package/js/src/src/static_dependencies/noble-curves/_shortw_utils.js +22 -0
  852. package/js/src/src/static_dependencies/noble-curves/abstract/curve.d.ts +67 -0
  853. package/js/src/src/static_dependencies/noble-curves/abstract/curve.js +157 -0
  854. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.d.ts +79 -0
  855. package/js/src/src/static_dependencies/noble-curves/abstract/edwards.js +432 -0
  856. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.d.ts +56 -0
  857. package/js/src/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +171 -0
  858. package/js/src/src/static_dependencies/noble-curves/abstract/modular.d.ts +68 -0
  859. package/js/src/src/static_dependencies/noble-curves/abstract/modular.js +351 -0
  860. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.d.ts +25 -0
  861. package/js/src/src/static_dependencies/noble-curves/abstract/montgomery.js +162 -0
  862. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.d.ts +29 -0
  863. package/js/src/src/static_dependencies/noble-curves/abstract/poseidon.js +115 -0
  864. package/js/src/src/static_dependencies/noble-curves/abstract/utils.d.ts +53 -0
  865. package/js/src/src/static_dependencies/noble-curves/abstract/utils.js +227 -0
  866. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +204 -0
  867. package/js/src/src/static_dependencies/noble-curves/abstract/weierstrass.js +1016 -0
  868. package/js/src/src/static_dependencies/noble-curves/ed25519.d.ts +53 -0
  869. package/js/src/src/static_dependencies/noble-curves/ed25519.js +402 -0
  870. package/js/src/src/static_dependencies/noble-curves/p256.d.ts +103 -0
  871. package/js/src/src/static_dependencies/noble-curves/p256.js +47 -0
  872. package/js/src/src/static_dependencies/noble-curves/secp256k1.d.ts +91 -0
  873. package/js/src/src/static_dependencies/noble-curves/secp256k1.js +257 -0
  874. package/js/src/src/static_dependencies/noble-hashes/_assert.d.ts +21 -0
  875. package/js/src/src/static_dependencies/noble-hashes/_assert.js +48 -0
  876. package/js/src/src/static_dependencies/noble-hashes/_sha2.d.ts +23 -0
  877. package/js/src/src/static_dependencies/noble-hashes/_sha2.js +119 -0
  878. package/js/src/src/static_dependencies/noble-hashes/_u64.d.ts +35 -0
  879. package/js/src/src/static_dependencies/noble-hashes/_u64.js +66 -0
  880. package/js/src/src/static_dependencies/noble-hashes/crypto.d.ts +1 -0
  881. package/js/src/src/static_dependencies/noble-hashes/crypto.js +7 -0
  882. package/js/src/src/static_dependencies/noble-hashes/hmac.d.ts +26 -0
  883. package/js/src/src/static_dependencies/noble-hashes/hmac.js +82 -0
  884. package/js/src/src/static_dependencies/noble-hashes/md5.d.ts +18 -0
  885. package/js/src/src/static_dependencies/noble-hashes/md5.js +242 -0
  886. package/js/src/src/static_dependencies/noble-hashes/sha1.d.ts +21 -0
  887. package/js/src/src/static_dependencies/noble-hashes/sha1.js +90 -0
  888. package/js/src/src/static_dependencies/noble-hashes/sha256.d.ts +34 -0
  889. package/js/src/src/static_dependencies/noble-hashes/sha256.js +129 -0
  890. package/js/src/src/static_dependencies/noble-hashes/sha3.d.ts +97 -0
  891. package/js/src/src/static_dependencies/noble-hashes/sha3.js +211 -0
  892. package/js/src/src/static_dependencies/noble-hashes/sha512.d.ts +66 -0
  893. package/js/src/src/static_dependencies/noble-hashes/sha512.js +236 -0
  894. package/js/src/src/static_dependencies/noble-hashes/utils.d.ts +77 -0
  895. package/js/src/src/static_dependencies/noble-hashes/utils.js +147 -0
  896. package/js/src/src/static_dependencies/proxies/agent-base/helpers.d.ts +14 -0
  897. package/js/src/src/static_dependencies/proxies/agent-base/helpers.js +42 -0
  898. package/js/src/src/static_dependencies/proxies/agent-base/index.d.ts +33 -0
  899. package/js/src/src/static_dependencies/proxies/agent-base/index.js +82 -0
  900. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.d.ts +40 -0
  901. package/js/src/src/static_dependencies/proxies/http-proxy-agent/index.js +119 -0
  902. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.d.ts +45 -0
  903. package/js/src/src/static_dependencies/proxies/https-proxy-agent/index.js +150 -0
  904. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.d.ts +15 -0
  905. package/js/src/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  906. package/js/src/src/static_dependencies/qs/formats.cjs +22 -0
  907. package/js/src/src/static_dependencies/qs/formats.d.cts +14 -0
  908. package/js/src/src/static_dependencies/qs/index.cjs +15 -0
  909. package/js/src/src/static_dependencies/qs/index.d.cts +10 -0
  910. package/js/src/src/static_dependencies/qs/parse.cjs +208 -0
  911. package/js/src/src/static_dependencies/qs/parse.d.cts +8 -0
  912. package/js/src/src/static_dependencies/qs/stringify.cjs +192 -0
  913. package/js/src/src/static_dependencies/qs/stringify.d.cts +8 -0
  914. package/js/src/src/static_dependencies/qs/utils.cjs +202 -0
  915. package/js/src/src/static_dependencies/qs/utils.d.cts +15 -0
  916. package/js/src/src/static_dependencies/scure-base/index.d.ts +92 -0
  917. package/js/src/src/static_dependencies/scure-base/index.js +420 -0
  918. package/js/src/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  919. package/js/src/src/static_dependencies/scure-starknet/index.js +323 -0
  920. package/js/src/src/static_dependencies/starknet/constants.d.ts +61 -0
  921. package/js/src/src/static_dependencies/starknet/constants.js +67 -0
  922. package/js/src/src/static_dependencies/starknet/index.d.ts +3 -0
  923. package/js/src/src/static_dependencies/starknet/index.js +9 -0
  924. package/js/src/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  925. package/js/src/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  926. package/js/src/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  927. package/js/src/src/static_dependencies/starknet/types/calldata.js +28 -0
  928. package/js/src/src/static_dependencies/starknet/types/index.d.ts +13 -0
  929. package/js/src/src/static_dependencies/starknet/types/index.js +16 -0
  930. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  931. package/js/src/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  932. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  933. package/js/src/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  934. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  935. package/js/src/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  936. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  937. package/js/src/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  938. package/js/src/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  939. package/js/src/src/static_dependencies/starknet/types/lib/index.js +52 -0
  940. package/js/src/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  941. package/js/src/src/static_dependencies/starknet/types/typedData.js +19 -0
  942. package/js/src/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  943. package/js/src/src/static_dependencies/starknet/utils/assert.js +17 -0
  944. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  945. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  946. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  947. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  948. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  949. package/js/src/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  950. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  951. package/js/src/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  952. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  953. package/js/src/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  954. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  955. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  956. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  957. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  958. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  959. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  960. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  961. package/js/src/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  962. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  963. package/js/src/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  964. package/js/src/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  965. package/js/src/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  966. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  967. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  968. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  969. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  970. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  971. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  972. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  973. package/js/src/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  974. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  975. package/js/src/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  976. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  977. package/js/src/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  978. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  979. package/js/src/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  980. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  981. package/js/src/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  982. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  983. package/js/src/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  984. package/js/src/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  985. package/js/src/src/static_dependencies/starknet/utils/encode.js +282 -0
  986. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  987. package/js/src/src/static_dependencies/starknet/utils/hash/classHash.js +223 -0
  988. package/js/src/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  989. package/js/src/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  990. package/js/src/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  991. package/js/src/src/static_dependencies/starknet/utils/merkle.js +84 -0
  992. package/js/src/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  993. package/js/src/src/static_dependencies/starknet/utils/num.js +244 -0
  994. package/js/src/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  995. package/js/src/src/static_dependencies/starknet/utils/selector.js +85 -0
  996. package/js/src/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  997. package/js/src/src/static_dependencies/starknet/utils/shortString.js +96 -0
  998. package/js/src/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  999. package/js/src/src/static_dependencies/starknet/utils/typedData.js +321 -0
  1000. package/js/src/src/static_dependencies/watchable/src/types.d.ts +28 -0
  1001. package/js/src/src/static_dependencies/watchable/src/types.js +8 -0
  1002. package/js/src/src/static_dependencies/watchable/src/unpromise.d.ts +120 -0
  1003. package/js/src/src/static_dependencies/watchable/src/unpromise.js +297 -0
  1004. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.d.ts +1279 -0
  1005. package/js/src/src/static_dependencies/zklink/zklink-sdk-web.js +4282 -0
  1006. package/js/src/src/tabdeal.d.ts +23 -0
  1007. package/js/src/src/tabdeal.js +387 -0
  1008. package/js/src/src/tehran_exchange.d.ts +21 -0
  1009. package/js/src/src/tehran_exchange.js +333 -0
  1010. package/js/src/src/tetherland.d.ts +21 -0
  1011. package/js/src/src/tetherland.js +367 -0
  1012. package/js/src/src/timex.d.ts +247 -0
  1013. package/js/src/src/timex.js +1792 -0
  1014. package/js/src/src/tokocrypto.d.ts +261 -0
  1015. package/js/src/src/tokocrypto.js +2641 -0
  1016. package/js/src/src/toobit.d.ts +22 -0
  1017. package/js/src/src/toobit.js +445 -0
  1018. package/js/src/src/tradeogre.d.ts +149 -0
  1019. package/js/src/src/tradeogre.js +878 -0
  1020. package/js/src/src/twox.d.ts +21 -0
  1021. package/js/src/src/twox.js +371 -0
  1022. package/js/src/src/ubitex.d.ts +23 -0
  1023. package/js/src/src/ubitex.js +433 -0
  1024. package/js/src/src/upbit.d.ts +377 -0
  1025. package/js/src/src/upbit.js +2340 -0
  1026. package/js/src/src/vertex.d.ts +346 -0
  1027. package/js/src/src/vertex.js +3146 -0
  1028. package/js/src/src/wallex.d.ts +23 -0
  1029. package/js/src/src/wallex.js +467 -0
  1030. package/js/src/src/wavesexchange.d.ts +244 -0
  1031. package/js/src/src/wavesexchange.js +2747 -0
  1032. package/js/src/src/whitebit.d.ts +571 -0
  1033. package/js/src/src/whitebit.js +3437 -0
  1034. package/js/src/src/woo.d.ts +727 -0
  1035. package/js/src/src/woo.js +4183 -0
  1036. package/js/src/src/woofipro.d.ts +497 -0
  1037. package/js/src/src/woofipro.js +2941 -0
  1038. package/js/src/src/xt.d.ts +568 -0
  1039. package/js/src/src/xt.js +5184 -0
  1040. package/js/src/src/yobit.d.ts +197 -0
  1041. package/js/src/src/yobit.js +1453 -0
  1042. package/js/src/src/zaif.d.ts +136 -0
  1043. package/js/src/src/zaif.js +821 -0
  1044. package/js/src/src/zonda.d.ts +214 -0
  1045. package/js/src/src/zonda.js +1984 -0
  1046. package/js/test.js +3 -3
  1047. package/package.json +1 -1
@@ -0,0 +1,2336 @@
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/coinbaseinternational.js';
9
+ import { ExchangeError, ArgumentsRequired, BadRequest, InvalidOrder, PermissionDenied, DuplicateOrderId, AuthenticationError } 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 coinbaseinternational
16
+ * @augments Exchange
17
+ */
18
+ export default class coinbaseinternational extends Exchange {
19
+ describe() {
20
+ return this.deepExtend(super.describe(), {
21
+ 'id': 'coinbaseinternational',
22
+ 'name': 'Coinbase International',
23
+ 'countries': ['US'],
24
+ 'certified': false,
25
+ 'pro': true,
26
+ 'rateLimit': 100,
27
+ 'version': 'v1',
28
+ 'userAgent': this.userAgents['chrome'],
29
+ 'headers': {
30
+ 'CB-VERSION': '2018-05-30',
31
+ },
32
+ 'has': {
33
+ 'CORS': true,
34
+ 'spot': true,
35
+ 'margin': true,
36
+ 'swap': true,
37
+ 'future': true,
38
+ 'option': false,
39
+ 'addMargin': false,
40
+ 'cancelAllOrders': true,
41
+ 'cancelOrder': true,
42
+ 'cancelOrders': false,
43
+ 'closeAllPositions': false,
44
+ 'closePosition': false,
45
+ 'createDepositAddress': true,
46
+ 'createLimitBuyOrder': true,
47
+ 'createLimitSellOrder': true,
48
+ 'createMarketBuyOrder': true,
49
+ 'createMarketBuyOrderWithCost': false,
50
+ 'createMarketOrderWithCost': false,
51
+ 'createMarketSellOrder': true,
52
+ 'createMarketSellOrderWithCost': false,
53
+ 'createOrder': true,
54
+ 'createPostOnlyOrder': true,
55
+ 'createReduceOnlyOrder': false,
56
+ 'createStopLimitOrder': true,
57
+ 'createStopMarketOrder': true,
58
+ 'createStopOrder': true,
59
+ 'editOrder': true,
60
+ 'fetchAccounts': true,
61
+ 'fetchBalance': true,
62
+ 'fetchBidsAsks': false,
63
+ 'fetchBorrowRateHistories': false,
64
+ 'fetchBorrowRateHistory': false,
65
+ 'fetchCanceledOrders': false,
66
+ 'fetchClosedOrders': false,
67
+ 'fetchCrossBorrowRate': false,
68
+ 'fetchCrossBorrowRates': false,
69
+ 'fetchCurrencies': true,
70
+ 'fetchDeposits': true,
71
+ 'fetchFundingHistory': true,
72
+ 'fetchFundingRate': false,
73
+ 'fetchFundingRateHistory': true,
74
+ 'fetchFundingRates': false,
75
+ 'fetchIndexOHLCV': false,
76
+ 'fetchIsolatedBorrowRate': false,
77
+ 'fetchIsolatedBorrowRates': false,
78
+ 'fetchL2OrderBook': false,
79
+ 'fetchLedger': false,
80
+ 'fetchLeverage': false,
81
+ 'fetchLeverageTiers': false,
82
+ 'fetchMarginAdjustmentHistory': false,
83
+ 'fetchMarginMode': false,
84
+ 'fetchMarkets': true,
85
+ 'fetchMarkOHLCV': false,
86
+ 'fetchMyBuys': true,
87
+ 'fetchMySells': true,
88
+ 'fetchMyTrades': true,
89
+ 'fetchOHLCV': true,
90
+ 'fetchOpenInterestHistory': false,
91
+ 'fetchOpenOrders': true,
92
+ 'fetchOrder': true,
93
+ 'fetchOrderBook': false,
94
+ 'fetchOrders': false,
95
+ 'fetchPosition': true,
96
+ 'fetchPositionHistory': false,
97
+ 'fetchPositionMode': false,
98
+ 'fetchPositions': true,
99
+ 'fetchPositionsHistory': false,
100
+ 'fetchPositionsRisk': false,
101
+ 'fetchPremiumIndexOHLCV': false,
102
+ 'fetchTicker': true,
103
+ 'fetchTickers': true,
104
+ 'fetchTime': false,
105
+ 'fetchTrades': false,
106
+ 'fetchTradingFee': false,
107
+ 'fetchTradingFees': false,
108
+ 'fetchTransfers': true,
109
+ 'fetchWithdrawals': true,
110
+ 'reduceMargin': false,
111
+ 'sandbox': true,
112
+ 'setLeverage': false,
113
+ 'setMargin': true,
114
+ 'setMarginMode': false,
115
+ 'setPositionMode': false,
116
+ 'withdraw': true,
117
+ },
118
+ 'urls': {
119
+ 'logo': 'https://github.com/ccxt/ccxt/assets/43336371/866ae638-6ab5-4ebf-ab2c-cdcce9545625',
120
+ 'api': {
121
+ 'rest': 'https://api.international.coinbase.com/api',
122
+ },
123
+ 'test': {
124
+ 'rest': 'https://api-n5e1.coinbase.com/api',
125
+ },
126
+ 'www': 'https://international.coinbase.com',
127
+ 'doc': [
128
+ 'https://docs.cloud.coinbase.com/intx/docs',
129
+ ],
130
+ 'fees': [
131
+ 'https://help.coinbase.com/en/international-exchange/trading-deposits-withdrawals/international-exchange-fees',
132
+ ],
133
+ 'referral': '',
134
+ },
135
+ 'requiredCredentials': {
136
+ 'apiKey': true,
137
+ 'secret': true,
138
+ 'password': true,
139
+ },
140
+ 'api': {
141
+ 'v1': {
142
+ 'public': {
143
+ 'get': [
144
+ 'assets',
145
+ 'assets/{assets}',
146
+ 'assets/{asset}/networks',
147
+ 'instruments',
148
+ 'instruments/{instrument}',
149
+ 'instruments/{instrument}/quote',
150
+ 'instruments/{instrument}/funding',
151
+ 'instruments/{instrument}/candles',
152
+ ],
153
+ },
154
+ 'private': {
155
+ 'get': [
156
+ 'orders',
157
+ 'orders/{id}',
158
+ 'portfolios',
159
+ 'portfolios/{portfolio}',
160
+ 'portfolios/{portfolio}/detail',
161
+ 'portfolios/{portfolio}/summary',
162
+ 'portfolios/{portfolio}/balances',
163
+ 'portfolios/{portfolio}/balances/{asset}',
164
+ 'portfolios/{portfolio}/positions',
165
+ 'portfolios/{portfolio}/positions/{instrument}',
166
+ 'portfolios/fills',
167
+ 'portfolios/{portfolio}/fills',
168
+ 'transfers',
169
+ 'transfers/{transfer_uuid}',
170
+ ],
171
+ 'post': [
172
+ 'orders',
173
+ 'portfolios',
174
+ 'portfolios/margin',
175
+ 'portfolios/transfer',
176
+ 'transfers/withdraw',
177
+ 'transfers/address',
178
+ 'transfers/create-counterparty-id',
179
+ 'transfers/validate-counterparty-id',
180
+ 'transfers/withdraw/counterparty',
181
+ ],
182
+ 'put': [
183
+ 'orders/{id}',
184
+ 'portfolios/{portfolio}',
185
+ ],
186
+ 'delete': [
187
+ 'orders',
188
+ 'orders/{id}',
189
+ ],
190
+ },
191
+ },
192
+ },
193
+ 'fees': {
194
+ 'trading': {
195
+ 'taker': this.parseNumber('0.004'),
196
+ 'maker': this.parseNumber('0.002'),
197
+ 'tierBased': true,
198
+ 'percentage': true,
199
+ 'tiers': {
200
+ 'taker': [
201
+ [this.parseNumber('0'), this.parseNumber('0.004')],
202
+ [this.parseNumber('1000000'), this.parseNumber('0.004')],
203
+ [this.parseNumber('5000000'), this.parseNumber('0.0035')],
204
+ [this.parseNumber('10000000'), this.parseNumber('0.0035')],
205
+ [this.parseNumber('50000000'), this.parseNumber('0.003')],
206
+ [this.parseNumber('250000000'), this.parseNumber('0.0025')],
207
+ ],
208
+ 'maker': [
209
+ [this.parseNumber('0'), this.parseNumber('0.002')],
210
+ [this.parseNumber('1000000'), this.parseNumber('0.0016')],
211
+ [this.parseNumber('5000000'), this.parseNumber('0.001')],
212
+ [this.parseNumber('10000000'), this.parseNumber('0.0008')],
213
+ [this.parseNumber('50000000'), this.parseNumber('0.0005')],
214
+ [this.parseNumber('250000000'), this.parseNumber('0')],
215
+ ],
216
+ },
217
+ },
218
+ },
219
+ 'precisionMode': TICK_SIZE,
220
+ 'exceptions': {
221
+ 'exact': {},
222
+ 'broad': {
223
+ 'DUPLICATE_CLIENT_ORDER_ID': DuplicateOrderId,
224
+ 'Order rejected': InvalidOrder,
225
+ 'market orders must be IoC': InvalidOrder,
226
+ 'tif is required': InvalidOrder,
227
+ 'Invalid replace order request': InvalidOrder,
228
+ 'Unauthorized': PermissionDenied,
229
+ 'invalid result_limit': BadRequest,
230
+ 'is a required field': BadRequest,
231
+ 'Not Found': BadRequest,
232
+ 'ip not allowed': AuthenticationError,
233
+ },
234
+ },
235
+ 'timeframes': {
236
+ '1m': 'ONE_MINUTE',
237
+ '5m': 'FIVE_MINUTE',
238
+ '15m': 'FIFTEEN_MINUTE',
239
+ '30m': 'THIRTY_MINUTE',
240
+ '1h': 'ONE_HOUR',
241
+ '2h': 'TWO_HOUR',
242
+ '6h': 'SIX_HOUR',
243
+ '1d': 'ONE_DAY',
244
+ },
245
+ 'options': {
246
+ 'brokerId': 'nfqkvdjp',
247
+ 'portfolio': '',
248
+ 'withdraw': {
249
+ 'method': 'v1PrivatePostTransfersWithdraw', // use v1PrivatePostTransfersWithdrawCounterparty for counterparty withdrawals
250
+ },
251
+ 'networksById': {
252
+ 'ethereum': 'ETH',
253
+ 'arbitrum': 'ARBITRUM',
254
+ 'avacchain': 'AVAX',
255
+ 'optimism': 'OPTIMISM',
256
+ 'polygon': 'MATIC',
257
+ 'solana': 'SOL',
258
+ 'bitcoin': 'BTC',
259
+ },
260
+ },
261
+ 'features': {
262
+ 'default': {
263
+ 'sandbox': true,
264
+ 'createOrder': {
265
+ 'marginMode': false,
266
+ 'triggerPrice': true,
267
+ 'triggerPriceType': undefined,
268
+ 'triggerDirection': true,
269
+ 'stopLossPrice': false,
270
+ 'takeProfitPrice': false,
271
+ 'attachedStopLossTakeProfit': undefined,
272
+ 'timeInForce': {
273
+ 'IOC': true,
274
+ 'FOK': true,
275
+ 'PO': true,
276
+ 'GTD': true,
277
+ 'GTC': true, // has 30 days max
278
+ },
279
+ 'hedged': false,
280
+ 'trailing': false,
281
+ 'leverage': false,
282
+ 'marketBuyByCost': false,
283
+ 'marketBuyRequiresPrice': true,
284
+ 'selfTradePrevention': true,
285
+ 'iceberg': false,
286
+ },
287
+ 'createOrders': undefined,
288
+ 'fetchMyTrades': {
289
+ 'marginMode': false,
290
+ 'limit': 100,
291
+ 'daysBack': undefined,
292
+ 'untilDays': 10000,
293
+ 'symbolRequired': false,
294
+ },
295
+ 'fetchOrder': {
296
+ 'marginMode': false,
297
+ 'trigger': false,
298
+ 'trailing': false,
299
+ 'symbolRequired': false,
300
+ },
301
+ 'fetchOpenOrders': {
302
+ 'marginMode': false,
303
+ 'limit': 100,
304
+ 'trigger': false,
305
+ 'trailing': false,
306
+ 'symbolRequired': false,
307
+ },
308
+ 'fetchOrders': undefined,
309
+ 'fetchClosedOrders': undefined,
310
+ 'fetchOHLCV': {
311
+ 'limit': 300,
312
+ },
313
+ },
314
+ 'spot': {
315
+ 'extends': 'default',
316
+ },
317
+ 'swap': {
318
+ 'linear': {
319
+ 'extends': 'default',
320
+ },
321
+ 'inverse': {
322
+ 'extends': 'default',
323
+ },
324
+ },
325
+ 'future': {
326
+ 'linear': undefined,
327
+ 'inverse': undefined,
328
+ },
329
+ },
330
+ });
331
+ }
332
+ async handlePortfolioAndParams(methodName, params = {}) {
333
+ let portfolio = undefined;
334
+ [portfolio, params] = this.handleOptionAndParams(params, methodName, 'portfolio');
335
+ if ((portfolio !== undefined) && (portfolio !== '')) {
336
+ return [portfolio, params];
337
+ }
338
+ const defaultPortfolio = this.safeString(this.options, 'portfolio');
339
+ if ((defaultPortfolio !== undefined) && (defaultPortfolio !== '')) {
340
+ return [defaultPortfolio, params];
341
+ }
342
+ const accounts = await this.fetchAccounts();
343
+ for (let i = 0; i < accounts.length; i++) {
344
+ const account = accounts[i];
345
+ const info = this.safeDict(account, 'info', {});
346
+ if (this.safeBool(info, 'is_default')) {
347
+ const portfolioId = this.safeString(info, 'portfolio_id');
348
+ this.options['portfolio'] = portfolioId;
349
+ return [portfolioId, params];
350
+ }
351
+ }
352
+ throw new ArgumentsRequired(this.id + ' ' + methodName + '() requires a portfolio parameter or set the default portfolio with this.options["portfolio"]');
353
+ }
354
+ async handleNetworkIdAndParams(currencyCode, methodName, params) {
355
+ let networkId = undefined;
356
+ [networkId, params] = this.handleOptionAndParams(params, methodName, 'network_arn_id');
357
+ if (networkId === undefined) {
358
+ await this.loadCurrencyNetworks(currencyCode);
359
+ const networks = this.currencies[currencyCode]['networks'];
360
+ const network = this.safeString2(params, 'networkCode', 'network');
361
+ if (network === undefined) {
362
+ // find default network
363
+ if (this.isEmpty(networks)) {
364
+ throw new BadRequest(this.id + ' createDepositAddress network not found for currency ' + currencyCode + ' please specify networkId in params');
365
+ }
366
+ const defaultNetwork = this.findDefaultNetwork(networks);
367
+ networkId = defaultNetwork['id'];
368
+ }
369
+ else {
370
+ networkId = this.networkCodeToId(network, currencyCode);
371
+ }
372
+ }
373
+ return [networkId, params];
374
+ }
375
+ /**
376
+ * @method
377
+ * @name coinbaseinternational#fetchAccounts
378
+ * @description fetch all the accounts associated with a profile
379
+ * @see https://docs.cloud.coinbase.com/intx/reference/getportfolios
380
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
381
+ * @returns {object} a dictionary of [account structures]{@link https://docs.ccxt.com/#/?id=account-structure} indexed by the account type
382
+ */
383
+ async fetchAccounts(params = {}) {
384
+ await this.loadMarkets();
385
+ const response = await this.v1PrivateGetPortfolios(params);
386
+ //
387
+ // [
388
+ // {
389
+ // "portfolio_id":"1ap32qsc-1-0",
390
+ // "portfolio_uuid":"028d7f6c-b92c-7361-8b7e-2932711e5a22",
391
+ // "name":"CCXT Portfolio 030624-17:16",
392
+ // "user_uuid":"e6cf46b6-a32f-5fa7-addb-3324d4526fbd",
393
+ // "maker_fee_rate":"0",
394
+ // "taker_fee_rate":"0.0002",
395
+ // "trading_lock":false,
396
+ // "borrow_disabled":false,
397
+ // "is_lsp":false,
398
+ // "is_default":true,
399
+ // "cross_collateral_enabled":false
400
+ // }
401
+ // ]
402
+ //
403
+ return this.parseAccounts(response, params);
404
+ }
405
+ parseAccount(account) {
406
+ //
407
+ // {
408
+ // "portfolio_id":"1ap32qsc-1-0",
409
+ // "portfolio_uuid":"028d7f6c-b92c-7361-8b7e-2932711e5a22",
410
+ // "name":"CCXT Portfolio 030624-17:16",
411
+ // "user_uuid":"e6cf46b6-a32f-5fa7-addb-3324d4526fbd",
412
+ // "maker_fee_rate":"0",
413
+ // "taker_fee_rate":"0.0002",
414
+ // "trading_lock":false,
415
+ // "borrow_disabled":false,
416
+ // "is_lsp":false,
417
+ // "is_default":true,
418
+ // "cross_collateral_enabled":false
419
+ // }
420
+ //
421
+ return {
422
+ 'id': this.safeString2(account, 'portfolio_id', 'portfolio_uuid'),
423
+ 'type': undefined,
424
+ 'code': undefined,
425
+ 'info': account,
426
+ };
427
+ }
428
+ /**
429
+ * @method
430
+ * @name coinbaseinternational#fetchOHLCV
431
+ * @description fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
432
+ * @see https://docs.cdp.coinbase.com/intx/reference/getinstrumentcandles
433
+ * @param {string} symbol unified symbol of the market to fetch OHLCV data for
434
+ * @param {string} timeframe the length of time each candle represents
435
+ * @param {int} [since] timestamp in ms of the earliest candle to fetch
436
+ * @param {int} [limit] the maximum amount of candles to fetch, default 100 max 10000
437
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
438
+ * @returns {int[][]} A list of candles ordered as timestamp, open, high, low, close, volume
439
+ * @param {int} [params.until] timestamp in ms of the latest candle to fetch
440
+ * @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
441
+ */
442
+ async fetchOHLCV(symbol, timeframe = '1m', since = undefined, limit = 100, params = {}) {
443
+ await this.loadMarkets();
444
+ let paginate = false;
445
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOHLCV', 'paginate');
446
+ if (paginate) {
447
+ return await this.fetchPaginatedCallDeterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 10000);
448
+ }
449
+ const market = this.market(symbol);
450
+ const request = {
451
+ 'instrument': market['id'],
452
+ 'granularity': this.safeString(this.timeframes, timeframe, timeframe),
453
+ };
454
+ if (since !== undefined) {
455
+ request['start'] = this.iso8601(since);
456
+ }
457
+ else {
458
+ throw new ArgumentsRequired(this.id + ' fetchOHLCV() requires a since argument');
459
+ }
460
+ const unitl = this.safeInteger(params, 'until');
461
+ if (unitl !== undefined) {
462
+ params = this.omit(params, 'until');
463
+ request['end'] = this.iso8601(unitl);
464
+ }
465
+ const response = await this.v1PublicGetInstrumentsInstrumentCandles(this.extend(request, params));
466
+ //
467
+ // {
468
+ // "aggregations": [
469
+ // {
470
+ // "start": "2024-04-23T00:00:00Z",
471
+ // "open": "62884.4",
472
+ // "high": "64710.6",
473
+ // "low": "62884.4",
474
+ // "close": "63508.4",
475
+ // "volume": "3253.9983"
476
+ // }
477
+ // ]
478
+ // }
479
+ //
480
+ const candles = this.safeList(response, 'aggregations', []);
481
+ return this.parseOHLCVs(candles, market, timeframe, since, limit);
482
+ }
483
+ parseOHLCV(ohlcv, market = undefined) {
484
+ //
485
+ // {
486
+ // "start": "2024-04-23T00:00:00Z",
487
+ // "open": "62884.4",
488
+ // "high": "64710.6",
489
+ // "low": "62884.4",
490
+ // "close": "63508.4",
491
+ // "volume": "3253.9983"
492
+ // }
493
+ //
494
+ return [
495
+ this.parse8601(this.safeString2(ohlcv, 'start', 'time')),
496
+ this.safeNumber(ohlcv, 'open'),
497
+ this.safeNumber(ohlcv, 'high'),
498
+ this.safeNumber(ohlcv, 'low'),
499
+ this.safeNumber(ohlcv, 'close'),
500
+ this.safeNumber(ohlcv, 'volume'),
501
+ ];
502
+ }
503
+ /**
504
+ * @method
505
+ * @name coinbaseinternational#fetchFundingRateHistory
506
+ * @description fetches historical funding rate prices
507
+ * @see https://docs.cloud.coinbase.com/intx/reference/getinstrumentfunding
508
+ * @param {string} symbol unified symbol of the market to fetch the funding rate history for
509
+ * @param {int} [since] timestamp in ms of the earliest funding rate to fetch
510
+ * @param {int} [limit] the maximum amount of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure} to fetch
511
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
512
+ * @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)
513
+ * @returns {object[]} a list of [funding rate structures]{@link https://docs.ccxt.com/#/?id=funding-rate-history-structure}
514
+ */
515
+ async fetchFundingRateHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
516
+ if (symbol === undefined) {
517
+ throw new ArgumentsRequired(this.id + ' fetchFundingRateHistory() requires a symbol argument');
518
+ }
519
+ await this.loadMarkets();
520
+ let paginate = false;
521
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'paginate');
522
+ let maxEntriesPerRequest = undefined;
523
+ [maxEntriesPerRequest, params] = this.handleOptionAndParams(params, 'fetchFundingRateHistory', 'maxEntriesPerRequest', 100);
524
+ const pageKey = 'ccxtPageKey';
525
+ if (paginate) {
526
+ return await this.fetchPaginatedCallIncremental('fetchFundingRateHistory', symbol, since, limit, params, pageKey, maxEntriesPerRequest);
527
+ }
528
+ const market = this.market(symbol);
529
+ const page = this.safeInteger(params, pageKey, 1) - 1;
530
+ const request = {
531
+ 'instrument': market['id'],
532
+ 'result_offset': this.safeInteger2(params, 'offset', 'result_offset', page * maxEntriesPerRequest),
533
+ };
534
+ if (limit !== undefined) {
535
+ request['result_limit'] = limit;
536
+ }
537
+ const response = await this.v1PublicGetInstrumentsInstrumentFunding(this.extend(request, params));
538
+ //
539
+ // {
540
+ // "pagination":{
541
+ // "result_limit":"25",
542
+ // "result_offset":"0"
543
+ // },
544
+ // "results":[
545
+ // {
546
+ // "instrument_id":"149264167780483072",
547
+ // "funding_rate":"0.000011",
548
+ // "mark_price":"47388.1",
549
+ // "event_time":"2024-02-10T16:00:00Z"
550
+ // },
551
+ // ...
552
+ // ]
553
+ // }
554
+ //
555
+ const rawRates = this.safeList(response, 'results', []);
556
+ return this.parseFundingRateHistories(rawRates, market, since, limit);
557
+ }
558
+ parseFundingRateHistory(info, market = undefined) {
559
+ return this.parseFundingRate(info, market);
560
+ }
561
+ parseFundingRate(contract, market = undefined) {
562
+ //
563
+ // {
564
+ // "instrument_id":"149264167780483072",
565
+ // "funding_rate":"0.000011",
566
+ // "mark_price":"47388.1",
567
+ // "event_time":"2024-02-10T16:00:00Z"
568
+ // }
569
+ //
570
+ const fundingDatetime = this.safeString2(contract, 'event_time', 'time');
571
+ return {
572
+ 'info': contract,
573
+ 'symbol': this.safeSymbol(undefined, market),
574
+ 'markPrice': this.safeNumber(contract, 'mark_price'),
575
+ 'indexPrice': undefined,
576
+ 'interestRate': undefined,
577
+ 'estimatedSettlePrice': undefined,
578
+ 'timestamp': this.parse8601(fundingDatetime),
579
+ 'datetime': fundingDatetime,
580
+ 'fundingRate': this.safeNumber(contract, 'funding_rate'),
581
+ 'fundingTimestamp': this.parse8601(fundingDatetime),
582
+ 'fundingDatetime': fundingDatetime,
583
+ 'nextFundingRate': undefined,
584
+ 'nextFundingTimestamp': undefined,
585
+ 'nextFundingDatetime': undefined,
586
+ 'previousFundingRate': undefined,
587
+ 'previousFundingTimestamp': undefined,
588
+ 'previousFundingDatetime': undefined,
589
+ };
590
+ }
591
+ /**
592
+ * @method
593
+ * @name coinbaseinternational#fetchFundingHistory
594
+ * @description fetch the history of funding payments paid and received on this account
595
+ * @see https://docs.cdp.coinbase.com/intx/reference/gettransfers
596
+ * @param {string} [symbol] unified market symbol
597
+ * @param {int} [since] the earliest time in ms to fetch funding history for
598
+ * @param {int} [limit] the maximum number of funding history structures to retrieve
599
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
600
+ * @returns {object} a [funding history structure]{@link https://docs.ccxt.com/#/?id=funding-history-structure}
601
+ */
602
+ async fetchFundingHistory(symbol = undefined, since = undefined, limit = undefined, params = {}) {
603
+ await this.loadMarkets();
604
+ const request = {
605
+ 'type': 'FUNDING',
606
+ };
607
+ let market = undefined;
608
+ if (symbol !== undefined) {
609
+ market = this.market(symbol);
610
+ }
611
+ let portfolios = undefined;
612
+ [portfolios, params] = this.handleOptionAndParams(params, 'fetchFundingHistory', 'portfolios');
613
+ if (portfolios !== undefined) {
614
+ request['portfolios'] = portfolios;
615
+ }
616
+ if (since !== undefined) {
617
+ request['time_from'] = this.iso8601(since);
618
+ }
619
+ if (limit !== undefined) {
620
+ request['result_limit'] = limit;
621
+ }
622
+ else {
623
+ request['result_limit'] = 100;
624
+ }
625
+ const response = await this.v1PrivateGetTransfers(this.extend(request, params));
626
+ const fundings = this.safeList(response, 'results', []);
627
+ return this.parseIncomes(fundings, market, since, limit);
628
+ }
629
+ parseIncome(income, market = undefined) {
630
+ //
631
+ // {
632
+ // "amount":"0.0008",
633
+ // "asset":"USDC",
634
+ // "created_at":"2024-02-22T16:00:00Z",
635
+ // "from_portfolio":{
636
+ // "id":"13yuk1fs-1-0",
637
+ // "name":"Eng Test Portfolio - 2",
638
+ // "uuid":"018712f2-5ff9-7de3-9010-xxxxxxxxx"
639
+ // },
640
+ // "instrument_id":"149264164756389888",
641
+ // "instrument_symbol":"ETH-PERP",
642
+ // "position_id":"1xy4v51m-1-2",
643
+ // "status":"PROCESSED",
644
+ // "to_portfolio":{
645
+ // "name":"CB_FUND"
646
+ // },
647
+ // "transfer_type":"FUNDING",
648
+ // "transfer_uuid":"a6b708df-2c44-32c5-bb98-xxxxxxxxxx",
649
+ // "updated_at":"2024-02-22T16:00:00Z"
650
+ // }
651
+ //
652
+ const marketId = this.safeString(income, 'symbol');
653
+ market = this.safeMarket(marketId, market, undefined, 'contract');
654
+ const datetime = this.safeInteger(income, 'created_at');
655
+ const timestamp = this.parse8601(datetime);
656
+ const currencyId = this.safeString(income, 'asset');
657
+ const code = this.safeCurrencyCode(currencyId);
658
+ return {
659
+ 'info': income,
660
+ 'symbol': market['symbol'],
661
+ 'code': code,
662
+ 'timestamp': timestamp,
663
+ 'datetime': this.iso8601(timestamp),
664
+ 'id': this.safeString(income, 'transfer_uuid'),
665
+ 'amount': this.safeNumber(income, 'amount'),
666
+ 'rate': undefined,
667
+ };
668
+ }
669
+ /**
670
+ * @method
671
+ * @name coinbaseinternational#fetchTransfers
672
+ * @description fetch a history of internal transfers made on an account
673
+ * @see https://docs.cdp.coinbase.com/intx/reference/gettransfers
674
+ * @param {string} code unified currency code of the currency transferred
675
+ * @param {int} [since] the earliest time in ms to fetch transfers for
676
+ * @param {int} [limit] the maximum number of transfers structures to retrieve
677
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
678
+ * @returns {object[]} a list of [transfer structures]{@link https://docs.ccxt.com/#/?id=transfer-structure}
679
+ */
680
+ async fetchTransfers(code = undefined, since = undefined, limit = undefined, params = {}) {
681
+ await this.loadMarkets();
682
+ const request = {
683
+ 'type': 'INTERNAL',
684
+ };
685
+ let currency = undefined;
686
+ if (code !== undefined) {
687
+ currency = this.currency(code);
688
+ }
689
+ let portfolios = undefined;
690
+ [portfolios, params] = this.handleOptionAndParams(params, 'fetchTransfers', 'portfolios');
691
+ if (portfolios !== undefined) {
692
+ request['portfolios'] = portfolios;
693
+ }
694
+ if (since !== undefined) {
695
+ request['time_from'] = this.iso8601(since);
696
+ }
697
+ if (limit !== undefined) {
698
+ request['result_limit'] = limit;
699
+ }
700
+ else {
701
+ request['result_limit'] = 100;
702
+ }
703
+ const response = await this.v1PrivateGetTransfers(this.extend(request, params));
704
+ const transfers = this.safeList(response, 'results', []);
705
+ return this.parseTransfers(transfers, currency, since, limit);
706
+ }
707
+ parseTransfer(transfer, currency = undefined) {
708
+ //
709
+ // {
710
+ // "amount":"0.0008",
711
+ // "asset":"USDC",
712
+ // "created_at":"2024-02-22T16:00:00Z",
713
+ // "from_portfolio":{
714
+ // "id":"13yuk1fs-1-0",
715
+ // "name":"Eng Test Portfolio - 2",
716
+ // "uuid":"018712f2-5ff9-7de3-9010-xxxxxxxxx"
717
+ // },
718
+ // "instrument_id":"149264164756389888",
719
+ // "instrument_symbol":"ETH-PERP",
720
+ // "position_id":"1xy4v51m-1-2",
721
+ // "status":"PROCESSED",
722
+ // "to_portfolio":{
723
+ // "name":"CB_FUND"
724
+ // },
725
+ // "transfer_type":"FUNDING",
726
+ // "transfer_uuid":"a6b708df-2c44-32c5-bb98-xxxxxxxxxx",
727
+ // "updated_at":"2024-02-22T16:00:00Z"
728
+ // }
729
+ //
730
+ const datetime = this.safeInteger(transfer, 'created_at');
731
+ const timestamp = this.parse8601(datetime);
732
+ const currencyId = this.safeString(transfer, 'asset');
733
+ const code = this.safeCurrencyCode(currencyId);
734
+ const fromPorfolio = this.safeDict(transfer, 'from_portfolio', {});
735
+ const fromId = this.safeString(fromPorfolio, 'id');
736
+ const toPorfolio = this.safeDict(transfer, 'to_portfolio', {});
737
+ const toId = this.safeString(toPorfolio, 'id');
738
+ return {
739
+ 'info': transfer,
740
+ 'id': this.safeString(transfer, 'transfer_uuid'),
741
+ 'timestamp': timestamp,
742
+ 'datetime': this.iso8601(timestamp),
743
+ 'currency': code,
744
+ 'amount': this.safeNumber(transfer, 'amount'),
745
+ 'fromAccount': fromId,
746
+ 'toAccount': toId,
747
+ 'status': this.parseTransferStatus(this.safeString(transfer, 'status')),
748
+ };
749
+ }
750
+ parseTransferStatus(status) {
751
+ const statuses = {
752
+ 'FAILED': 'failed',
753
+ 'PROCESSED': 'ok',
754
+ 'NEW': 'pending',
755
+ 'STARTED': 'pending',
756
+ };
757
+ return this.safeString(statuses, status, status);
758
+ }
759
+ /**
760
+ * @method
761
+ * @name coinbaseinternational#createDepositAddress
762
+ * @description create a currency deposit address
763
+ * @see https://docs.cloud.coinbase.com/intx/reference/createaddress
764
+ * @see https://docs.cloud.coinbase.com/intx/reference/createcounterpartyid
765
+ * @param {string} code unified currency code of the currency for the deposit address
766
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
767
+ * @param {string} [params.network_arn_id] Identifies the blockchain network (e.g., networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a) if not provided will pick default
768
+ * @param {string} [params.network] unified network code to identify the blockchain network
769
+ * @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
770
+ */
771
+ async createDepositAddress(code, params = {}) {
772
+ await this.loadMarkets();
773
+ let method = undefined;
774
+ [method, params] = this.handleOptionAndParams(params, 'createDepositAddress', 'method', 'v1PrivatePostTransfersAddress');
775
+ let portfolio = undefined;
776
+ [portfolio, params] = await this.handlePortfolioAndParams('createDepositAddress', params);
777
+ const request = {
778
+ 'portfolio': portfolio,
779
+ };
780
+ if (method === 'v1PrivatePostTransfersAddress') {
781
+ const currency = this.currency(code);
782
+ request['asset'] = currency['id'];
783
+ let networkId = undefined;
784
+ [networkId, params] = await this.handleNetworkIdAndParams(code, 'createDepositAddress', params);
785
+ request['network_arn_id'] = networkId;
786
+ }
787
+ const response = await this[method](this.extend(request, params));
788
+ //
789
+ // v1PrivatePostTransfersAddress
790
+ // {
791
+ // address: "3LkwYscRyh6tUR1XTqXSJQoJnK7ucC1F4n",
792
+ // network_arn_id: "networks/bitcoin-mainnet/assets/6ecc0dcc-10a2-500e-b315-a3b9abae19ce",
793
+ // destination_tag: "",
794
+ // }
795
+ // v1PrivatePostTransfersCreateCounterpartyId
796
+ // {
797
+ // "portfolio_uuid":"018e0a8b-6b6b-70e0-9689-1e7926c2c8bc",
798
+ // "counterparty_id":"CB2ZPUCZBE"
799
+ // }
800
+ //
801
+ const tag = this.safeString(response, 'destination_tag');
802
+ const address = this.safeString2(response, 'address', 'counterparty_id');
803
+ return {
804
+ 'currency': code,
805
+ 'tag': tag,
806
+ 'address': address,
807
+ 'network': undefined,
808
+ 'info': response,
809
+ };
810
+ }
811
+ findDefaultNetwork(networks) {
812
+ const networksArray = this.toArray(networks);
813
+ for (let i = 0; i < networksArray.length; i++) {
814
+ const info = networksArray[i]['info'];
815
+ const is_default = this.safeBool(info, 'is_default', false);
816
+ if (is_default === true) {
817
+ return networksArray[i];
818
+ }
819
+ }
820
+ return networksArray[0];
821
+ }
822
+ async loadCurrencyNetworks(code, params = {}) {
823
+ const currency = this.currency(code);
824
+ const networks = this.safeDict(currency, 'networks');
825
+ if (networks !== undefined) {
826
+ return false;
827
+ }
828
+ const request = {
829
+ 'asset': currency['id'],
830
+ };
831
+ const rawNetworks = await this.v1PublicGetAssetsAssetNetworks(request);
832
+ //
833
+ // [
834
+ // {
835
+ // "asset_id":"1",
836
+ // "asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
837
+ // "asset_name":"USDC",
838
+ // "network_arn_id":"networks/ethereum-mainnet/assets/9bc140b4-69c3-5fc9-bd0d-b041bcf40039",
839
+ // "min_withdrawal_amt":"1",
840
+ // "max_withdrawal_amt":"100000000",
841
+ // "network_confirms":35,
842
+ // "processing_time":485,
843
+ // "is_default":true,
844
+ // "network_name":"ethereum",
845
+ // "display_name":"Ethereum"
846
+ // },
847
+ // ....
848
+ // ]
849
+ //
850
+ currency['networks'] = this.parseNetworks(rawNetworks);
851
+ return true;
852
+ }
853
+ parseNetworks(networks, params = {}) {
854
+ const result = {};
855
+ for (let i = 0; i < networks.length; i++) {
856
+ const network = this.extend(this.parseNetwork(networks[i]), params);
857
+ result[network['network']] = network;
858
+ }
859
+ return result;
860
+ }
861
+ parseNetwork(network, params = {}) {
862
+ //
863
+ // {
864
+ // "asset_id":"1",
865
+ // "asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
866
+ // "asset_name":"USDC",
867
+ // "network_arn_id":"networks/ethereum-mainnet/assets/9bc140b4-69c3-5fc9-bd0d-b041bcf40039",
868
+ // "min_withdrawal_amt":"1",
869
+ // "max_withdrawal_amt":"100000000",
870
+ // "network_confirms":35,
871
+ // "processing_time":485,
872
+ // "is_default":true,
873
+ // "network_name":"ethereum",
874
+ // "display_name":"Ethereum"
875
+ // }
876
+ //
877
+ const currencyId = this.safeString(network, 'asset_name');
878
+ const currencyCode = this.safeCurrencyCode(currencyId);
879
+ const networkId = this.safeString(network, 'network_arn_id');
880
+ const networkIdForCode = this.safeStringN(network, ['network_name', 'display_name', 'network_arn_id'], '');
881
+ return this.safeNetwork({
882
+ 'info': network,
883
+ 'id': networkId,
884
+ 'name': this.safeString(network, 'display_name'),
885
+ 'network': this.networkIdToCode(networkIdForCode, currencyCode),
886
+ 'active': undefined,
887
+ 'deposit': undefined,
888
+ 'withdraw': undefined,
889
+ 'precision': undefined,
890
+ 'fee': undefined,
891
+ 'limits': {
892
+ 'withdraw': {
893
+ 'min': this.safeNumber(network, 'min_withdrawal_amt'),
894
+ 'max': this.safeNumber(network, 'max_withdrawal_amt'),
895
+ },
896
+ 'deposit': {
897
+ 'min': undefined,
898
+ 'max': undefined,
899
+ },
900
+ },
901
+ });
902
+ }
903
+ /**
904
+ * @method
905
+ * @name coinbaseinternational#setMargin
906
+ * @description Either adds or reduces margin in order to set the margin to a specific value
907
+ * @see https://docs.cloud.coinbase.com/intx/reference/setportfoliomarginoverride
908
+ * @param {string} symbol unified market symbol of the market to set margin in
909
+ * @param {float} amount the amount to set the margin to
910
+ * @param {object} [params] parameters specific to the exchange API endpoint
911
+ * @returns {object} A [margin structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#add-margin-structure}
912
+ */
913
+ async setMargin(symbol, amount, params = {}) {
914
+ let portfolio = undefined;
915
+ [portfolio, params] = await this.handlePortfolioAndParams('setMargin', params);
916
+ if (symbol !== undefined) {
917
+ throw new BadRequest(this.id + ' setMargin() only allows setting margin to full portfolio');
918
+ }
919
+ const request = {
920
+ 'portfolio': portfolio,
921
+ 'margin_override': amount,
922
+ };
923
+ return await this.v1PrivatePostPortfoliosMargin(this.extend(request, params));
924
+ }
925
+ /**
926
+ * @method
927
+ * @name exchange#fetchDepositsWithdrawals
928
+ * @description fetch history of deposits and withdrawals
929
+ * @see https://docs.cloud.coinbase.com/intx/reference/gettransfers
930
+ * @param {string} [code] unified currency code for the currency of the deposit/withdrawals, default is undefined
931
+ * @param {int} [since] timestamp in ms of the earliest deposit/withdrawal, default is undefined
932
+ * @param {int} [limit] max number of deposit/withdrawals to return, default is undefined
933
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
934
+ * @param {string} [params.portfolios] Identifies the portfolios by UUID (e.g., 892e8c7c-e979-4cad-b61b-55a197932cf1) or portfolio ID (e.g., 5189861793641175). Can provide single or multiple portfolios to filter by or fetches transfers for all portfolios if none are provided.
935
+ * @param {int} [params.until] Only find transfers updated before this time. Use timestamp format
936
+ * @param {string} [params.status] The current status of transfer. Possible values: [PROCESSED, NEW, FAILED, STARTED]
937
+ * @param {string} [params.type] The type of transfer Possible values: [DEPOSIT, WITHDRAW, REBATE, STIPEND, INTERNAL, FUNDING]
938
+ * @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)
939
+ * @returns {object} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
940
+ */
941
+ async fetchDepositsWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
942
+ await this.loadMarkets();
943
+ let paginate = undefined;
944
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchDepositsWithdrawals', 'paginate');
945
+ let maxEntriesPerRequest = undefined;
946
+ [maxEntriesPerRequest, params] = this.handleOptionAndParams(params, 'fetchDepositsWithdrawals', 'maxEntriesPerRequest', 100);
947
+ const pageKey = 'ccxtPageKey';
948
+ if (paginate) {
949
+ return await this.fetchPaginatedCallIncremental('fetchDepositsWithdrawals', code, since, limit, params, pageKey, maxEntriesPerRequest);
950
+ }
951
+ const page = this.safeInteger(params, pageKey, 1) - 1;
952
+ const request = {
953
+ 'result_offset': this.safeInteger2(params, 'offset', 'result_offset', page * maxEntriesPerRequest),
954
+ };
955
+ if (since !== undefined) {
956
+ request['time_from'] = this.iso8601(since);
957
+ }
958
+ if (limit !== undefined) {
959
+ const newLimit = Math.min(limit, 100);
960
+ request['result_limit'] = newLimit;
961
+ }
962
+ let portfolios = undefined;
963
+ [portfolios, params] = this.handleOptionAndParams(params, 'fetchDepositsWithdrawals', 'portfolios');
964
+ if (portfolios !== undefined) {
965
+ request['portfolios'] = portfolios;
966
+ }
967
+ let until = undefined;
968
+ [until, params] = this.handleOptionAndParams(params, 'fetchDepositsWithdrawals', 'until');
969
+ if (until !== undefined) {
970
+ request['time_to'] = this.iso8601(until);
971
+ }
972
+ const response = await this.v1PrivateGetTransfers(this.extend(request, params));
973
+ //
974
+ // {
975
+ // "pagination":{
976
+ // "result_limit":25,
977
+ // "result_offset":0
978
+ // },
979
+ // "results":[
980
+ // {
981
+ // "transfer_uuid":"8e471d77-4208-45a8-9e5b-f3bd8a2c1fc3",
982
+ // "transfer_type":"WITHDRAW",
983
+ // "amount":"1.000000",
984
+ // "asset":"USDC",
985
+ // "status":"PROCESSED",
986
+ // "network_name":"ethereum",
987
+ // "created_at":"2024-03-14T02:32:18.497795Z",
988
+ // "updated_at":"2024-03-14T02:35:38.514588Z",
989
+ // "from_portfolio":{
990
+ // "id":"1yun54bb-1-6",
991
+ // "uuid":"018e0a8b-6b6b-70e0-9689-1e7926c2c8bc",
992
+ // "name":"fungus technology o?Portfolio"
993
+ // },
994
+ // "to_address":"0xcdcE79F820BE9d6C5033db5c31d1AE3A8c2399bB"
995
+ // }
996
+ // ]
997
+ // }
998
+ //
999
+ const rawTransactions = this.safeList(response, 'results', []);
1000
+ return this.parseTransactions(rawTransactions);
1001
+ }
1002
+ /**
1003
+ * @method
1004
+ * @name coinbaseinternational#fetchPosition
1005
+ * @see https://docs.cloud.coinbase.com/intx/reference/getportfolioposition
1006
+ * @description fetch data on an open position
1007
+ * @param {string} symbol unified market symbol of the market the position is held in
1008
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1009
+ * @returns {object} a [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
1010
+ */
1011
+ async fetchPosition(symbol, params = {}) {
1012
+ await this.loadMarkets();
1013
+ symbol = this.symbol(symbol);
1014
+ let portfolio = undefined;
1015
+ [portfolio, params] = await this.handlePortfolioAndParams('fetchPosition', params);
1016
+ const request = {
1017
+ 'portfolio': portfolio,
1018
+ 'instrument': this.marketId(symbol),
1019
+ };
1020
+ const position = await this.v1PrivateGetPortfoliosPortfolioPositionsInstrument(this.extend(request, params));
1021
+ //
1022
+ // {
1023
+ // "symbol":"BTC-PERP",
1024
+ // "instrument_id":"114jqr89-0-0",
1025
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
1026
+ // "vwap":"52482.3",
1027
+ // "net_size":"0",
1028
+ // "buy_order_size":"0.001",
1029
+ // "sell_order_size":"0",
1030
+ // "im_contribution":"0.2",
1031
+ // "unrealized_pnl":"0",
1032
+ // "mark_price":"52406.8",
1033
+ // "entry_vwap":"52472.9"
1034
+ // }
1035
+ //
1036
+ return this.parsePosition(position);
1037
+ }
1038
+ parsePosition(position, market = undefined) {
1039
+ //
1040
+ // {
1041
+ // "symbol":"BTC-PERP",
1042
+ // "instrument_id":"114jqr89-0-0",
1043
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
1044
+ // "vwap":"52482.3",
1045
+ // "net_size":"0",
1046
+ // "buy_order_size":"0.001",
1047
+ // "sell_order_size":"0",
1048
+ // "im_contribution":"0.2",
1049
+ // "unrealized_pnl":"0",
1050
+ // "mark_price":"52406.8",
1051
+ // "entry_vwap":"52472.9"
1052
+ // }
1053
+ //
1054
+ const marketId = this.safeString(position, 'symbol');
1055
+ let quantity = this.safeString(position, 'net_size');
1056
+ market = this.safeMarket(marketId, market, '-');
1057
+ let side = 'long';
1058
+ if (Precise.stringLe(quantity, '0')) {
1059
+ side = 'short';
1060
+ quantity = Precise.stringMul('-1', quantity);
1061
+ }
1062
+ return this.safePosition({
1063
+ 'info': position,
1064
+ 'id': this.safeString(position, 'id'),
1065
+ 'symbol': market['symbol'],
1066
+ 'entryPrice': undefined,
1067
+ 'markPrice': this.safeNumber(position, 'mark_price'),
1068
+ 'notional': undefined,
1069
+ 'collateral': undefined,
1070
+ 'unrealizedPnl': this.safeNumber(position, 'unrealized_pnl'),
1071
+ 'side': side,
1072
+ 'contracts': this.parseNumber(quantity),
1073
+ 'contractSize': this.safeNumber(market, 'contractSize'),
1074
+ 'timestamp': undefined,
1075
+ 'datetime': undefined,
1076
+ 'hedged': undefined,
1077
+ 'maintenanceMargin': undefined,
1078
+ 'maintenanceMarginPercentage': undefined,
1079
+ 'initialMargin': this.safeNumber(position, 'im_contribution'),
1080
+ 'initialMarginPercentage': undefined,
1081
+ 'leverage': undefined,
1082
+ 'liquidationPrice': undefined,
1083
+ 'marginRatio': undefined,
1084
+ 'marginMode': undefined,
1085
+ 'percentage': undefined,
1086
+ });
1087
+ }
1088
+ /**
1089
+ * @method
1090
+ * @name coinbaseinternational#fetchPositions
1091
+ * @see https://docs.cloud.coinbase.com/intx/reference/getportfoliopositions
1092
+ * @description fetch all open positions
1093
+ * @param {string[]} [symbols] list of unified market symbols
1094
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1095
+ * @returns {object[]} a list of [position structure]{@link https://docs.ccxt.com/#/?id=position-structure}
1096
+ */
1097
+ async fetchPositions(symbols = undefined, params = {}) {
1098
+ await this.loadMarkets();
1099
+ let portfolio = undefined;
1100
+ [portfolio, params] = await this.handlePortfolioAndParams('fetchPositions', params);
1101
+ const request = {
1102
+ 'portfolio': portfolio,
1103
+ };
1104
+ const response = await this.v1PrivateGetPortfoliosPortfolioPositions(this.extend(request, params));
1105
+ //
1106
+ // [
1107
+ // {
1108
+ // "symbol":"BTC-PERP",
1109
+ // "instrument_id":"114jqr89-0-0",
1110
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
1111
+ // "vwap":"52482.3",
1112
+ // "net_size":"0",
1113
+ // "buy_order_size":"0.001",
1114
+ // "sell_order_size":"0",
1115
+ // "im_contribution":"0.2",
1116
+ // "unrealized_pnl":"0",
1117
+ // "mark_price":"52406.8",
1118
+ // "entry_vwap":"52472.9"
1119
+ // }
1120
+ // ]
1121
+ //
1122
+ const positions = this.parsePositions(response);
1123
+ if (this.isEmpty(symbols)) {
1124
+ return positions;
1125
+ }
1126
+ symbols = this.marketSymbols(symbols);
1127
+ return this.filterByArrayPositions(positions, 'symbol', symbols, false);
1128
+ }
1129
+ /**
1130
+ * @method
1131
+ * @name coinbaseinternational#fetchWithdrawals
1132
+ * @description fetch all withdrawals made from an account
1133
+ * @see https://docs.cloud.coinbase.com/intx/reference/gettransfers
1134
+ * @param {string} code unified currency code
1135
+ * @param {int} [since] the earliest time in ms to fetch withdrawals for
1136
+ * @param {int} [limit] the maximum number of withdrawals structures to retrieve
1137
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1138
+ * @param {string} [params.portfolios] Identifies the portfolios by UUID (e.g., 892e8c7c-e979-4cad-b61b-55a197932cf1) or portfolio ID (e.g., 5189861793641175). Can provide single or multiple portfolios to filter by or fetches transfers for all portfolios if none are provided.
1139
+ * @param {int} [params.until] Only find transfers updated before this time. Use timestamp format
1140
+ * @param {string} [params.status] The current status of transfer. Possible values: [PROCESSED, NEW, FAILED, STARTED]
1141
+ * @param {string} [params.type] The type of transfer Possible values: [DEPOSIT, WITHDRAW, REBATE, STIPEND, INTERNAL, FUNDING]
1142
+ * @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)
1143
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1144
+ */
1145
+ async fetchWithdrawals(code = undefined, since = undefined, limit = undefined, params = {}) {
1146
+ await this.loadMarkets();
1147
+ params['type'] = 'WITHDRAW';
1148
+ return await this.fetchDepositsWithdrawals(code, since, limit, params);
1149
+ }
1150
+ /**
1151
+ * @method
1152
+ * @name coinbaseinternational#fetchDeposits
1153
+ * @description fetch all deposits made to an account
1154
+ * @param {string} code unified currency code
1155
+ * @param {int} [since] the earliest time in ms to fetch deposits for
1156
+ * @param {int} [limit] the maximum number of deposits structures to retrieve
1157
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1158
+ * @param {string} [params.portfolios] Identifies the portfolios by UUID (e.g., 892e8c7c-e979-4cad-b61b-55a197932cf1) or portfolio ID (e.g., 5189861793641175). Can provide single or multiple portfolios to filter by or fetches transfers for all portfolios if none are provided.
1159
+ * @param {int} [params.until] Only find transfers updated before this time. Use timestamp format
1160
+ * @param {string} [params.status] The current status of transfer. Possible values: [PROCESSED, NEW, FAILED, STARTED]
1161
+ * @param {string} [params.type] The type of transfer Possible values: [DEPOSIT, WITHDRAW, REBATE, STIPEND, INTERNAL, FUNDING]
1162
+ * @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)
1163
+ * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
1164
+ */
1165
+ async fetchDeposits(code = undefined, since = undefined, limit = undefined, params = {}) {
1166
+ await this.loadMarkets();
1167
+ params['type'] = 'DEPOSIT';
1168
+ return await this.fetchDepositsWithdrawals(code, since, limit, params);
1169
+ }
1170
+ parseTransactionStatus(status) {
1171
+ const statuses = {
1172
+ 'PROCESSED': 'ok',
1173
+ 'NEW': 'pending',
1174
+ 'STARTED': 'pending',
1175
+ 'FAILED': 'canceled',
1176
+ };
1177
+ return this.safeString(statuses, status, status);
1178
+ }
1179
+ parseTransaction(transaction, currency = undefined) {
1180
+ //
1181
+ // {
1182
+ // "idem":"8e471d77-4208-45a8-9e5b-f3bd8a2c1fc3"
1183
+ // }
1184
+ // const transactionType = this.safeString (transaction, 'type');
1185
+ const datetime = this.safeString(transaction, 'updated_at');
1186
+ const fromPorfolio = this.safeDict(transaction, 'from_portfolio', {});
1187
+ const addressFrom = this.safeStringN(transaction, ['from_address', 'from_cb_account', this.safeStringN(fromPorfolio, ['id', 'uuid', 'name']), 'from_counterparty_id']);
1188
+ const toPorfolio = this.safeDict(transaction, 'from_portfolio', {});
1189
+ const addressTo = this.safeStringN(transaction, ['to_address', 'to_cb_account', this.safeStringN(toPorfolio, ['id', 'uuid', 'name']), 'to_counterparty_id']);
1190
+ return {
1191
+ 'info': transaction,
1192
+ 'id': this.safeString(transaction, 'transfer_uuid'),
1193
+ 'txid': this.safeString(transaction, 'transaction_uuid'),
1194
+ 'timestamp': this.parse8601(datetime),
1195
+ 'datetime': datetime,
1196
+ 'network': this.networkIdToCode(this.safeString(transaction, 'network_name')),
1197
+ 'address': undefined,
1198
+ 'addressTo': addressTo,
1199
+ 'addressFrom': addressFrom,
1200
+ 'tag': undefined,
1201
+ 'tagTo': undefined,
1202
+ 'tagFrom': undefined,
1203
+ 'type': this.safeString(transaction, 'resource'),
1204
+ 'amount': this.safeNumber(transaction, 'amount'),
1205
+ 'currency': this.safeCurrencyCode(this.safeString(transaction, 'asset'), currency),
1206
+ 'status': this.parseTransactionStatus(this.safeString(transaction, 'status')),
1207
+ 'updated': this.parse8601(datetime),
1208
+ 'fee': {
1209
+ 'cost': undefined,
1210
+ 'currency': undefined,
1211
+ },
1212
+ };
1213
+ }
1214
+ parseTrade(trade, market = undefined) {
1215
+ //
1216
+ // {
1217
+ // "portfolio_id":"1wp37qsc-1-0",
1218
+ // "portfolio_uuid":"018d7f6c-b92c-7361-8b7e-2932711e5a22",
1219
+ // "portfolio_name":"CCXT Portfolio 020624-17:16",
1220
+ // "fill_id":"1xbfy19y-1-184",
1221
+ // "exec_id":"280841526207070392",
1222
+ // "order_id":"1xbfv8yw-1-0",
1223
+ // "instrument_id":"114jqr89-0-0",
1224
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
1225
+ // "symbol":"BTC-PERP",
1226
+ // "match_id":"280841526207053840",
1227
+ // "fill_price":"52500",
1228
+ // "fill_qty":"0.01",
1229
+ // "client_id":"1x59ctku-1-1",
1230
+ // "client_order_id":"ccxt3e4e2a5f-4a89-",
1231
+ // "order_qty":"0.01",
1232
+ // "limit_price":"52500",
1233
+ // "total_filled":"0.01",
1234
+ // "filled_vwap":"52500",
1235
+ // "expire_time":"",
1236
+ // "stop_price":"",
1237
+ // "side":"BUY",
1238
+ // "tif":"GTC",
1239
+ // "stp_mode":"BOTH",
1240
+ // "flags":"",
1241
+ // "fee":"0.105",
1242
+ // "fee_asset":"USDC",
1243
+ // "order_status":"DONE",
1244
+ // "event_time":"2024-02-15T00:43:57.631Z"
1245
+ // }
1246
+ //
1247
+ const marketId = this.safeString(trade, 'symbol');
1248
+ const datetime = this.safeString(trade, 'event_time');
1249
+ return this.safeTrade({
1250
+ 'info': trade,
1251
+ 'id': this.safeString2(trade, 'fill_id', 'exec_id'),
1252
+ 'order': this.safeString(trade, 'order_id'),
1253
+ 'timestamp': this.parse8601(datetime),
1254
+ 'datetime': datetime,
1255
+ 'symbol': this.safeSymbol(marketId, market),
1256
+ 'type': undefined,
1257
+ 'side': this.safeStringLower(trade, 'side'),
1258
+ 'takerOrMaker': undefined,
1259
+ 'price': this.safeNumber(trade, 'fill_price'),
1260
+ 'amount': this.safeNumber(trade, 'fill_qty'),
1261
+ 'cost': undefined,
1262
+ 'fee': {
1263
+ 'cost': this.safeNumber(trade, 'fee'),
1264
+ 'currency': this.safeCurrencyCode(this.safeString(trade, 'fee_asset')),
1265
+ },
1266
+ });
1267
+ }
1268
+ /**
1269
+ * @method
1270
+ * @name coinbaseinternational#fetchMarkets
1271
+ * @see https://docs.cloud.coinbase.com/intx/reference/getinstruments
1272
+ * @description retrieves data on all markets for coinbaseinternational
1273
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1274
+ * @returns {object[]} an array of objects representing market data
1275
+ */
1276
+ async fetchMarkets(params = {}) {
1277
+ const response = await this.v1PublicGetInstruments(params);
1278
+ //
1279
+ // [
1280
+ // {
1281
+ // "instrument_id":"149264164756389888",
1282
+ // "instrument_uuid":"e9360798-6a10-45d6-af05-67c30eb91e2d",
1283
+ // "symbol":"ETH-PERP",
1284
+ // "type":"PERP",
1285
+ // "base_asset_id":"118059611793145856",
1286
+ // "base_asset_uuid":"d85dce9b-5b73-5c3c-8978-522ce1d1c1b4",
1287
+ // "base_asset_name":"ETH",
1288
+ // "quote_asset_id":"1",
1289
+ // "quote_asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
1290
+ // "quote_asset_name":"USDC",
1291
+ // "base_increment":"0.0001",
1292
+ // "quote_increment":"0.01",
1293
+ // "price_band_percent":"0.02",
1294
+ // "market_order_percent":"0.0075",
1295
+ // "qty_24hr":"44434.8131",
1296
+ // "notional_24hr":"110943454.279785",
1297
+ // "avg_daily_qty":"1099171.6025",
1298
+ // "avg_daily_notional":"2637240145.456987",
1299
+ // "previous_day_qty":"78909.3939",
1300
+ // "open_interest":"1270.749",
1301
+ // "position_limit_qty":"1831.9527",
1302
+ // "position_limit_adq_pct":"0.05",
1303
+ // "replacement_cost":"0.23",
1304
+ // "base_imf":"0.1",
1305
+ // "min_notional_value":"10",
1306
+ // "funding_interval":"3600000000000",
1307
+ // "trading_state":"TRADING",
1308
+ // "quote":{
1309
+ // "best_bid_price":"2490.8",
1310
+ // "best_bid_size":"9.0515",
1311
+ // "best_ask_price":"2490.81",
1312
+ // "best_ask_size":"4.8486",
1313
+ // "trade_price":"2490.39",
1314
+ // "trade_qty":"0.9508",
1315
+ // "index_price":"2490.5",
1316
+ // "mark_price":"2490.8",
1317
+ // "settlement_price":"2490.81",
1318
+ // "limit_up":"2615.42",
1319
+ // "limit_down":"2366.34",
1320
+ // "predicted_funding":"0.000009",
1321
+ // "timestamp":"2024-02-10T16:07:39.454Z"
1322
+ // }
1323
+ // },
1324
+ // ...
1325
+ // ]
1326
+ //
1327
+ return this.parseMarkets(response);
1328
+ }
1329
+ parseMarket(market) {
1330
+ //
1331
+ // {
1332
+ // "instrument_id":"149264164756389888",
1333
+ // "instrument_uuid":"e9360798-6a10-45d6-af05-67c30eb91e2d",
1334
+ // "symbol":"ETH-PERP",
1335
+ // "type":"PERP",
1336
+ // "base_asset_id":"118059611793145856",
1337
+ // "base_asset_uuid":"d85dce9b-5b73-5c3c-8978-522ce1d1c1b4",
1338
+ // "base_asset_name":"ETH",
1339
+ // "quote_asset_id":"1",
1340
+ // "quote_asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
1341
+ // "quote_asset_name":"USDC",
1342
+ // "base_increment":"0.0001",
1343
+ // "quote_increment":"0.01",
1344
+ // "price_band_percent":"0.02",
1345
+ // "market_order_percent":"0.0075",
1346
+ // "qty_24hr":"44434.8131",
1347
+ // "notional_24hr":"110943454.279785",
1348
+ // "avg_daily_qty":"1099171.6025",
1349
+ // "avg_daily_notional":"2637240145.456987",
1350
+ // "previous_day_qty":"78909.3939",
1351
+ // "open_interest":"1270.749",
1352
+ // "position_limit_qty":"1831.9527",
1353
+ // "position_limit_adq_pct":"0.05",
1354
+ // "replacement_cost":"0.23",
1355
+ // "base_imf":"0.1",
1356
+ // "min_notional_value":"10",
1357
+ // "funding_interval":"3600000000000",
1358
+ // "trading_state":"TRADING",
1359
+ // "quote":{
1360
+ // "best_bid_price":"2490.8",
1361
+ // "best_bid_size":"9.0515",
1362
+ // "best_ask_price":"2490.81",
1363
+ // "best_ask_size":"4.8486",
1364
+ // "trade_price":"2490.39",
1365
+ // "trade_qty":"0.9508",
1366
+ // "index_price":"2490.5",
1367
+ // "mark_price":"2490.8",
1368
+ // "settlement_price":"2490.81",
1369
+ // "limit_up":"2615.42",
1370
+ // "limit_down":"2366.34",
1371
+ // "predicted_funding":"0.000009",
1372
+ // "timestamp":"2024-02-10T16:07:39.454Z"
1373
+ // }
1374
+ // }
1375
+ //
1376
+ const marketId = this.safeString(market, 'symbol');
1377
+ const baseId = this.safeString(market, 'base_asset_name');
1378
+ const quoteId = this.safeString(market, 'quote_asset_name');
1379
+ const typeId = this.safeString(market, 'type'); // 'SPOT', 'PERP'
1380
+ const isSpot = (typeId === 'SPOT');
1381
+ const fees = this.fees;
1382
+ let symbol = baseId + '/' + quoteId;
1383
+ let settleId = undefined;
1384
+ if (!isSpot) {
1385
+ settleId = quoteId;
1386
+ symbol += ':' + quoteId;
1387
+ }
1388
+ return {
1389
+ 'id': marketId,
1390
+ 'lowercaseId': marketId.toLowerCase(),
1391
+ 'symbol': symbol,
1392
+ 'base': baseId,
1393
+ 'quote': quoteId,
1394
+ 'settle': settleId ? settleId : undefined,
1395
+ 'baseId': baseId,
1396
+ 'quoteId': quoteId,
1397
+ 'settleId': settleId ? settleId : undefined,
1398
+ 'type': isSpot ? 'spot' : 'swap',
1399
+ 'spot': isSpot,
1400
+ 'margin': false,
1401
+ 'swap': !isSpot,
1402
+ 'future': false,
1403
+ 'option': false,
1404
+ 'active': this.safeString(market, 'trading_state') === 'TRADING',
1405
+ 'contract': !isSpot,
1406
+ 'linear': isSpot ? undefined : (settleId === quoteId),
1407
+ 'inverse': isSpot ? undefined : (settleId !== quoteId),
1408
+ 'taker': fees['trading']['taker'],
1409
+ 'maker': fees['trading']['maker'],
1410
+ 'contractSize': isSpot ? undefined : 1,
1411
+ 'expiry': undefined,
1412
+ 'expiryDatetime': undefined,
1413
+ 'strike': undefined,
1414
+ 'optionType': undefined,
1415
+ 'precision': {
1416
+ 'amount': this.safeNumber(market, 'base_increment'),
1417
+ 'price': this.safeNumber(market, 'quote_increment'),
1418
+ 'cost': this.safeNumber(market, 'quote_increment'),
1419
+ },
1420
+ 'limits': {
1421
+ 'leverage': {
1422
+ 'min': undefined,
1423
+ 'max': this.safeNumber(market, 'base_imf'),
1424
+ },
1425
+ 'amount': {
1426
+ 'min': undefined,
1427
+ 'max': isSpot ? undefined : this.safeNumber(market, 'position_limit_qty'),
1428
+ },
1429
+ 'price': {
1430
+ 'min': undefined,
1431
+ 'max': undefined,
1432
+ },
1433
+ 'cost': {
1434
+ 'min': this.safeNumber(market, 'min_notional_value'),
1435
+ 'max': undefined,
1436
+ },
1437
+ },
1438
+ 'info': market,
1439
+ 'created': undefined,
1440
+ };
1441
+ }
1442
+ /**
1443
+ * @method
1444
+ * @name coinbaseinternational#fetchCurrencies
1445
+ * @description fetches all available currencies on an exchange
1446
+ * @see https://docs.cloud.coinbase.com/intx/reference/getassets
1447
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1448
+ * @returns {object} an associative dictionary of currencies
1449
+ */
1450
+ async fetchCurrencies(params = {}) {
1451
+ const currencies = await this.v1PublicGetAssets(params);
1452
+ //
1453
+ // [
1454
+ // {
1455
+ // "asset_id":"1",
1456
+ // "asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
1457
+ // "asset_name":"USDC",
1458
+ // "status":"ACTIVE",
1459
+ // "collateral_weight":1.0,
1460
+ // "supported_networks_enabled":true
1461
+ // },
1462
+ // ...
1463
+ // ]
1464
+ //
1465
+ return this.parseCurrencies(currencies);
1466
+ }
1467
+ parseCurrency(currency) {
1468
+ //
1469
+ // {
1470
+ // "asset_id":"1",
1471
+ // "asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
1472
+ // "asset_name":"USDC",
1473
+ // "status":"ACTIVE",
1474
+ // "collateral_weight":1.0,
1475
+ // "supported_networks_enabled":true
1476
+ // }
1477
+ //
1478
+ const id = this.safeString(currency, 'asset_name');
1479
+ const code = this.safeCurrencyCode(id);
1480
+ const statusId = this.safeString(currency, 'status');
1481
+ return this.safeCurrencyStructure({
1482
+ 'id': id,
1483
+ 'name': code,
1484
+ 'code': code,
1485
+ 'precision': undefined,
1486
+ 'info': currency,
1487
+ 'active': (statusId === 'ACTIVE'),
1488
+ 'deposit': undefined,
1489
+ 'withdraw': undefined,
1490
+ 'networks': undefined,
1491
+ 'fee': undefined,
1492
+ 'fees': undefined,
1493
+ 'limits': this.limits,
1494
+ });
1495
+ }
1496
+ /**
1497
+ * @method
1498
+ * @name coinbaseinternational#fetchTickers
1499
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
1500
+ * @see https://docs.cloud.coinbase.com/intx/reference/getinstruments
1501
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
1502
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1503
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1504
+ */
1505
+ async fetchTickers(symbols = undefined, params = {}) {
1506
+ await this.loadMarkets();
1507
+ symbols = this.marketSymbols(symbols);
1508
+ const instruments = await this.v1PublicGetInstruments(params);
1509
+ const tickers = {};
1510
+ for (let i = 0; i < instruments.length; i++) {
1511
+ const instrument = instruments[i];
1512
+ const marketId = this.safeString(instrument, 'symbol');
1513
+ const symbol = this.safeSymbol(marketId);
1514
+ const quote = this.safeDict(instrument, 'quote', {});
1515
+ tickers[symbol] = this.parseTicker(quote, this.safeMarket(marketId));
1516
+ }
1517
+ return this.filterByArray(tickers, 'symbol', symbols, true);
1518
+ }
1519
+ /**
1520
+ * @method
1521
+ * @name coinbaseinternational#fetchTicker
1522
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
1523
+ * @see https://docs.cloud.coinbase.com/intx/reference/getinstrumentquote
1524
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
1525
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1526
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
1527
+ */
1528
+ async fetchTicker(symbol, params = {}) {
1529
+ await this.loadMarkets();
1530
+ const market = this.market(symbol);
1531
+ const request = {
1532
+ 'instrument': this.marketId(symbol),
1533
+ };
1534
+ const ticker = await this.v1PublicGetInstrumentsInstrumentQuote(this.extend(request, params));
1535
+ return this.parseTicker(ticker, market);
1536
+ }
1537
+ parseTicker(ticker, market = undefined) {
1538
+ //
1539
+ // {
1540
+ // "best_bid_price":"2490.8",
1541
+ // "best_bid_size":"9.0515",
1542
+ // "best_ask_price":"2490.81",
1543
+ // "best_ask_size":"4.8486",
1544
+ // "trade_price":"2490.39",
1545
+ // "trade_qty":"0.9508",
1546
+ // "index_price":"2490.5",
1547
+ // "mark_price":"2490.8",
1548
+ // "settlement_price":"2490.81",
1549
+ // "limit_up":"2615.42",
1550
+ // "limit_down":"2366.34",
1551
+ // "predicted_funding":"0.000009",
1552
+ // "timestamp":"2024-02-10T16:07:39.454Z"
1553
+ // }
1554
+ //
1555
+ const datetime = this.safeString(ticker, 'timestamp');
1556
+ return this.safeTicker({
1557
+ 'info': ticker,
1558
+ 'symbol': this.safeSymbol(undefined, market),
1559
+ 'timestamp': this.parse8601(datetime),
1560
+ 'datetime': datetime,
1561
+ 'bid': this.safeNumber(ticker, 'best_bid_price'),
1562
+ 'bidVolume': this.safeNumber(ticker, 'best_bid_size'),
1563
+ 'ask': this.safeNumber(ticker, 'best_ask_price'),
1564
+ 'askVolume': this.safeNumber(ticker, 'best_ask_size'),
1565
+ 'high': undefined,
1566
+ 'low': undefined,
1567
+ 'open': undefined,
1568
+ 'close': undefined,
1569
+ 'last': undefined,
1570
+ 'change': undefined,
1571
+ 'percentage': undefined,
1572
+ 'average': undefined,
1573
+ 'vwap': undefined,
1574
+ 'baseVolume': undefined,
1575
+ 'quoteVolume': undefined,
1576
+ 'previousClose': undefined,
1577
+ 'markPrice': this.safeNumber(ticker, 'mark_price'),
1578
+ 'indexPrice': this.safeNumber(ticker, 'index_price'),
1579
+ });
1580
+ }
1581
+ /**
1582
+ * @method
1583
+ * @name coinbaseinternational#fetchBalance
1584
+ * @description query for balance and get the amount of funds available for trading or funds locked in orders
1585
+ * @see https://docs.cloud.coinbase.com/intx/reference/getportfoliobalances
1586
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1587
+ * @param {boolean} [params.v3] default false, set true to use v3 api endpoint
1588
+ * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
1589
+ */
1590
+ async fetchBalance(params = {}) {
1591
+ await this.loadMarkets();
1592
+ let portfolio = undefined;
1593
+ [portfolio, params] = await this.handlePortfolioAndParams('fetchBalance', params);
1594
+ const request = {
1595
+ 'portfolio': portfolio,
1596
+ };
1597
+ const balances = await this.v1PrivateGetPortfoliosPortfolioBalances(this.extend(request, params));
1598
+ //
1599
+ // [
1600
+ // {
1601
+ // "asset_id":"0-0-1",
1602
+ // "asset_name":"USDC",
1603
+ // "asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
1604
+ // "quantity":"500000.0000000000",
1605
+ // "hold":"0",
1606
+ // "hold_available_for_collateral":"0",
1607
+ // "transfer_hold":"0",
1608
+ // "collateral_value":"500000.0",
1609
+ // "max_withdraw_amount":"500000.0000000000",
1610
+ // "loan":"0",
1611
+ // "loan_collateral_requirement":"0.0"
1612
+ // }
1613
+ // ]
1614
+ //
1615
+ return this.parseBalance(balances);
1616
+ }
1617
+ parseBalance(response) {
1618
+ //
1619
+ // {
1620
+ // "asset_id":"0-0-1",
1621
+ // "asset_name":"USDC",
1622
+ // "asset_uuid":"2b92315d-eab7-5bef-84fa-089a131333f5",
1623
+ // "quantity":"500000.0000000000",
1624
+ // "hold":"0",
1625
+ // "hold_available_for_collateral":"0",
1626
+ // "transfer_hold":"0",
1627
+ // "collateral_value":"500000.0",
1628
+ // "max_withdraw_amount":"500000.0000000000",
1629
+ // "loan":"0",
1630
+ // "loan_collateral_requirement":"0.0"
1631
+ // }
1632
+ //
1633
+ const result = {
1634
+ 'info': response,
1635
+ };
1636
+ for (let i = 0; i < response.length; i++) {
1637
+ const rawBalance = response[i];
1638
+ const currencyId = this.safeString(rawBalance, 'asset_name');
1639
+ const code = this.safeCurrencyCode(currencyId);
1640
+ const account = this.account();
1641
+ account['total'] = this.safeString(rawBalance, 'quantity');
1642
+ account['used'] = this.safeString(rawBalance, 'hold');
1643
+ result[code] = account;
1644
+ }
1645
+ return this.safeBalance(result);
1646
+ }
1647
+ /**
1648
+ * @method
1649
+ * @name coinbaseinternational#transfer
1650
+ * @description Transfer an amount of asset from one portfolio to another.
1651
+ * @see https://docs.cloud.coinbase.com/intx/reference/createportfolioassettransfer
1652
+ * @param {string} code unified currency code
1653
+ * @param {float} amount amount to transfer
1654
+ * @param {string} fromAccount account to transfer from
1655
+ * @param {string} toAccount account to transfer to
1656
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1657
+ * @returns {object} a [transfer structure]{@link https://github.com/ccxt/ccxt/wiki/Manual#transfer-structure}
1658
+ */
1659
+ async transfer(code, amount, fromAccount, toAccount, params = {}) {
1660
+ await this.loadMarkets();
1661
+ const currency = this.currency(code);
1662
+ const request = {
1663
+ 'asset': currency['id'],
1664
+ 'ammount': amount,
1665
+ 'from': fromAccount,
1666
+ 'to': toAccount,
1667
+ };
1668
+ const response = await this.v1PrivatePostPortfoliosTransfer(this.extend(request, params));
1669
+ const success = this.safeBool(response, 'success');
1670
+ return {
1671
+ 'info': response,
1672
+ 'id': undefined,
1673
+ 'timestamp': undefined,
1674
+ 'datetime': undefined,
1675
+ 'currency': code,
1676
+ 'amount': amount,
1677
+ 'fromAccount': fromAccount,
1678
+ 'toAccount': toAccount,
1679
+ 'status': success ? 'ok' : 'failed',
1680
+ };
1681
+ }
1682
+ /**
1683
+ * @method
1684
+ * @name coinbaseinternational#createOrder
1685
+ * @description create a trade order
1686
+ * @see https://docs.cloud.coinbase.com/intx/reference/createorder
1687
+ * @param {string} symbol unified symbol of the market to create an order in
1688
+ * @param {string} type 'market' or 'limit'
1689
+ * @param {string} side 'buy' or 'sell'
1690
+ * @param {float} amount how much you want to trade in units of the base currency, quote currency for 'market' 'buy' orders
1691
+ * @param {float} [price] the price to fulfill the order, in units of the quote currency, ignored in market orders
1692
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1693
+ * @param {float} [params.stopPrice] alias for triggerPrice
1694
+ * @param {float} [params.triggerPrice] price to trigger stop orders
1695
+ * @param {float} [params.stopLossPrice] price to trigger stop-loss orders
1696
+ * @param {bool} [params.postOnly] true or false
1697
+ * @param {string} [params.tif] 'GTC', 'IOC', 'GTD' default is 'GTC' for limit orders and 'IOC' for market orders
1698
+ * @param {string} [params.expire_time] The expiration time required for orders with the time in force set to GTT. Must not go beyond 30 days of the current time. Uses ISO-8601 format (e.g., 2023-03-16T23:59:53Z)
1699
+ * @param {string} [params.stp_mode] Possible values: [NONE, AGGRESSING, BOTH] Specifies the behavior for self match handling. None disables the functionality, new cancels the newest order, and both cancels both orders.
1700
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1701
+ */
1702
+ async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
1703
+ await this.loadMarkets();
1704
+ const market = this.market(symbol);
1705
+ let typeId = type.toUpperCase();
1706
+ const triggerPrice = this.safeNumberN(params, ['triggerPrice', 'stopPrice', 'stop_price']);
1707
+ const clientOrderIdprefix = this.safeString(this.options, 'brokerId', 'nfqkvdjp');
1708
+ let clientOrderId = clientOrderIdprefix + '-' + this.uuid();
1709
+ clientOrderId = clientOrderId.slice(0, 17);
1710
+ const request = {
1711
+ 'client_order_id': clientOrderId,
1712
+ 'side': side.toUpperCase(),
1713
+ 'instrument': market['id'],
1714
+ 'size': this.amountToPrecision(market['symbol'], amount),
1715
+ };
1716
+ if (triggerPrice !== undefined) {
1717
+ if (type === 'limit') {
1718
+ typeId = 'STOP_LIMIT';
1719
+ }
1720
+ else {
1721
+ typeId = 'STOP';
1722
+ }
1723
+ request['stop_price'] = triggerPrice;
1724
+ }
1725
+ request['type'] = typeId;
1726
+ if (type === 'limit') {
1727
+ if (price === undefined) {
1728
+ throw new InvalidOrder(this.id + ' createOrder() requires a price parameter for a limit order types');
1729
+ }
1730
+ request['price'] = price;
1731
+ }
1732
+ let portfolio = undefined;
1733
+ [portfolio, params] = await this.handlePortfolioAndParams('createOrder', params);
1734
+ if (portfolio !== undefined) {
1735
+ request['portfolio'] = portfolio;
1736
+ }
1737
+ const postOnly = this.safeBool2(params, 'postOnly', 'post_only');
1738
+ let tif = this.safeString2(params, 'tif', 'timeInForce');
1739
+ // market orders must be IOC
1740
+ if (typeId === 'MARKET') {
1741
+ if (tif !== undefined && tif !== 'IOC') {
1742
+ throw new InvalidOrder(this.id + ' createOrder() market orders must have tif set to "IOC"');
1743
+ }
1744
+ tif = 'IOC';
1745
+ }
1746
+ else {
1747
+ tif = (tif === undefined) ? 'GTC' : tif;
1748
+ }
1749
+ if (postOnly !== undefined) {
1750
+ request['post_only'] = postOnly;
1751
+ }
1752
+ request['tif'] = tif;
1753
+ params = this.omit(params, ['client_order_id', 'user', 'postOnly', 'timeInForce']);
1754
+ const response = await this.v1PrivatePostOrders(this.extend(request, params));
1755
+ //
1756
+ // {
1757
+ // "order_id":"1x96skvg-1-0",
1758
+ // "client_order_id":"ccxt",
1759
+ // "side":"BUY",
1760
+ // "instrument_id":"114jqr89-0-0",
1761
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
1762
+ // "symbol":"BTC-PERP",
1763
+ // "portfolio_id":"1wp37qsc-1-0",
1764
+ // "portfolio_uuid":"018d7f6c-b92c-7361-8b7e-2932711e5a22",
1765
+ // "type":"LIMIT",
1766
+ // "price":"10000",
1767
+ // "size":"0.001",
1768
+ // "tif":"GTC",
1769
+ // "stp_mode":"BOTH",
1770
+ // "event_type":"NEW",
1771
+ // "order_status":"WORKING",
1772
+ // "leaves_qty":"0.001",
1773
+ // "exec_qty":"0",
1774
+ // "avg_price":"0",
1775
+ // "fee":"0"
1776
+ // }
1777
+ //
1778
+ return this.parseOrder(response, market);
1779
+ }
1780
+ parseOrder(order, market = undefined) {
1781
+ //
1782
+ // {
1783
+ // "order_id":"1x96skvg-1-0",
1784
+ // "client_order_id":"ccxt",
1785
+ // "side":"BUY",
1786
+ // "instrument_id":"114jqr89-0-0",
1787
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
1788
+ // "symbol":"BTC-PERP",
1789
+ // "portfolio_id":"1wp37qsc-1-0",
1790
+ // "portfolio_uuid":"018d7f6c-b92c-7361-8b7e-2932711e5a22",
1791
+ // "type":"LIMIT",
1792
+ // "price":"10000",
1793
+ // "size":"0.001",
1794
+ // "tif":"GTC",
1795
+ // "stp_mode":"BOTH",
1796
+ // "event_type":"NEW",
1797
+ // "order_status":"WORKING",
1798
+ // "leaves_qty":"0.001",
1799
+ // "exec_qty":"0",
1800
+ // "avg_price":"0",
1801
+ // "fee":"0"
1802
+ // }
1803
+ //
1804
+ const marketId = this.safeString(order, 'symbol');
1805
+ const feeCost = this.safeNumber(order, 'fee');
1806
+ let fee = undefined;
1807
+ if (feeCost !== undefined) {
1808
+ fee = {
1809
+ 'cost': feeCost,
1810
+ };
1811
+ }
1812
+ const datetime = this.safeString2(order, 'submit_time', 'event_time');
1813
+ return this.safeOrder({
1814
+ 'info': order,
1815
+ 'id': this.safeString(order, 'order_id'),
1816
+ 'clientOrderId': this.safeString(order, 'client_order_id'),
1817
+ 'timestamp': this.parse8601(datetime),
1818
+ 'datetime': datetime,
1819
+ 'lastTradeTimestamp': undefined,
1820
+ 'symbol': this.safeSymbol(marketId, market),
1821
+ 'type': this.parseOrderType(this.safeString(order, 'type')),
1822
+ 'timeInForce': this.safeString(order, 'tif'),
1823
+ 'postOnly': undefined,
1824
+ 'side': this.safeStringLower(order, 'side'),
1825
+ 'price': this.safeString(order, 'price'),
1826
+ 'triggerPrice': this.safeString(order, 'stop_price'),
1827
+ 'amount': this.safeString(order, 'size'),
1828
+ 'filled': this.safeString(order, 'exec_qty'),
1829
+ 'remaining': this.safeString(order, 'leaves_qty'),
1830
+ 'cost': undefined,
1831
+ 'average': this.safeString(order, 'avg_price'),
1832
+ 'status': this.parseOrderStatus(this.safeString(order, 'order_status')),
1833
+ 'fee': fee,
1834
+ 'trades': undefined,
1835
+ }, market);
1836
+ }
1837
+ parseOrderStatus(status) {
1838
+ const statuses = {
1839
+ 'NEW': 'open',
1840
+ 'PARTIAL_FILLED': 'open',
1841
+ 'FILLED': 'closed',
1842
+ 'CANCELED': 'canceled',
1843
+ 'REPLACED': 'canceled',
1844
+ 'PENDING_CANCEL': 'open',
1845
+ 'REJECTED': 'rejected',
1846
+ 'PENDING_NEW': 'open',
1847
+ 'EXPIRED': 'expired',
1848
+ 'PENDING_REPLACE': 'open',
1849
+ };
1850
+ return this.safeString(statuses, status, status);
1851
+ }
1852
+ parseOrderType(type) {
1853
+ if (type === 'UNKNOWN_ORDER_TYPE') {
1854
+ return undefined;
1855
+ }
1856
+ const types = {
1857
+ 'MARKET': 'market',
1858
+ 'LIMIT': 'limit',
1859
+ 'STOP': 'limit',
1860
+ 'STOP_LIMIT': 'limit',
1861
+ };
1862
+ return this.safeString(types, type, type);
1863
+ }
1864
+ /**
1865
+ * @method
1866
+ * @name coinbaseinternational#cancelOrder
1867
+ * @description cancels an open order
1868
+ * @see https://docs.cloud.coinbase.com/intx/reference/cancelorder
1869
+ * @param {string} id order id
1870
+ * @param {string} symbol not used by coinbaseinternational cancelOrder()
1871
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1872
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1873
+ */
1874
+ async cancelOrder(id, symbol = undefined, params = {}) {
1875
+ await this.loadMarkets();
1876
+ let portfolio = undefined;
1877
+ [portfolio, params] = await this.handlePortfolioAndParams('cancelOrder', params);
1878
+ const request = {
1879
+ 'portfolio': portfolio,
1880
+ 'id': id,
1881
+ };
1882
+ let market = undefined;
1883
+ if (symbol !== undefined) {
1884
+ market = this.market(symbol);
1885
+ }
1886
+ const orders = await this.v1PrivateDeleteOrdersId(this.extend(request, params));
1887
+ //
1888
+ // {
1889
+ // "order_id":"1x96skvg-1-0",
1890
+ // "client_order_id":"ccxt",
1891
+ // "side":"BUY",
1892
+ // "instrument_id":"114jqr89-0-0",
1893
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
1894
+ // "symbol":"BTC-PERP",
1895
+ // "portfolio_id":"1wp37qsc-1-0",
1896
+ // "portfolio_uuid":"018d7f6c-b92c-7361-8b7e-2932711e5a22",
1897
+ // "type":"LIMIT",
1898
+ // "price":"10000",
1899
+ // "size":"0.001",
1900
+ // "tif":"GTC",
1901
+ // "stp_mode":"BOTH",
1902
+ // "event_type":"CANCELED",
1903
+ // "order_status":"DONE",
1904
+ // "leaves_qty":"0.001",
1905
+ // "exec_qty":"0",
1906
+ // "avg_price":"0",
1907
+ // "fee":"0"
1908
+ // }
1909
+ //
1910
+ return this.parseOrder(orders, market);
1911
+ }
1912
+ /**
1913
+ * @method
1914
+ * @name coinbaseinternational#cancelAllOrders
1915
+ * @description cancel all open orders
1916
+ * @param {string} symbol unified market symbol, only orders in the market of this symbol are cancelled when symbol is not undefined
1917
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1918
+ * @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
1919
+ */
1920
+ async cancelAllOrders(symbol = undefined, params = {}) {
1921
+ await this.loadMarkets();
1922
+ let portfolio = undefined;
1923
+ [portfolio, params] = await this.handlePortfolioAndParams('cancelAllOrders', params);
1924
+ const request = {
1925
+ 'portfolio': portfolio,
1926
+ };
1927
+ let market = undefined;
1928
+ if (symbol) {
1929
+ market = this.market(symbol);
1930
+ request['instrument'] = market['id'];
1931
+ }
1932
+ const orders = await this.v1PrivateDeleteOrders(this.extend(request, params));
1933
+ return this.parseOrders(orders, market);
1934
+ }
1935
+ /**
1936
+ * @method
1937
+ * @name coinbaseinternational#editOrder
1938
+ * @description edit a trade order
1939
+ * @see https://docs.cloud.coinbase.com/intx/reference/modifyorder
1940
+ * @param {string} id cancel order id
1941
+ * @param {string} symbol unified symbol of the market to create an order in
1942
+ * @param {string} type 'market' or 'limit'
1943
+ * @param {string} side 'buy' or 'sell'
1944
+ * @param {float} amount how much of currency you want to trade in units of base currency
1945
+ * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1946
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1947
+ * @param {string} params.clientOrderId client order id
1948
+ * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1949
+ */
1950
+ async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
1951
+ await this.loadMarkets();
1952
+ const market = this.market(symbol);
1953
+ const request = {
1954
+ 'id': id,
1955
+ };
1956
+ let portfolio = undefined;
1957
+ [portfolio, params] = await this.handlePortfolioAndParams('editOrder', params);
1958
+ if (portfolio !== undefined) {
1959
+ request['portfolio'] = portfolio;
1960
+ }
1961
+ if (amount !== undefined) {
1962
+ request['size'] = this.amountToPrecision(symbol, amount);
1963
+ }
1964
+ if (price !== undefined) {
1965
+ request['price'] = this.priceToPrecision(symbol, price);
1966
+ }
1967
+ const triggerPrice = this.safeNumberN(params, ['stopPrice', 'stop_price', 'triggerPrice']);
1968
+ if (triggerPrice !== undefined) {
1969
+ request['stop_price'] = triggerPrice;
1970
+ }
1971
+ const clientOrderId = this.safeString2(params, 'client_order_id', 'clientOrderId');
1972
+ if (clientOrderId === undefined) {
1973
+ throw new BadRequest(this.id + ' editOrder() requires a clientOrderId parameter');
1974
+ }
1975
+ request['client_order_id'] = clientOrderId;
1976
+ const order = await this.v1PrivatePutOrdersId(this.extend(request, params));
1977
+ return this.parseOrder(order, market);
1978
+ }
1979
+ /**
1980
+ * @method
1981
+ * @name coinbaseinternational#fetchOrder
1982
+ * @description fetches information on an order made by the user
1983
+ * @see https://docs.cloud.coinbase.com/intx/reference/modifyorder
1984
+ * @param {string} id the order id
1985
+ * @param {string} symbol unified market symbol that the order was made in
1986
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
1987
+ * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
1988
+ */
1989
+ async fetchOrder(id, symbol = undefined, params = {}) {
1990
+ await this.loadMarkets();
1991
+ let market = undefined;
1992
+ if (symbol !== undefined) {
1993
+ market = this.market(symbol);
1994
+ }
1995
+ let portfolio = undefined;
1996
+ [portfolio, params] = await this.handlePortfolioAndParams('fetchOrder', params);
1997
+ const request = {
1998
+ 'id': id,
1999
+ 'portfolio': portfolio,
2000
+ };
2001
+ const order = await this.v1PrivateGetOrdersId(this.extend(request, params));
2002
+ //
2003
+ // {
2004
+ // "order_id":"1x96skvg-1-0",
2005
+ // "client_order_id":"ccxt",
2006
+ // "side":"BUY",
2007
+ // "instrument_id":"114jqr89-0-0",
2008
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
2009
+ // "symbol":"BTC-PERP",
2010
+ // "portfolio_id":"1wp37qsc-1-0",
2011
+ // "portfolio_uuid":"018d7f6c-b92c-7361-8b7e-2932711e5a22",
2012
+ // "type":"LIMIT",
2013
+ // "price":"10000",
2014
+ // "size":"0.001",
2015
+ // "tif":"GTC",
2016
+ // "stp_mode":"BOTH",
2017
+ // "event_type":"NEW",
2018
+ // "event_time":"2024-02-14T03:25:14Z",
2019
+ // "submit_time":"2024-02-14T03:25:13.999Z",
2020
+ // "order_status":"WORKING",
2021
+ // "leaves_qty":"0.001",
2022
+ // "exec_qty":"0",
2023
+ // "avg_price":"0",
2024
+ // "fee":"0"
2025
+ // }
2026
+ //
2027
+ return this.parseOrder(order, market);
2028
+ }
2029
+ /**
2030
+ * @method
2031
+ * @name coinbaseinternational#fetchOpenOrders
2032
+ * @description fetches information on all currently open orders
2033
+ * @see https://docs.cloud.coinbase.com/intx/reference/getorders
2034
+ * @param {string} symbol unified market symbol of the orders
2035
+ * @param {int} [since] timestamp in ms of the earliest order, default is undefined
2036
+ * @param {int} [limit] the maximum number of open order structures to retrieve
2037
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2038
+ * @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)
2039
+ * @param {int} [params.offset] offset
2040
+ * @param {string} [params.event_type] The most recent type of event that happened to the order. Allowed values: NEW, TRADE, REPLACED
2041
+ * @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
2042
+ */
2043
+ async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2044
+ await this.loadMarkets();
2045
+ let portfolio = undefined;
2046
+ [portfolio, params] = await this.handlePortfolioAndParams('fetchOpenOrders', params);
2047
+ let paginate = false;
2048
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'paginate');
2049
+ let maxEntriesPerRequest = undefined;
2050
+ [maxEntriesPerRequest, params] = this.handleOptionAndParams(params, 'fetchOpenOrders', 'maxEntriesPerRequest', 100);
2051
+ const pageKey = 'ccxtPageKey';
2052
+ if (paginate) {
2053
+ return await this.fetchPaginatedCallIncremental('fetchOpenOrders', symbol, since, limit, params, pageKey, maxEntriesPerRequest);
2054
+ }
2055
+ const page = this.safeInteger(params, pageKey, 1) - 1;
2056
+ const request = {
2057
+ 'portfolio': portfolio,
2058
+ 'result_offset': this.safeInteger2(params, 'offset', 'result_offset', page * maxEntriesPerRequest),
2059
+ };
2060
+ let market = undefined;
2061
+ if (symbol) {
2062
+ market = this.market(symbol);
2063
+ request['instrument'] = symbol;
2064
+ }
2065
+ if (limit !== undefined) {
2066
+ if (limit > 100) {
2067
+ throw new BadRequest(this.id + ' fetchOpenOrders() maximum limit is 100');
2068
+ }
2069
+ request['result_limit'] = limit;
2070
+ }
2071
+ if (since !== undefined) {
2072
+ request['ref_datetime'] = this.iso8601(since);
2073
+ }
2074
+ const response = await this.v1PrivateGetOrders(this.extend(request, params));
2075
+ //
2076
+ // {
2077
+ // "pagination":{
2078
+ // "result_limit":25,
2079
+ // "result_offset":0
2080
+ // },
2081
+ // "results":[
2082
+ // {
2083
+ // "order_id":"1y4cm6b4-1-0",
2084
+ // "client_order_id":"ccxtd0dd4b5d-8e5f-",
2085
+ // "side":"SELL",
2086
+ // "instrument_id":"114jqr89-0-0",
2087
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
2088
+ // "symbol":"BTC-PERP",
2089
+ // "portfolio_id":"1wp37qsc-1-0",
2090
+ // "portfolio_uuid":"018d7f6c-b92c-7361-8b7e-2932711e5a22",
2091
+ // "type":"LIMIT",
2092
+ // "price":"54000",
2093
+ // "size":"0.01",
2094
+ // "tif":"GTC",
2095
+ // "stp_mode":"BOTH",
2096
+ // "event_type":"NEW",
2097
+ // "event_time":"2024-02-24T16:46:37.413Z",
2098
+ // "submit_time":"2024-02-24T16:46:37.412Z",
2099
+ // "order_status":"WORKING",
2100
+ // "leaves_qty":"0.01",
2101
+ // "exec_qty":"0",
2102
+ // "avg_price":"0",
2103
+ // "fee":"0"
2104
+ // },
2105
+ // ...
2106
+ // ]
2107
+ // }
2108
+ //
2109
+ const rawOrders = this.safeList(response, 'results', []);
2110
+ return this.parseOrders(rawOrders, market, since, limit);
2111
+ }
2112
+ /**
2113
+ * @method
2114
+ * @name coinbaseinternational#fetchMyTrades
2115
+ * @description fetch all trades made by the user
2116
+ * @see https://docs.cloud.coinbase.com/intx/reference/getmultiportfoliofills
2117
+ * @param {string} symbol unified market symbol of the trades
2118
+ * @param {int} [since] timestamp in ms of the earliest order, default is undefined
2119
+ * @param {int} [limit] the maximum number of trade structures to fetch
2120
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2121
+ * @param {int} [params.until] the latest time in ms to fetch trades for
2122
+ * @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)
2123
+ * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
2124
+ */
2125
+ async fetchMyTrades(symbol = undefined, since = undefined, limit = undefined, params = {}) {
2126
+ await this.loadMarkets();
2127
+ let paginate = false;
2128
+ [paginate, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'paginate');
2129
+ const pageKey = 'ccxtPageKey';
2130
+ let maxEntriesPerRequest = undefined;
2131
+ [maxEntriesPerRequest, params] = this.handleOptionAndParams(params, 'fetchMyTrades', 'maxEntriesPerRequest', 100);
2132
+ if (paginate) {
2133
+ return await this.fetchPaginatedCallIncremental('fetchMyTrades', symbol, since, limit, params, pageKey, maxEntriesPerRequest);
2134
+ }
2135
+ let market = undefined;
2136
+ if (symbol !== undefined) {
2137
+ market = this.market(symbol);
2138
+ }
2139
+ const page = this.safeInteger(params, pageKey, 1) - 1;
2140
+ const request = {
2141
+ 'result_offset': this.safeInteger2(params, 'offset', 'result_offset', page * maxEntriesPerRequest),
2142
+ };
2143
+ if (limit !== undefined) {
2144
+ if (limit > 100) {
2145
+ throw new BadRequest(this.id + ' fetchMyTrades() maximum limit is 100. Consider setting paginate to true to fetch more trades.');
2146
+ }
2147
+ request['result_limit'] = limit;
2148
+ }
2149
+ if (since !== undefined) {
2150
+ request['time_from'] = this.iso8601(since);
2151
+ }
2152
+ const until = this.safeStringN(params, ['until']);
2153
+ if (until !== undefined) {
2154
+ params = this.omit(params, ['until']);
2155
+ request['ref_datetime'] = this.iso8601(until);
2156
+ }
2157
+ const response = await this.v1PrivateGetPortfoliosFills(this.extend(request, params));
2158
+ //
2159
+ // {
2160
+ // "pagination":{
2161
+ // "result_limit":25,
2162
+ // "result_offset":0
2163
+ // },
2164
+ // "results":[
2165
+ // {
2166
+ // "portfolio_id":"1wp37qsc-1-0",
2167
+ // "portfolio_uuid":"018d7f6c-b92c-7361-8b7e-2932711e5a22",
2168
+ // "portfolio_name":"CCXT Portfolio 020624-17:16",
2169
+ // "fill_id":"1xbfy19y-1-184",
2170
+ // "exec_id":"280841526207070392",
2171
+ // "order_id":"1xbfv8yw-1-0",
2172
+ // "instrument_id":"114jqr89-0-0",
2173
+ // "instrument_uuid":"b3469e0b-222c-4f8a-9f68-1f9e44d7e5e0",
2174
+ // "symbol":"BTC-PERP",
2175
+ // "match_id":"280841526207053840",
2176
+ // "fill_price":"52500",
2177
+ // "fill_qty":"0.01",
2178
+ // "client_id":"1x59ctku-1-1",
2179
+ // "client_order_id":"ccxt3e4e2a5f-4a89-",
2180
+ // "order_qty":"0.01",
2181
+ // "limit_price":"52500",
2182
+ // "total_filled":"0.01",
2183
+ // "filled_vwap":"52500",
2184
+ // "expire_time":"",
2185
+ // "stop_price":"",
2186
+ // "side":"BUY",
2187
+ // "tif":"GTC",
2188
+ // "stp_mode":"BOTH",
2189
+ // "flags":"",
2190
+ // "fee":"0.105",
2191
+ // "fee_asset":"USDC",
2192
+ // "order_status":"DONE",
2193
+ // "event_time":"2024-02-15T00:43:57.631Z"
2194
+ // },
2195
+ // ]
2196
+ // }
2197
+ //
2198
+ const trades = this.safeList(response, 'results', []);
2199
+ return this.parseTrades(trades, market, since, limit);
2200
+ }
2201
+ /**
2202
+ * @method
2203
+ * @name coinbaseinternational#withdraw
2204
+ * @description make a withdrawal
2205
+ * @see https://docs.cloud.coinbase.com/intx/reference/withdraw
2206
+ * @see https://docs.cloud.coinbase.com/intx/reference/counterpartywithdraw
2207
+ * @param {string} code unified currency code
2208
+ * @param {float} amount the amount to withdraw
2209
+ * @param {string} address the address to withdraw to
2210
+ * @param {string} [tag] an optional tag for the withdrawal
2211
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
2212
+ * @param {boolean} [params.add_network_fee_to_total] if true, deducts network fee from the portfolio, otherwise deduct fee from the withdrawal
2213
+ * @param {string} [params.network_arn_id] Identifies the blockchain network (e.g., networks/ethereum-mainnet/assets/313ef8a9-ae5a-5f2f-8a56-572c0e2a4d5a)
2214
+ * @param {string} [params.nonce] a unique integer representing the withdrawal request
2215
+ * @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
2216
+ */
2217
+ async withdraw(code, amount, address, tag = undefined, params = {}) {
2218
+ [tag, params] = this.handleWithdrawTagAndParams(tag, params);
2219
+ this.checkAddress(address);
2220
+ await this.loadMarkets();
2221
+ const currency = this.currency(code);
2222
+ let portfolio = undefined;
2223
+ [portfolio, params] = await this.handlePortfolioAndParams('withdraw', params);
2224
+ let method = undefined;
2225
+ [method, params] = this.handleOptionAndParams(params, 'withdraw', 'method', 'v1PrivatePostTransfersWithdraw');
2226
+ let networkId = undefined;
2227
+ [networkId, params] = await this.handleNetworkIdAndParams(code, 'withdraw', params);
2228
+ const request = {
2229
+ 'portfolio': portfolio,
2230
+ 'type': 'send',
2231
+ 'asset': currency['id'],
2232
+ 'address': address,
2233
+ 'amount': amount,
2234
+ 'currency': currency['id'],
2235
+ 'network_arn_id': networkId,
2236
+ 'nonce': this.nonce(),
2237
+ };
2238
+ const response = await this[method](this.extend(request, params));
2239
+ //
2240
+ // {
2241
+ // "idem":"8e471d77-4208-45a8-9e5b-f3bd8a2c1fc3"
2242
+ // }
2243
+ //
2244
+ return this.parseTransaction(response, currency);
2245
+ }
2246
+ safeNetwork(network) {
2247
+ let withdrawEnabled = this.safeBool(network, 'withdraw');
2248
+ let depositEnabled = this.safeBool(network, 'deposit');
2249
+ const limits = this.safeDict(network, 'limits');
2250
+ const withdraw = this.safeDict(limits, 'withdraw');
2251
+ const withdrawMax = this.safeNumber(withdraw, 'max');
2252
+ const deposit = this.safeDict(limits, 'deposit');
2253
+ const depositMax = this.safeNumber(deposit, 'max');
2254
+ if (withdrawEnabled === undefined && withdrawMax !== undefined) {
2255
+ withdrawEnabled = (withdrawMax > 0);
2256
+ }
2257
+ if (depositEnabled === undefined && depositMax !== undefined) {
2258
+ depositEnabled = (depositMax > 0);
2259
+ }
2260
+ const networkId = this.safeString(network, 'id');
2261
+ const isEnabled = (withdrawEnabled && depositEnabled);
2262
+ return {
2263
+ 'info': network['info'],
2264
+ 'id': networkId,
2265
+ 'name': this.safeString(network, 'name'),
2266
+ 'network': this.safeString(network, 'network'),
2267
+ 'active': this.safeBool(network, 'active', isEnabled),
2268
+ 'deposit': depositEnabled,
2269
+ 'withdraw': withdrawEnabled,
2270
+ 'fee': this.safeNumber(network, 'fee'),
2271
+ 'precision': this.safeNumber(network, 'precision'),
2272
+ 'limits': {
2273
+ 'withdraw': {
2274
+ 'min': this.safeNumber(withdraw, 'min'),
2275
+ 'max': withdrawMax,
2276
+ },
2277
+ 'deposit': {
2278
+ 'min': this.safeNumber(deposit, 'min'),
2279
+ 'max': depositMax,
2280
+ },
2281
+ },
2282
+ };
2283
+ }
2284
+ sign(path, api = [], method = 'GET', params = {}, headers = undefined, body = undefined) {
2285
+ const version = api[0];
2286
+ const signed = api[1] === 'private';
2287
+ let fullPath = '/' + version + '/' + this.implodeParams(path, params);
2288
+ const query = this.omit(params, this.extractParams(path));
2289
+ const savedPath = '/api' + fullPath;
2290
+ if (method === 'GET' || method === 'DELETE') {
2291
+ if (Object.keys(query).length) {
2292
+ fullPath += '?' + this.urlencodeWithArrayRepeat(query);
2293
+ }
2294
+ }
2295
+ const url = this.urls['api']['rest'] + fullPath;
2296
+ if (signed) {
2297
+ this.checkRequiredCredentials();
2298
+ const nonce = this.nonce().toString();
2299
+ let payload = '';
2300
+ if (method !== 'GET') {
2301
+ if (Object.keys(query).length) {
2302
+ body = this.json(query);
2303
+ payload = body;
2304
+ }
2305
+ }
2306
+ const auth = nonce + method + savedPath + payload;
2307
+ const signature = this.hmac(this.encode(auth), this.base64ToBinary(this.secret), sha256, 'base64');
2308
+ headers = {
2309
+ 'CB-ACCESS-TIMESTAMP': nonce,
2310
+ 'CB-ACCESS-SIGN': signature,
2311
+ 'CB-ACCESS-PASSPHRASE': this.password,
2312
+ 'CB-ACCESS-KEY': this.apiKey,
2313
+ };
2314
+ }
2315
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
2316
+ }
2317
+ handleErrors(code, reason, url, method, headers, body, response, requestHeaders, requestBody) {
2318
+ //
2319
+ // {
2320
+ // "title":"io.javalin.http.BadRequestResponse: Order rejected (DUPLICATE_CLIENT_ORDER_ID - duplicate client order id detected)",
2321
+ // "status":400
2322
+ // }
2323
+ //
2324
+ if (response === undefined) {
2325
+ return undefined; // fallback to default error handler
2326
+ }
2327
+ const feedback = this.id + ' ' + body;
2328
+ const errMsg = this.safeString(response, 'title');
2329
+ if (errMsg !== undefined) {
2330
+ this.throwExactlyMatchedException(this.exceptions['exact'], errMsg, feedback);
2331
+ this.throwBroadlyMatchedException(this.exceptions['broad'], errMsg, feedback);
2332
+ throw new ExchangeError(feedback);
2333
+ }
2334
+ return undefined;
2335
+ }
2336
+ }