bitget-api 2.3.6 → 3.0.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 (421) hide show
  1. package/README.md +272 -18
  2. package/{lib → dist/cjs}/broker-client.d.ts +3 -2
  3. package/{lib → dist/cjs}/broker-client.js +4 -4
  4. package/dist/cjs/broker-client.js.map +1 -0
  5. package/{lib → dist/cjs}/constants/enum.d.ts +3 -0
  6. package/{lib → dist/cjs}/constants/enum.js +3 -0
  7. package/dist/cjs/constants/enum.js.map +1 -0
  8. package/{lib → dist/cjs}/futures-client.d.ts +5 -2
  9. package/{lib → dist/cjs}/futures-client.js +18 -9
  10. package/dist/cjs/futures-client.js.map +1 -0
  11. package/dist/cjs/index.d.ts +50 -0
  12. package/dist/cjs/index.js +67 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/package.json +3 -0
  15. package/{lib → dist/cjs}/rest-client-v2.d.ts +17 -2
  16. package/{lib → dist/cjs}/rest-client-v2.js +62 -74
  17. package/dist/cjs/rest-client-v2.js.map +1 -0
  18. package/dist/cjs/rest-client-v3.d.ts +440 -0
  19. package/dist/cjs/rest-client-v3.js +573 -0
  20. package/dist/cjs/rest-client-v3.js.map +1 -0
  21. package/{lib → dist/cjs}/spot-client.d.ts +5 -2
  22. package/{lib → dist/cjs}/spot-client.js +21 -23
  23. package/dist/cjs/spot-client.js.map +1 -0
  24. package/{lib → dist/cjs}/types/request/shared.d.ts +4 -4
  25. package/dist/cjs/types/request/shared.js.map +1 -0
  26. package/{lib → dist/cjs}/types/request/v1/brokerV1.d.ts +1 -1
  27. package/dist/cjs/types/request/v1/brokerV1.js.map +1 -0
  28. package/{lib → dist/cjs}/types/request/v1/futuresV1.d.ts +10 -10
  29. package/dist/cjs/types/request/v1/futuresV1.js.map +1 -0
  30. package/{lib → dist/cjs}/types/request/v1/spotV1.d.ts +4 -4
  31. package/dist/cjs/types/request/v1/spotV1.js.map +1 -0
  32. package/{lib → dist/cjs}/types/request/v2/broker.d.ts +3 -3
  33. package/dist/cjs/types/request/v2/broker.js.map +1 -0
  34. package/{lib → dist/cjs}/types/request/v2/common.d.ts +1 -1
  35. package/dist/cjs/types/request/v2/common.js.map +1 -0
  36. package/{lib → dist/cjs}/types/request/v2/copytrading.d.ts +5 -5
  37. package/dist/cjs/types/request/v2/copytrading.js.map +1 -0
  38. package/dist/cjs/types/request/v2/earn.js.map +1 -0
  39. package/{lib → dist/cjs}/types/request/v2/futures.d.ts +9 -9
  40. package/dist/cjs/types/request/v2/futures.js.map +1 -0
  41. package/{lib → dist/cjs}/types/request/v2/margin.d.ts +5 -5
  42. package/dist/cjs/types/request/v2/margin.js.map +1 -0
  43. package/{lib → dist/cjs}/types/request/v2/spot.d.ts +12 -12
  44. package/dist/cjs/types/request/v2/spot.js.map +1 -0
  45. package/dist/cjs/types/request/v3/account.d.ts +162 -0
  46. package/dist/cjs/types/request/v3/account.js +4 -0
  47. package/dist/cjs/types/request/v3/account.js.map +1 -0
  48. package/dist/cjs/types/request/v3/loan.d.ts +31 -0
  49. package/dist/cjs/types/request/v3/loan.js +3 -0
  50. package/dist/cjs/types/request/v3/loan.js.map +1 -0
  51. package/dist/cjs/types/request/v3/public.d.ts +65 -0
  52. package/dist/cjs/types/request/v3/public.js +3 -0
  53. package/dist/cjs/types/request/v3/public.js.map +1 -0
  54. package/dist/cjs/types/request/v3/strategy.d.ts +46 -0
  55. package/dist/cjs/types/request/v3/strategy.js +3 -0
  56. package/dist/cjs/types/request/v3/strategy.js.map +1 -0
  57. package/dist/cjs/types/request/v3/trade.d.ts +112 -0
  58. package/dist/cjs/types/request/v3/trade.js +3 -0
  59. package/dist/cjs/types/request/v3/trade.js.map +1 -0
  60. package/{lib → dist/cjs}/types/response/v1/futures.d.ts +1 -1
  61. package/dist/cjs/types/response/v1/futures.js.map +1 -0
  62. package/dist/cjs/types/response/v1/shared.js.map +1 -0
  63. package/dist/cjs/types/response/v1/spot.js.map +1 -0
  64. package/dist/cjs/types/response/v2/broker.js.map +1 -0
  65. package/dist/cjs/types/response/v2/common.js.map +1 -0
  66. package/dist/cjs/types/response/v2/copy-trading.js.map +1 -0
  67. package/dist/cjs/types/response/v2/earn.js.map +1 -0
  68. package/{lib → dist/cjs}/types/response/v2/futures.d.ts +1 -1
  69. package/dist/cjs/types/response/v2/futures.js.map +1 -0
  70. package/dist/cjs/types/response/v2/margin.js.map +1 -0
  71. package/{lib → dist/cjs}/types/response/v2/spot.d.ts +1 -1
  72. package/dist/cjs/types/response/v2/spot.js.map +1 -0
  73. package/dist/cjs/types/response/v3/account.d.ts +197 -0
  74. package/dist/cjs/types/response/v3/account.js +3 -0
  75. package/dist/cjs/types/response/v3/account.js.map +1 -0
  76. package/dist/cjs/types/response/v3/loan.d.ts +85 -0
  77. package/dist/cjs/types/response/v3/loan.js +3 -0
  78. package/dist/cjs/types/response/v3/loan.js.map +1 -0
  79. package/dist/cjs/types/response/v3/public.d.ts +142 -0
  80. package/dist/cjs/types/response/v3/public.js +3 -0
  81. package/dist/cjs/types/response/v3/public.js.map +1 -0
  82. package/dist/cjs/types/response/v3/strategy.d.ts +26 -0
  83. package/dist/cjs/types/response/v3/strategy.js +3 -0
  84. package/dist/cjs/types/response/v3/strategy.js.map +1 -0
  85. package/dist/cjs/types/response/v3/trade.d.ts +193 -0
  86. package/dist/cjs/types/response/v3/trade.js +3 -0
  87. package/dist/cjs/types/response/v3/trade.js.map +1 -0
  88. package/dist/cjs/types/shared.d.ts +8 -0
  89. package/{lib → dist/cjs}/types/shared.js.map +1 -1
  90. package/dist/cjs/types/websockets/ws-api-request.d.ts +20 -0
  91. package/dist/cjs/types/websockets/ws-api-request.js +3 -0
  92. package/dist/cjs/types/websockets/ws-api-request.js.map +1 -0
  93. package/dist/cjs/types/websockets/ws-api-response.d.ts +6 -0
  94. package/dist/cjs/types/websockets/ws-api-response.js +3 -0
  95. package/dist/cjs/types/websockets/ws-api-response.js.map +1 -0
  96. package/dist/cjs/types/websockets/ws-api.d.ts +91 -0
  97. package/dist/cjs/types/websockets/ws-api.js +11 -0
  98. package/dist/cjs/types/websockets/ws-api.js.map +1 -0
  99. package/{lib/types/websockets/events.d.ts → dist/cjs/types/websockets/ws-events.d.ts} +6 -0
  100. package/dist/cjs/types/websockets/ws-events.js +11 -0
  101. package/dist/cjs/types/websockets/ws-events.js.map +1 -0
  102. package/dist/cjs/types/websockets/ws-general.d.ts +112 -0
  103. package/dist/cjs/types/websockets/ws-general.js +3 -0
  104. package/dist/cjs/types/websockets/ws-general.js.map +1 -0
  105. package/{lib → dist/cjs}/util/BaseRestClient.d.ts +3 -2
  106. package/dist/cjs/util/BaseRestClient.js +274 -0
  107. package/dist/cjs/util/BaseRestClient.js.map +1 -0
  108. package/dist/cjs/util/BaseWSClient.d.ts +197 -0
  109. package/dist/cjs/util/BaseWSClient.js +759 -0
  110. package/dist/cjs/util/BaseWSClient.js.map +1 -0
  111. package/dist/cjs/util/WsStore.d.ts +74 -0
  112. package/dist/cjs/util/WsStore.js +287 -0
  113. package/dist/cjs/util/WsStore.js.map +1 -0
  114. package/{lib → dist/cjs}/util/WsStore.types.d.ts +27 -1
  115. package/{lib → dist/cjs}/util/WsStore.types.js +3 -2
  116. package/dist/cjs/util/WsStore.types.js.map +1 -0
  117. package/dist/cjs/util/logger.d.ts +8 -0
  118. package/{lib → dist/cjs}/util/logger.js +2 -10
  119. package/dist/cjs/util/logger.js.map +1 -0
  120. package/{lib → dist/cjs}/util/requestUtils.d.ts +18 -1
  121. package/{lib → dist/cjs}/util/requestUtils.js +6 -5
  122. package/dist/cjs/util/requestUtils.js.map +1 -0
  123. package/{lib → dist/cjs}/util/type-guards.d.ts +4 -1
  124. package/{lib → dist/cjs}/util/type-guards.js +20 -10
  125. package/dist/cjs/util/type-guards.js.map +1 -0
  126. package/dist/cjs/util/webCryptoAPI.d.ts +14 -0
  127. package/dist/cjs/util/webCryptoAPI.js +80 -0
  128. package/dist/cjs/util/webCryptoAPI.js.map +1 -0
  129. package/dist/cjs/util/websocket-util.d.ts +88 -0
  130. package/dist/cjs/util/websocket-util.js +241 -0
  131. package/dist/cjs/util/websocket-util.js.map +1 -0
  132. package/dist/cjs/websocket-api-client.d.ts +89 -0
  133. package/dist/cjs/websocket-api-client.js +122 -0
  134. package/dist/cjs/websocket-api-client.js.map +1 -0
  135. package/{lib/websocket-client.d.ts → dist/cjs/websocket-client-legacy-v1.d.ts} +6 -6
  136. package/{lib/websocket-client.js → dist/cjs/websocket-client-legacy-v1.js} +211 -156
  137. package/dist/cjs/websocket-client-legacy-v1.js.map +1 -0
  138. package/dist/cjs/websocket-client-v2.d.ts +79 -0
  139. package/dist/cjs/websocket-client-v2.js +339 -0
  140. package/dist/cjs/websocket-client-v2.js.map +1 -0
  141. package/dist/cjs/websocket-client-v3.d.ts +84 -0
  142. package/dist/cjs/websocket-client-v3.js +408 -0
  143. package/dist/cjs/websocket-client-v3.js.map +1 -0
  144. package/dist/mjs/broker-client.d.ts +127 -0
  145. package/dist/mjs/broker-client.js +158 -0
  146. package/dist/mjs/broker-client.js.map +1 -0
  147. package/dist/mjs/constants/enum.d.ts +31 -0
  148. package/dist/mjs/constants/enum.js +32 -0
  149. package/dist/mjs/constants/enum.js.map +1 -0
  150. package/dist/mjs/futures-client.d.ts +184 -0
  151. package/dist/mjs/futures-client.js +473 -0
  152. package/dist/mjs/futures-client.js.map +1 -0
  153. package/dist/mjs/index.d.ts +50 -0
  154. package/dist/mjs/index.js +51 -0
  155. package/dist/mjs/index.js.map +1 -0
  156. package/dist/mjs/package.json +3 -0
  157. package/dist/mjs/rest-client-v2.d.ts +1098 -0
  158. package/dist/mjs/rest-client-v2.js +1092 -0
  159. package/dist/mjs/rest-client-v2.js.map +1 -0
  160. package/dist/mjs/rest-client-v3.d.ts +440 -0
  161. package/dist/mjs/rest-client-v3.js +566 -0
  162. package/dist/mjs/rest-client-v3.js.map +1 -0
  163. package/dist/mjs/spot-client.d.ts +154 -0
  164. package/dist/mjs/spot-client.js +273 -0
  165. package/dist/mjs/spot-client.js.map +1 -0
  166. package/dist/mjs/types/request/shared.d.ts +23 -0
  167. package/dist/mjs/types/request/shared.js +2 -0
  168. package/dist/mjs/types/request/shared.js.map +1 -0
  169. package/dist/mjs/types/request/v1/brokerV1.d.ts +23 -0
  170. package/dist/mjs/types/request/v1/brokerV1.js +2 -0
  171. package/dist/mjs/types/request/v1/brokerV1.js.map +1 -0
  172. package/dist/mjs/types/request/v1/futuresV1.d.ts +168 -0
  173. package/dist/mjs/types/request/v1/futuresV1.js +2 -0
  174. package/dist/mjs/types/request/v1/futuresV1.js.map +1 -0
  175. package/dist/mjs/types/request/v1/spotV1.d.ts +105 -0
  176. package/dist/mjs/types/request/v1/spotV1.js +2 -0
  177. package/dist/mjs/types/request/v1/spotV1.js.map +1 -0
  178. package/dist/mjs/types/request/v2/broker.d.ts +69 -0
  179. package/dist/mjs/types/request/v2/broker.js +7 -0
  180. package/dist/mjs/types/request/v2/broker.js.map +1 -0
  181. package/dist/mjs/types/request/v2/common.d.ts +163 -0
  182. package/dist/mjs/types/request/v2/common.js +2 -0
  183. package/dist/mjs/types/request/v2/common.js.map +1 -0
  184. package/dist/mjs/types/request/v2/copytrading.d.ts +196 -0
  185. package/dist/mjs/types/request/v2/copytrading.js +9 -0
  186. package/dist/mjs/types/request/v2/copytrading.js.map +1 -0
  187. package/dist/mjs/types/request/v2/earn.d.ts +121 -0
  188. package/dist/mjs/types/request/v2/earn.js +9 -0
  189. package/dist/mjs/types/request/v2/earn.js.map +1 -0
  190. package/dist/mjs/types/request/v2/futures.d.ts +363 -0
  191. package/dist/mjs/types/request/v2/futures.js +2 -0
  192. package/dist/mjs/types/request/v2/futures.js.map +1 -0
  193. package/dist/mjs/types/request/v2/margin.d.ts +121 -0
  194. package/dist/mjs/types/request/v2/margin.js +7 -0
  195. package/dist/mjs/types/request/v2/margin.js.map +1 -0
  196. package/dist/mjs/types/request/v2/spot.d.ts +265 -0
  197. package/dist/mjs/types/request/v2/spot.js +2 -0
  198. package/dist/mjs/types/request/v2/spot.js.map +1 -0
  199. package/dist/mjs/types/request/v3/account.d.ts +162 -0
  200. package/dist/mjs/types/request/v3/account.js +3 -0
  201. package/dist/mjs/types/request/v3/account.js.map +1 -0
  202. package/dist/mjs/types/request/v3/loan.d.ts +31 -0
  203. package/dist/mjs/types/request/v3/loan.js +2 -0
  204. package/dist/mjs/types/request/v3/loan.js.map +1 -0
  205. package/dist/mjs/types/request/v3/public.d.ts +65 -0
  206. package/dist/mjs/types/request/v3/public.js +2 -0
  207. package/dist/mjs/types/request/v3/public.js.map +1 -0
  208. package/dist/mjs/types/request/v3/strategy.d.ts +46 -0
  209. package/dist/mjs/types/request/v3/strategy.js +2 -0
  210. package/dist/mjs/types/request/v3/strategy.js.map +1 -0
  211. package/dist/mjs/types/request/v3/trade.d.ts +112 -0
  212. package/dist/mjs/types/request/v3/trade.js +2 -0
  213. package/dist/mjs/types/request/v3/trade.js.map +1 -0
  214. package/dist/mjs/types/response/v1/futures.d.ts +72 -0
  215. package/dist/mjs/types/response/v1/futures.js +2 -0
  216. package/dist/mjs/types/response/v1/futures.js.map +1 -0
  217. package/dist/mjs/types/response/v1/shared.d.ts +15 -0
  218. package/dist/mjs/types/response/v1/shared.js +2 -0
  219. package/dist/mjs/types/response/v1/shared.js.map +1 -0
  220. package/dist/mjs/types/response/v1/spot.d.ts +65 -0
  221. package/dist/mjs/types/response/v1/spot.js +2 -0
  222. package/dist/mjs/types/response/v1/spot.js.map +1 -0
  223. package/dist/mjs/types/response/v2/broker.d.ts +135 -0
  224. package/dist/mjs/types/response/v2/broker.js +7 -0
  225. package/dist/mjs/types/response/v2/broker.js.map +1 -0
  226. package/dist/mjs/types/response/v2/common.d.ts +384 -0
  227. package/dist/mjs/types/response/v2/common.js +7 -0
  228. package/dist/mjs/types/response/v2/common.js.map +1 -0
  229. package/dist/mjs/types/response/v2/copy-trading.d.ts +385 -0
  230. package/dist/mjs/types/response/v2/copy-trading.js +9 -0
  231. package/dist/mjs/types/response/v2/copy-trading.js.map +1 -0
  232. package/dist/mjs/types/response/v2/earn.d.ts +294 -0
  233. package/dist/mjs/types/response/v2/earn.js +9 -0
  234. package/dist/mjs/types/response/v2/earn.js.map +1 -0
  235. package/dist/mjs/types/response/v2/futures.d.ts +546 -0
  236. package/dist/mjs/types/response/v2/futures.js +7 -0
  237. package/dist/mjs/types/response/v2/futures.js.map +1 -0
  238. package/dist/mjs/types/response/v2/margin.d.ts +277 -0
  239. package/dist/mjs/types/response/v2/margin.js +7 -0
  240. package/dist/mjs/types/response/v2/margin.js.map +1 -0
  241. package/dist/mjs/types/response/v2/spot.d.ts +385 -0
  242. package/dist/mjs/types/response/v2/spot.js +7 -0
  243. package/dist/mjs/types/response/v2/spot.js.map +1 -0
  244. package/dist/mjs/types/response/v3/account.d.ts +197 -0
  245. package/dist/mjs/types/response/v3/account.js +2 -0
  246. package/dist/mjs/types/response/v3/account.js.map +1 -0
  247. package/dist/mjs/types/response/v3/loan.d.ts +85 -0
  248. package/dist/mjs/types/response/v3/loan.js +2 -0
  249. package/dist/mjs/types/response/v3/loan.js.map +1 -0
  250. package/dist/mjs/types/response/v3/public.d.ts +142 -0
  251. package/dist/mjs/types/response/v3/public.js +2 -0
  252. package/dist/mjs/types/response/v3/public.js.map +1 -0
  253. package/dist/mjs/types/response/v3/strategy.d.ts +26 -0
  254. package/dist/mjs/types/response/v3/strategy.js +2 -0
  255. package/dist/mjs/types/response/v3/strategy.js.map +1 -0
  256. package/dist/mjs/types/response/v3/trade.d.ts +193 -0
  257. package/dist/mjs/types/response/v3/trade.js +2 -0
  258. package/dist/mjs/types/response/v3/trade.js.map +1 -0
  259. package/dist/mjs/types/shared.d.ts +8 -0
  260. package/dist/mjs/types/shared.js +2 -0
  261. package/{lib/types/request → dist/mjs/types}/shared.js.map +1 -1
  262. package/dist/mjs/types/websockets/ws-api-request.d.ts +20 -0
  263. package/dist/mjs/types/websockets/ws-api-request.js +2 -0
  264. package/dist/mjs/types/websockets/ws-api-request.js.map +1 -0
  265. package/dist/mjs/types/websockets/ws-api-response.d.ts +6 -0
  266. package/dist/mjs/types/websockets/ws-api-response.js +2 -0
  267. package/dist/mjs/types/websockets/ws-api-response.js.map +1 -0
  268. package/dist/mjs/types/websockets/ws-api.d.ts +91 -0
  269. package/dist/mjs/types/websockets/ws-api.js +8 -0
  270. package/dist/mjs/types/websockets/ws-api.js.map +1 -0
  271. package/dist/mjs/types/websockets/ws-events.d.ts +81 -0
  272. package/dist/mjs/types/websockets/ws-events.js +8 -0
  273. package/dist/mjs/types/websockets/ws-events.js.map +1 -0
  274. package/dist/mjs/types/websockets/ws-general.d.ts +112 -0
  275. package/dist/mjs/types/websockets/ws-general.js +2 -0
  276. package/dist/mjs/types/websockets/ws-general.js.map +1 -0
  277. package/dist/mjs/util/BaseRestClient.d.ts +40 -0
  278. package/dist/mjs/util/BaseRestClient.js +268 -0
  279. package/dist/mjs/util/BaseRestClient.js.map +1 -0
  280. package/dist/mjs/util/BaseWSClient.d.ts +197 -0
  281. package/dist/mjs/util/BaseWSClient.js +752 -0
  282. package/dist/mjs/util/BaseWSClient.js.map +1 -0
  283. package/dist/mjs/util/WsStore.d.ts +74 -0
  284. package/dist/mjs/util/WsStore.js +282 -0
  285. package/dist/mjs/util/WsStore.js.map +1 -0
  286. package/dist/mjs/util/WsStore.types.d.ts +52 -0
  287. package/dist/mjs/util/WsStore.types.js +11 -0
  288. package/dist/mjs/util/WsStore.types.js.map +1 -0
  289. package/dist/mjs/util/logger.d.ts +8 -0
  290. package/dist/mjs/util/logger.js +14 -0
  291. package/dist/mjs/util/logger.js.map +1 -0
  292. package/dist/mjs/util/requestUtils.d.ts +61 -0
  293. package/dist/mjs/util/requestUtils.js +50 -0
  294. package/dist/mjs/util/requestUtils.js.map +1 -0
  295. package/dist/mjs/util/type-guards.d.ts +16 -0
  296. package/dist/mjs/util/type-guards.js +62 -0
  297. package/dist/mjs/util/type-guards.js.map +1 -0
  298. package/dist/mjs/util/webCryptoAPI.d.ts +14 -0
  299. package/dist/mjs/util/webCryptoAPI.js +76 -0
  300. package/dist/mjs/util/webCryptoAPI.js.map +1 -0
  301. package/dist/mjs/util/websocket-util.d.ts +88 -0
  302. package/dist/mjs/util/websocket-util.js +227 -0
  303. package/dist/mjs/util/websocket-util.js.map +1 -0
  304. package/dist/mjs/websocket-api-client.d.ts +89 -0
  305. package/dist/mjs/websocket-api-client.js +118 -0
  306. package/dist/mjs/websocket-api-client.js.map +1 -0
  307. package/{lib/util/BaseWSClient.d.ts → dist/mjs/websocket-client-legacy-v1.d.ts} +44 -27
  308. package/dist/mjs/websocket-client-legacy-v1.js +502 -0
  309. package/dist/mjs/websocket-client-legacy-v1.js.map +1 -0
  310. package/dist/mjs/websocket-client-v2.d.ts +79 -0
  311. package/dist/mjs/websocket-client-v2.js +335 -0
  312. package/dist/mjs/websocket-client-v2.js.map +1 -0
  313. package/dist/mjs/websocket-client-v3.d.ts +84 -0
  314. package/dist/mjs/websocket-client-v3.js +404 -0
  315. package/dist/mjs/websocket-client-v3.js.map +1 -0
  316. package/package.json +33 -15
  317. package/index.js +0 -1
  318. package/lib/broker-client.js.map +0 -1
  319. package/lib/constants/enum.js.map +0 -1
  320. package/lib/futures-client.js.map +0 -1
  321. package/lib/index.d.ts +0 -10
  322. package/lib/index.js +0 -27
  323. package/lib/index.js.map +0 -1
  324. package/lib/rest-client-v2.js.map +0 -1
  325. package/lib/spot-client.js.map +0 -1
  326. package/lib/types/index.d.ts +0 -4
  327. package/lib/types/index.js +0 -21
  328. package/lib/types/index.js.map +0 -1
  329. package/lib/types/request/index.d.ts +0 -11
  330. package/lib/types/request/index.js +0 -28
  331. package/lib/types/request/index.js.map +0 -1
  332. package/lib/types/request/v1/brokerV1.js.map +0 -1
  333. package/lib/types/request/v1/futuresV1.js.map +0 -1
  334. package/lib/types/request/v1/spotV1.js.map +0 -1
  335. package/lib/types/request/v2/broker.js.map +0 -1
  336. package/lib/types/request/v2/common.js.map +0 -1
  337. package/lib/types/request/v2/copytrading.js.map +0 -1
  338. package/lib/types/request/v2/earn.js.map +0 -1
  339. package/lib/types/request/v2/futures.js.map +0 -1
  340. package/lib/types/request/v2/margin.js.map +0 -1
  341. package/lib/types/request/v2/spot.js.map +0 -1
  342. package/lib/types/response/index.d.ts +0 -10
  343. package/lib/types/response/index.js +0 -27
  344. package/lib/types/response/index.js.map +0 -1
  345. package/lib/types/response/v1/futures.js.map +0 -1
  346. package/lib/types/response/v1/shared.js.map +0 -1
  347. package/lib/types/response/v1/spot.js.map +0 -1
  348. package/lib/types/response/v2/broker.js.map +0 -1
  349. package/lib/types/response/v2/common.js.map +0 -1
  350. package/lib/types/response/v2/copy-trading.js.map +0 -1
  351. package/lib/types/response/v2/earn.js.map +0 -1
  352. package/lib/types/response/v2/futures.js.map +0 -1
  353. package/lib/types/response/v2/margin.js.map +0 -1
  354. package/lib/types/response/v2/spot.js.map +0 -1
  355. package/lib/types/shared.d.ts +0 -8
  356. package/lib/types/websockets/client.d.ts +0 -76
  357. package/lib/types/websockets/client.js +0 -3
  358. package/lib/types/websockets/client.js.map +0 -1
  359. package/lib/types/websockets/events.js +0 -3
  360. package/lib/types/websockets/events.js.map +0 -1
  361. package/lib/types/websockets/index.d.ts +0 -2
  362. package/lib/types/websockets/index.js +0 -19
  363. package/lib/types/websockets/index.js.map +0 -1
  364. package/lib/util/BaseRestClient.js +0 -221
  365. package/lib/util/BaseRestClient.js.map +0 -1
  366. package/lib/util/BaseWSClient.js +0 -395
  367. package/lib/util/BaseWSClient.js.map +0 -1
  368. package/lib/util/WsStore.d.ts +0 -26
  369. package/lib/util/WsStore.js +0 -126
  370. package/lib/util/WsStore.js.map +0 -1
  371. package/lib/util/WsStore.types.js.map +0 -1
  372. package/lib/util/browser-support.d.ts +0 -1
  373. package/lib/util/browser-support.js +0 -45
  374. package/lib/util/browser-support.js.map +0 -1
  375. package/lib/util/index.d.ts +0 -6
  376. package/lib/util/index.js +0 -23
  377. package/lib/util/index.js.map +0 -1
  378. package/lib/util/logger.d.ts +0 -9
  379. package/lib/util/logger.js.map +0 -1
  380. package/lib/util/node-support.d.ts +0 -2
  381. package/lib/util/node-support.js +0 -34
  382. package/lib/util/node-support.js.map +0 -1
  383. package/lib/util/requestUtils.js.map +0 -1
  384. package/lib/util/type-guards.js.map +0 -1
  385. package/lib/util/websocket-util.d.ts +0 -47
  386. package/lib/util/websocket-util.js +0 -154
  387. package/lib/util/websocket-util.js.map +0 -1
  388. package/lib/websocket-client-v2.d.ts +0 -33
  389. package/lib/websocket-client-v2.js +0 -104
  390. package/lib/websocket-client-v2.js.map +0 -1
  391. package/lib/websocket-client.js.map +0 -1
  392. /package/{lib → dist/cjs}/types/request/shared.js +0 -0
  393. /package/{lib → dist/cjs}/types/request/v1/brokerV1.js +0 -0
  394. /package/{lib → dist/cjs}/types/request/v1/futuresV1.js +0 -0
  395. /package/{lib → dist/cjs}/types/request/v1/spotV1.js +0 -0
  396. /package/{lib → dist/cjs}/types/request/v2/broker.js +0 -0
  397. /package/{lib → dist/cjs}/types/request/v2/common.js +0 -0
  398. /package/{lib → dist/cjs}/types/request/v2/copytrading.js +0 -0
  399. /package/{lib → dist/cjs}/types/request/v2/earn.d.ts +0 -0
  400. /package/{lib → dist/cjs}/types/request/v2/earn.js +0 -0
  401. /package/{lib → dist/cjs}/types/request/v2/futures.js +0 -0
  402. /package/{lib → dist/cjs}/types/request/v2/margin.js +0 -0
  403. /package/{lib → dist/cjs}/types/request/v2/spot.js +0 -0
  404. /package/{lib → dist/cjs}/types/response/v1/futures.js +0 -0
  405. /package/{lib → dist/cjs}/types/response/v1/shared.d.ts +0 -0
  406. /package/{lib → dist/cjs}/types/response/v1/shared.js +0 -0
  407. /package/{lib → dist/cjs}/types/response/v1/spot.d.ts +0 -0
  408. /package/{lib → dist/cjs}/types/response/v1/spot.js +0 -0
  409. /package/{lib → dist/cjs}/types/response/v2/broker.d.ts +0 -0
  410. /package/{lib → dist/cjs}/types/response/v2/broker.js +0 -0
  411. /package/{lib → dist/cjs}/types/response/v2/common.d.ts +0 -0
  412. /package/{lib → dist/cjs}/types/response/v2/common.js +0 -0
  413. /package/{lib → dist/cjs}/types/response/v2/copy-trading.d.ts +0 -0
  414. /package/{lib → dist/cjs}/types/response/v2/copy-trading.js +0 -0
  415. /package/{lib → dist/cjs}/types/response/v2/earn.d.ts +0 -0
  416. /package/{lib → dist/cjs}/types/response/v2/earn.js +0 -0
  417. /package/{lib → dist/cjs}/types/response/v2/futures.js +0 -0
  418. /package/{lib → dist/cjs}/types/response/v2/margin.d.ts +0 -0
  419. /package/{lib → dist/cjs}/types/response/v2/margin.js +0 -0
  420. /package/{lib → dist/cjs}/types/response/v2/spot.js +0 -0
  421. /package/{lib → dist/cjs}/types/shared.js +0 -0
@@ -0,0 +1,20 @@
1
+ export interface WSAPIPlaceOrderRequestV3 {
2
+ symbol: string;
3
+ orderType: 'limit' | 'market';
4
+ qty: string;
5
+ price?: string;
6
+ side: 'buy' | 'sell';
7
+ posSide?: 'long' | 'short';
8
+ timeInForce?: 'gtc' | 'ioc' | 'fok' | 'post_only';
9
+ reduceOnly?: 'YES' | 'NO';
10
+ clientOid?: string;
11
+ stpMode?: 'none' | 'cancel_taker' | 'cancel_maker' | 'cancel_both';
12
+ tpTriggerBy?: 'market' | 'mark';
13
+ slTriggerBy?: 'market' | 'mark';
14
+ takeProfit?: string;
15
+ stopLoss?: string;
16
+ tpOrderType?: 'limit' | 'market';
17
+ slOrderType?: 'limit' | 'market';
18
+ tpLimitPrice?: string;
19
+ slLimitPrice?: string;
20
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ws-api-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-api-request.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-api-request.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface WSAPIPlaceOrderResponseV3 {
2
+ symbol: string;
3
+ orderId: string;
4
+ clientOid: string;
5
+ cTime: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ws-api-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-api-response.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-api-response.ts"],"names":[],"mappings":""}
@@ -0,0 +1,91 @@
1
+ import { WS_KEY_MAP } from '../../util/websocket-util.js';
2
+ import { CancelOrderRequestV3 } from '../request/v3/trade.js';
3
+ import { CancelOrderResponseV3 } from '../response/v3/trade.js';
4
+ import { WSAPIPlaceOrderRequestV3 } from './ws-api-request.js';
5
+ import { WSAPIPlaceOrderResponseV3 } from './ws-api-response.js';
6
+ import { BitgetInstTypeV3, WsKey } from './ws-general.js';
7
+ export type WSOperation = 'subscribe' | 'unsubscribe' | 'login';
8
+ export type WSAPIOperation = 'place-order' | 'batch-place' | 'cancel-order' | 'batch-cancel';
9
+ export declare const WS_API_Operations: WSAPIOperation[];
10
+ export interface WSOperationLoginParams {
11
+ apiKey: string;
12
+ passphrase: string;
13
+ timestamp: number;
14
+ sign: string;
15
+ }
16
+ export interface WSAPIRequestBitgetV3<TWSParams> {
17
+ op: 'trade';
18
+ id: string;
19
+ category: BitgetInstTypeV3;
20
+ topic: WSAPIOperation;
21
+ args: TWSParams | TWSParams[];
22
+ }
23
+ export interface WSAPIRequestFlags {
24
+ /** If true, will skip auth requirement for WS API connection */
25
+ authIsOptional?: boolean | undefined;
26
+ }
27
+ export type Exact<T> = {
28
+ [K: string]: never;
29
+ } & {
30
+ [K in keyof T]: T[K];
31
+ };
32
+ /**
33
+
34
+ /**
35
+ * V2 request looks like this:
36
+ {
37
+ "op":"subscribe",
38
+ "args":[
39
+ {
40
+ "instType":"SPOT",
41
+ "channel":"ticker",
42
+ "instId":"BTCUSDT"
43
+ },
44
+ {
45
+ "instType":"SPOT",
46
+ "channel":"candle5m",
47
+ "instId":"BTCUSDT"
48
+ }
49
+ ]
50
+ }
51
+ */
52
+ export interface WsRequestOperationBitget<TWSRequestArg> {
53
+ op: WSOperation;
54
+ args?: (TWSRequestArg | string | number)[];
55
+ }
56
+ export interface WSAPIResponse<TResponseData extends object = object, TOperation extends WSAPIOperation = WSAPIOperation> {
57
+ wsKey: WsKey;
58
+ /** Auto-generated */
59
+ id: string;
60
+ event: 'trade';
61
+ category: BitgetInstTypeV3;
62
+ topic: TOperation;
63
+ args: TResponseData;
64
+ code: '0' | string;
65
+ msg: 'success' | string;
66
+ ts: string;
67
+ }
68
+ /**
69
+ * List of operations supported for this WsKey (connection)
70
+ */
71
+ export interface WsAPIWsKeyTopicMap {
72
+ [WS_KEY_MAP.v3Private]: WSAPIOperation;
73
+ }
74
+ /**
75
+ * Request parameters expected per operation
76
+ */
77
+ export interface WsAPITopicRequestParamMap {
78
+ 'place-order': WSAPIPlaceOrderRequestV3;
79
+ 'batch-place': WSAPIPlaceOrderRequestV3[];
80
+ 'cancel-order': CancelOrderRequestV3;
81
+ 'batch-cancel': CancelOrderRequestV3[];
82
+ }
83
+ /**
84
+ * Response structure expected for each operation
85
+ */
86
+ export interface WsAPIOperationResponseMap {
87
+ 'place-order': WSAPIResponse<[WSAPIPlaceOrderResponseV3], 'place-order'>;
88
+ 'batch-place': WSAPIResponse<WSAPIPlaceOrderResponseV3[], 'batch-place'>;
89
+ 'cancel-order': WSAPIResponse<[CancelOrderResponseV3], 'cancel-order'>;
90
+ 'batch-cancel': WSAPIResponse<CancelOrderResponseV3[], 'batch-cancel'>;
91
+ }
@@ -0,0 +1,8 @@
1
+ import { WS_KEY_MAP } from '../../util/websocket-util.js';
2
+ export const WS_API_Operations = [
3
+ 'place-order',
4
+ 'batch-place',
5
+ 'cancel-order',
6
+ 'batch-cancel',
7
+ ];
8
+ //# sourceMappingURL=ws-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-api.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAgB1D,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;CACf,CAAC"}
@@ -0,0 +1,81 @@
1
+ export interface MessageEventLike {
2
+ target: WebSocket;
3
+ type: 'message';
4
+ data: string;
5
+ }
6
+ export declare function isMessageEvent(msg: unknown): msg is MessageEventLike;
7
+ export interface WsBaseEvent<TAction = 'snapshot' | string, TData = unknown> {
8
+ action: TAction;
9
+ arg: unknown;
10
+ data: TData[];
11
+ }
12
+ export interface WsSnapshotChannelEvent extends WsBaseEvent<'snapshot'> {
13
+ arg: {
14
+ instType: string;
15
+ channel: string;
16
+ instId: string;
17
+ };
18
+ }
19
+ export interface WsSnapshotAccountEvent extends WsBaseEvent<'snapshot'> {
20
+ arg: {
21
+ instType: string;
22
+ channel: 'account';
23
+ instId: string;
24
+ };
25
+ }
26
+ export interface WsSnapshotPositionsEvent extends WsBaseEvent<'snapshot'> {
27
+ arg: {
28
+ instType: string;
29
+ channel: 'positions';
30
+ instId: string;
31
+ };
32
+ }
33
+ export interface WsAccountSnapshotDataUMCBL {
34
+ marginCoin: string;
35
+ locked: string;
36
+ available: string;
37
+ maxOpenPosAvailable: string;
38
+ maxTransferOut: string;
39
+ equity: string;
40
+ usdtEquity: string;
41
+ }
42
+ export interface WsAccountSnapshotUMCBL extends WsBaseEvent<'snapshot'> {
43
+ arg: {
44
+ instType: 'umcbl';
45
+ channel: 'account';
46
+ instId: string;
47
+ };
48
+ data: WsAccountSnapshotDataUMCBL[];
49
+ }
50
+ export interface WsPositionSnapshotDataUMCBL {
51
+ posId: string;
52
+ instId: string;
53
+ instName: string;
54
+ marginCoin: string;
55
+ margin: string;
56
+ marginMode: string;
57
+ holdSide: string;
58
+ holdMode: string;
59
+ total: string;
60
+ available: string;
61
+ locked: string;
62
+ averageOpenPrice: string;
63
+ leverage: number;
64
+ achievedProfits: string;
65
+ upl: string;
66
+ uplRate: string;
67
+ liqPx: string;
68
+ keepMarginRate: string;
69
+ marginRate: string;
70
+ cTime: string;
71
+ uTime: string;
72
+ markPrice: string;
73
+ }
74
+ export interface WSPositionSnapshotUMCBL extends WsBaseEvent<'snapshot'> {
75
+ arg: {
76
+ instType: 'umcbl';
77
+ channel: 'positions';
78
+ instId: string;
79
+ };
80
+ data: WsPositionSnapshotDataUMCBL[];
81
+ }
@@ -0,0 +1,8 @@
1
+ export function isMessageEvent(msg) {
2
+ if (typeof msg !== 'object' || !msg) {
3
+ return false;
4
+ }
5
+ const message = msg;
6
+ return message['type'] === 'message' && typeof message['data'] === 'string';
7
+ }
8
+ //# sourceMappingURL=ws-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-events.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-events.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,GAAuB,CAAC;IACxC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { RestClientOptions } from '../../util/requestUtils.js';
2
+ import { WS_KEY_MAP } from '../../util/websocket-util.js';
3
+ import { FuturesProductTypeV2 } from '../request/shared.js';
4
+ export type BitgetInstType = 'SP' | 'SPBL' | 'MC' | 'UMCBL' | 'DMCBL';
5
+ export type BitgetInstTypeV2 = 'SPOT' | FuturesProductTypeV2;
6
+ export type BitgetInstTypeV3 = 'UTA' | 'spot' | 'usdt-futures' | 'coin-futures' | 'usdc-futures';
7
+ /**
8
+ *
9
+ * V1 list of topics for WebSocket consumers
10
+ *
11
+ */
12
+ export type WsPublicSpotTopic = 'ticker' | 'candle1W' | 'candle1D' | 'candle12H' | 'candle4H' | 'candle1H' | 'candle30m' | 'candle15m' | 'candle5m' | 'candle1m' | 'books' | 'books5' | 'trade';
13
+ export type WsPublicFuturesTopic = WsPublicSpotTopic;
14
+ export type WsPrivateSpotTopic = 'account' | 'orders';
15
+ export type WsPrivateFuturesTopic = 'account' | 'positions' | 'orders' | 'ordersAlgo';
16
+ export type WsPublicTopic = WsPublicSpotTopic | WsPublicFuturesTopic;
17
+ export type WsPrivateTopic = WsPrivateSpotTopic | WsPrivateFuturesTopic;
18
+ export type WsTopic = WsPublicTopic | WsPrivateTopic;
19
+ /**
20
+ *
21
+ * V2 list of topics for WebSocket consumers
22
+ *
23
+ */
24
+ export type WsPublicTopicV2 = 'index-price' | 'ticker' | 'candle1m' | 'candle5m' | 'candle15m' | 'candle30m' | 'candle1H' | 'candle4H' | 'candle6H' | 'candle12H' | 'candle1D' | 'candle3D' | 'candle1W' | 'candle1M' | 'candle6Hutc' | 'candle12Hutc' | 'candle1Dutc' | 'candle3Dutc' | 'candle1Wutc' | 'candle1Mutc' | 'trade' | 'books' | 'books1' | 'books5' | 'books15';
25
+ export type WSPrivateTopicFuturesV2 = 'positions' | 'orders-algo' | 'positions-history';
26
+ export type WSPrivateTopicMarginV2 = 'orders-crossed' | 'account-crossed' | 'account-isolated' | 'orders-isolated';
27
+ export type WsPrivateTopicV2 = 'account' | 'orders' | WSPrivateTopicFuturesV2 | WSPrivateTopicMarginV2;
28
+ export type WsTopicV2 = WsPublicTopicV2 | WsPrivateTopicV2;
29
+ /**
30
+ *
31
+ * V3 / UTA list of topics for WebSocket consumers
32
+ *
33
+ */
34
+ export type WsPublicTopicV3 = 'ticker' | 'kline' | 'books' | 'publicTrade';
35
+ export type WsPrivateTopicV3 = 'account' | 'position' | 'fill' | 'order';
36
+ export type WsTopicV3 = WsPublicTopicV3 | WsPrivateTopicV3;
37
+ /** This is used to differentiate between each of the available websocket streams */
38
+ export type WsKey = (typeof WS_KEY_MAP)[keyof typeof WS_KEY_MAP];
39
+ /**
40
+ * Event args for subscribing/unsubscribing
41
+ */
42
+ export interface WsTopicSubscribeEventArgs {
43
+ instType: BitgetInstType;
44
+ channel: WsTopic;
45
+ instId?: string;
46
+ }
47
+ export type WsTopicSubscribePublicArgsV2 = {
48
+ instType: BitgetInstTypeV2;
49
+ channel: WsPublicTopicV2;
50
+ /** The symbol, e.g. "BTCUSDT" */
51
+ instId: string;
52
+ };
53
+ export type WsInstIdChannelsV2 = 'orders' | WSPrivateTopicFuturesV2 | 'orders-crossed' | 'orders-isolated';
54
+ export type WsTopicSubscribePrivateInstIdArgsV2 = {
55
+ instType: BitgetInstTypeV2;
56
+ channel: WsInstIdChannelsV2;
57
+ /** The symbol, e.g. "BTCUSDT" */
58
+ instId?: string;
59
+ };
60
+ export type WsCoinChannelsV2 = 'account' | 'account-crossed' | 'account-isolated';
61
+ export type WsTopicSubscribePrivateCoinArgsV2 = {
62
+ instType: BitgetInstTypeV2;
63
+ channel: WsCoinChannelsV2;
64
+ coin: 'default' | string;
65
+ };
66
+ export type WsTopicSubscribePrivateArgsV2 = WsTopicSubscribePrivateInstIdArgsV2 | WsTopicSubscribePrivateCoinArgsV2;
67
+ export type WsTopicSubscribeEventArgsV2 = WsTopicSubscribePublicArgsV2 | WsTopicSubscribePrivateArgsV2;
68
+ /** General configuration for the WebsocketClient */
69
+ export interface WSClientConfigurableOptions {
70
+ /** Your API key */
71
+ apiKey?: string;
72
+ /** Your API secret */
73
+ apiSecret?: string;
74
+ /** The passphrase you set when creating the API Key (NOT your account password) */
75
+ apiPass?: string;
76
+ /**
77
+ * Set to `true` to connect to Bitget's demo trading WebSockets:
78
+ *
79
+ * - V2: https://www.bitget.com/api-doc/common/demotrading/websocket
80
+ * - V3/UTA: https://www.bitget.com/api-doc/uta/guide#demo-trading
81
+ */
82
+ demoTrading?: boolean;
83
+ /** Define a recv window when preparing a private websocket signature. This is in milliseconds, so 5000 == 5 seconds */
84
+ recvWindow?: number;
85
+ disableHeartbeat?: boolean;
86
+ /** How often to check if the connection is alive */
87
+ pingInterval?: number;
88
+ /** How long to wait for a pong (heartbeat reply) before assuming the connection is dead */
89
+ pongTimeout?: number;
90
+ /** Delay in milliseconds before respawning the connection */
91
+ reconnectTimeout?: number;
92
+ requestOptions?: RestClientOptions;
93
+ wsOptions?: {
94
+ protocols?: string[];
95
+ agent?: any;
96
+ };
97
+ wsUrl?: string;
98
+ /**
99
+ * Allows you to provide a custom "signMessage" function, e.g. to use node's much faster createHmac method
100
+ *
101
+ * Look in the examples folder for a demonstration on using node's createHmac instead.
102
+ */
103
+ customSignMessageFn?: (message: string, secret: string) => Promise<string>;
104
+ }
105
+ export interface WebsocketClientOptions extends WSClientConfigurableOptions {
106
+ pingInterval: number;
107
+ pongTimeout: number;
108
+ reconnectTimeout: number;
109
+ recvWindow: number;
110
+ authPrivateConnectionsOnConnect: boolean;
111
+ authPrivateRequests: boolean;
112
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ws-general.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-general.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-general.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { RestClientType } from '../types/shared.js';
3
+ import { RestClientOptions } from './requestUtils.js';
4
+ export default abstract class BaseRestClient {
5
+ private options;
6
+ private baseUrl;
7
+ private globalRequestOptions;
8
+ private apiKey;
9
+ private apiSecret;
10
+ private apiPass;
11
+ /** Defines the client type (affecting how requests & signatures behave) */
12
+ abstract getClientType(): RestClientType;
13
+ /**
14
+ * Create an instance of the REST client. Pass API credentials in the object in the first parameter.
15
+ * @param {RestClientOptions} [restClientOptions={}] options to configure REST API connectivity
16
+ * @param {AxiosRequestConfig} [networkOptions={}] HTTP networking options for axios
17
+ */
18
+ constructor(restOptions?: RestClientOptions, networkOptions?: AxiosRequestConfig);
19
+ get(endpoint: string, params?: any): Promise<any>;
20
+ getPrivate(endpoint: string, params?: any): Promise<any>;
21
+ post(endpoint: string, params?: any): Promise<any>;
22
+ postPrivate(endpoint: string, params?: any): Promise<any>;
23
+ deletePrivate(endpoint: string, params?: any): Promise<any>;
24
+ /**
25
+ * @private Make a HTTP request to a specific endpoint. Private endpoint API calls are automatically signed.
26
+ */
27
+ private _call;
28
+ /**
29
+ * @private generic handler to parse request exceptions
30
+ */
31
+ parseException(e: any): unknown;
32
+ private signMessage;
33
+ /**
34
+ * @private sign request and set recv window
35
+ */
36
+ private signRequest;
37
+ private prepareSignParams;
38
+ /** Returns an axios request object. Handles signing process automatically if this is a private API call */
39
+ private buildRequest;
40
+ }
@@ -0,0 +1,268 @@
1
+ import axios from 'axios';
2
+ import https from 'https';
3
+ import { getRestBaseUrl, serializeParams, } from './requestUtils.js';
4
+ import { signMessage, } from './webCryptoAPI.js';
5
+ import { neverGuard } from './websocket-util.js';
6
+ const ENABLE_HTTP_TRACE = typeof process === 'object' &&
7
+ typeof process.env === 'object' &&
8
+ process.env.BITGETTRACE;
9
+ if (ENABLE_HTTP_TRACE) {
10
+ axios.interceptors.request.use((request) => {
11
+ console.log(new Date(), 'Starting Request', JSON.stringify({
12
+ url: request.url,
13
+ method: request.method,
14
+ params: request.params,
15
+ data: request.data,
16
+ }, null, 2));
17
+ return request;
18
+ });
19
+ axios.interceptors.response.use((response) => {
20
+ console.log(new Date(), 'Response:', {
21
+ // request: {
22
+ // url: response.config.url,
23
+ // method: response.config.method,
24
+ // data: response.config.data,
25
+ // headers: response.config.headers,
26
+ // },
27
+ response: {
28
+ status: response.status,
29
+ statusText: response.statusText,
30
+ headers: response.headers,
31
+ data: response.data,
32
+ },
33
+ });
34
+ return response;
35
+ });
36
+ }
37
+ export default class BaseRestClient {
38
+ options;
39
+ baseUrl;
40
+ globalRequestOptions;
41
+ apiKey;
42
+ apiSecret;
43
+ apiPass;
44
+ /**
45
+ * Create an instance of the REST client. Pass API credentials in the object in the first parameter.
46
+ * @param {RestClientOptions} [restClientOptions={}] options to configure REST API connectivity
47
+ * @param {AxiosRequestConfig} [networkOptions={}] HTTP networking options for axios
48
+ */
49
+ constructor(restOptions = {}, networkOptions = {}) {
50
+ this.options = {
51
+ recvWindow: 5000,
52
+ /** Throw errors if any request params are empty */
53
+ strictParamValidation: false,
54
+ encodeQueryStringValues: true,
55
+ ...restOptions,
56
+ };
57
+ this.globalRequestOptions = {
58
+ /** in ms == 5 minutes by default */
59
+ timeout: 1000 * 60 * 5,
60
+ /** inject custom rquest options based on axios specs - see axios docs for more guidance on AxiosRequestConfig: https://github.com/axios/axios#request-config */
61
+ ...networkOptions,
62
+ headers: {
63
+ 'X-CHANNEL-API-CODE': 'hbnni',
64
+ 'Content-Type': 'application/json',
65
+ locale: 'en-US',
66
+ },
67
+ };
68
+ if (this.options.demoTrading) {
69
+ this.globalRequestOptions.headers = {
70
+ ...this.globalRequestOptions.headers,
71
+ // Header to enable paper trading with provided demo API keys
72
+ paptrading: '1',
73
+ };
74
+ }
75
+ // If enabled, configure a https agent with keepAlive enabled
76
+ if (this.options.keepAlive) {
77
+ // Extract existing https agent parameters, if provided, to prevent the keepAlive flag from overwriting an existing https agent completely
78
+ const existingHttpsAgent = this.globalRequestOptions.httpsAgent;
79
+ const existingAgentOptions = existingHttpsAgent?.options || {};
80
+ // For more advanced configuration, raise an issue on GitHub or use the "networkOptions"
81
+ // parameter to define a custom httpsAgent with the desired properties
82
+ this.globalRequestOptions.httpsAgent = new https.Agent({
83
+ ...existingAgentOptions,
84
+ keepAlive: true,
85
+ keepAliveMsecs: this.options.keepAliveMsecs,
86
+ });
87
+ }
88
+ this.baseUrl = getRestBaseUrl(false, restOptions);
89
+ this.apiKey = this.options.apiKey;
90
+ this.apiSecret = this.options.apiSecret;
91
+ this.apiPass = this.options.apiPass;
92
+ // Throw if one of the 3 values is missing, but at least one of them is set
93
+ const credentials = [this.apiKey, this.apiSecret, this.apiPass];
94
+ if (credentials.includes(undefined) &&
95
+ credentials.some((v) => typeof v === 'string')) {
96
+ throw new Error('API Key, Secret & Passphrase are ALL required to use the authenticated REST client');
97
+ }
98
+ }
99
+ get(endpoint, params) {
100
+ return this._call('GET', endpoint, params, true);
101
+ }
102
+ getPrivate(endpoint, params) {
103
+ return this._call('GET', endpoint, params, false);
104
+ }
105
+ post(endpoint, params) {
106
+ return this._call('POST', endpoint, params, true);
107
+ }
108
+ postPrivate(endpoint, params) {
109
+ return this._call('POST', endpoint, params, false);
110
+ }
111
+ deletePrivate(endpoint, params) {
112
+ return this._call('DELETE', endpoint, params, false);
113
+ }
114
+ /**
115
+ * @private Make a HTTP request to a specific endpoint. Private endpoint API calls are automatically signed.
116
+ */
117
+ async _call(method, endpoint, params, isPublicApi) {
118
+ // Sanity check to make sure it's only ever prefixed by one forward slash
119
+ const requestUrl = [this.baseUrl, endpoint].join(endpoint.startsWith('/') ? '' : '/');
120
+ // Build a request and handle signature process
121
+ const options = await this.buildRequest(method, endpoint, requestUrl, params, isPublicApi);
122
+ if (ENABLE_HTTP_TRACE) {
123
+ console.log('full request: ', options);
124
+ }
125
+ // Dispatch request
126
+ return axios(options)
127
+ .then((response) => {
128
+ if (response.status == 200) {
129
+ if (typeof response.data?.code === 'string' &&
130
+ response.data?.code !== '00000') {
131
+ throw { response };
132
+ }
133
+ return response.data;
134
+ }
135
+ throw { response };
136
+ })
137
+ .catch((e) => this.parseException(e));
138
+ }
139
+ /**
140
+ * @private generic handler to parse request exceptions
141
+ */
142
+ parseException(e) {
143
+ if (this.options.parseExceptions === false) {
144
+ throw e;
145
+ }
146
+ // Something happened in setting up the request that triggered an error
147
+ if (!e.response) {
148
+ if (!e.request) {
149
+ throw e.message;
150
+ }
151
+ // request made but no response received
152
+ throw e;
153
+ }
154
+ // The request was made and the server responded with a status code
155
+ // that falls out of the range of 2xx
156
+ const response = e.response;
157
+ // console.error('err: ', response?.data);
158
+ throw {
159
+ code: response.status,
160
+ message: response.statusText,
161
+ body: response.data,
162
+ headers: response.headers,
163
+ requestOptions: {
164
+ ...this.options,
165
+ // Prevent credentials from leaking into error messages
166
+ apiPass: 'omittedFromError',
167
+ apiSecret: 'omittedFromError',
168
+ },
169
+ };
170
+ }
171
+ async signMessage(paramsStr, secret, method, algorithm) {
172
+ if (typeof this.options.customSignMessageFn === 'function') {
173
+ return this.options.customSignMessageFn(paramsStr, secret);
174
+ }
175
+ return await signMessage(paramsStr, secret, method, algorithm);
176
+ }
177
+ /**
178
+ * @private sign request and set recv window
179
+ */
180
+ async signRequest(data, endpoint, method, signMethod) {
181
+ const timestamp = Date.now();
182
+ const res = {
183
+ originalParams: {
184
+ ...data,
185
+ },
186
+ sign: '',
187
+ timestamp,
188
+ recvWindow: 0,
189
+ serializedParams: '',
190
+ queryParamsWithSign: '',
191
+ };
192
+ if (!this.apiKey || !this.apiSecret) {
193
+ return res;
194
+ }
195
+ // It's possible to override the recv window on a per rquest level
196
+ const strictParamValidation = this.options.strictParamValidation;
197
+ const encodeQueryStringValues = this.options.encodeQueryStringValues;
198
+ if (signMethod === 'bitget') {
199
+ const signRequestParams = method === 'GET'
200
+ ? serializeParams(data, strictParamValidation, encodeQueryStringValues, '?')
201
+ : JSON.stringify(data) || '';
202
+ const paramsStr = timestamp + method.toUpperCase() + endpoint + signRequestParams;
203
+ // console.log('sign params: ', paramsStr);
204
+ res.sign = await this.signMessage(paramsStr, this.apiSecret, 'base64', 'SHA-256');
205
+ res.queryParamsWithSign = signRequestParams;
206
+ return res;
207
+ }
208
+ console.error(new Date(), neverGuard(signMethod, `Unhandled sign method: "${signMessage}"`));
209
+ return res;
210
+ }
211
+ async prepareSignParams(method, endpoint, signMethod, params, isPublicApi) {
212
+ if (isPublicApi) {
213
+ return {
214
+ originalParams: params,
215
+ paramsWithSign: params,
216
+ };
217
+ }
218
+ if (!this.apiKey || !this.apiSecret) {
219
+ throw new Error('Private endpoints require api and private keys set');
220
+ }
221
+ return this.signRequest(params, endpoint, method, signMethod);
222
+ }
223
+ /** Returns an axios request object. Handles signing process automatically if this is a private API call */
224
+ async buildRequest(method, endpoint, url, params, isPublicApi) {
225
+ const options = {
226
+ ...this.globalRequestOptions,
227
+ url: url,
228
+ method: method,
229
+ };
230
+ for (const key in params) {
231
+ if (typeof params[key] === 'undefined') {
232
+ delete params[key];
233
+ }
234
+ }
235
+ if (isPublicApi || !this.apiKey || !this.apiPass) {
236
+ return {
237
+ ...options,
238
+ params: params,
239
+ };
240
+ }
241
+ const signResult = await this.prepareSignParams(method, endpoint, 'bitget', params, isPublicApi);
242
+ const authHeaders = {
243
+ 'ACCESS-KEY': this.apiKey,
244
+ 'ACCESS-PASSPHRASE': this.apiPass,
245
+ 'ACCESS-TIMESTAMP': signResult.timestamp,
246
+ 'ACCESS-SIGN': signResult.sign,
247
+ };
248
+ if (method === 'GET') {
249
+ return {
250
+ ...options,
251
+ headers: {
252
+ ...authHeaders,
253
+ ...options.headers,
254
+ },
255
+ url: options.url + signResult.queryParamsWithSign,
256
+ };
257
+ }
258
+ return {
259
+ ...options,
260
+ headers: {
261
+ ...authHeaders,
262
+ ...options.headers,
263
+ },
264
+ data: params,
265
+ };
266
+ }
267
+ }
268
+ //# sourceMappingURL=BaseRestClient.js.map