okx-api 2.0.6 → 3.0.0-beta.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 (382) hide show
  1. package/README.md +344 -13
  2. package/dist/cjs/constants/funding.js.map +1 -0
  3. package/dist/cjs/index.d.ts +43 -0
  4. package/dist/cjs/index.js +64 -0
  5. package/dist/cjs/index.js.map +1 -0
  6. package/dist/cjs/package.json +3 -0
  7. package/{lib → dist/cjs}/rest-client.d.ts +28 -15
  8. package/{lib → dist/cjs}/rest-client.js +41 -68
  9. package/dist/cjs/rest-client.js.map +1 -0
  10. package/dist/cjs/types/rest/client.d.ts +36 -0
  11. package/{lib → dist/cjs}/types/rest/client.js.map +1 -1
  12. package/{lib → dist/cjs}/types/rest/request/account.d.ts +1 -1
  13. package/dist/cjs/types/rest/request/account.js.map +1 -0
  14. package/{lib → dist/cjs}/types/rest/request/block-trading.d.ts +1 -1
  15. package/dist/cjs/types/rest/request/block-trading.js.map +1 -0
  16. package/dist/cjs/types/rest/request/convert.js.map +1 -0
  17. package/dist/cjs/types/rest/request/copy-trading.js.map +1 -0
  18. package/dist/cjs/types/rest/request/funding.js.map +1 -0
  19. package/dist/cjs/types/rest/request/grid-trading.js.map +1 -0
  20. package/dist/cjs/types/rest/request/public.js.map +1 -0
  21. package/dist/cjs/types/rest/request/recurring-buy.js.map +1 -0
  22. package/{lib → dist/cjs}/types/rest/request/shared.d.ts +1 -1
  23. package/dist/cjs/types/rest/request/shared.js.map +1 -0
  24. package/dist/cjs/types/rest/request/signal-bot.js.map +1 -0
  25. package/dist/cjs/types/rest/request/simple-earn.js.map +1 -0
  26. package/dist/cjs/types/rest/request/spread-trading.js.map +1 -0
  27. package/dist/cjs/types/rest/request/subaccount.js.map +1 -0
  28. package/{lib → dist/cjs}/types/rest/request/trade.d.ts +1 -1
  29. package/dist/cjs/types/rest/request/trade.js.map +1 -0
  30. package/{lib → dist/cjs}/types/rest/response/private-account.d.ts +1 -1
  31. package/dist/cjs/types/rest/response/private-account.js.map +1 -0
  32. package/{lib → dist/cjs}/types/rest/response/private-block-trading.d.ts +1 -1
  33. package/dist/cjs/types/rest/response/private-block-trading.js.map +1 -0
  34. package/dist/cjs/types/rest/response/private-copy-trading.js.map +1 -0
  35. package/dist/cjs/types/rest/response/private-flexible-loan.js.map +1 -0
  36. package/{lib → dist/cjs}/types/rest/response/private-funding.d.ts +1 -1
  37. package/dist/cjs/types/rest/response/private-funding.js.map +1 -0
  38. package/dist/cjs/types/rest/response/private-recurring-buy.js.map +1 -0
  39. package/dist/cjs/types/rest/response/private-signal-bot.js.map +1 -0
  40. package/dist/cjs/types/rest/response/private-spread-trading.js.map +1 -0
  41. package/dist/cjs/types/rest/response/private-subaccount.js.map +1 -0
  42. package/{lib → dist/cjs}/types/rest/response/private-trade.d.ts +1 -1
  43. package/dist/cjs/types/rest/response/private-trade.js.map +1 -0
  44. package/{lib → dist/cjs}/types/rest/response/public-data.d.ts +1 -1
  45. package/dist/cjs/types/rest/response/public-data.js.map +1 -0
  46. package/{lib → dist/cjs}/types/rest/shared.d.ts +2 -2
  47. package/dist/cjs/types/rest/shared.js.map +1 -0
  48. package/dist/cjs/types/shared.d.ts +13 -0
  49. package/{lib → dist/cjs}/types/shared.js.map +1 -1
  50. package/dist/cjs/types/websockets/ws-api-request.d.ts +61 -0
  51. package/dist/cjs/types/websockets/ws-api-request.js +3 -0
  52. package/dist/cjs/types/websockets/ws-api-request.js.map +1 -0
  53. package/dist/cjs/types/websockets/ws-api-response.d.ts +28 -0
  54. package/dist/cjs/types/websockets/ws-api-response.js +3 -0
  55. package/dist/cjs/types/websockets/ws-api-response.js.map +1 -0
  56. package/dist/cjs/types/websockets/ws-api.d.ts +139 -0
  57. package/dist/cjs/types/websockets/ws-api.js +38 -0
  58. package/dist/cjs/types/websockets/ws-api.js.map +1 -0
  59. package/{lib/types/websockets/event.d.ts → dist/cjs/types/websockets/ws-events.d.ts} +7 -1
  60. package/dist/cjs/types/websockets/ws-events.js +11 -0
  61. package/dist/cjs/types/websockets/ws-events.js.map +1 -0
  62. package/dist/cjs/types/websockets/ws-general.d.ts +48 -0
  63. package/dist/cjs/types/websockets/ws-general.js +3 -0
  64. package/dist/cjs/types/websockets/ws-general.js.map +1 -0
  65. package/{lib/types/websockets/request.d.ts → dist/cjs/types/websockets/ws-request.d.ts} +0 -22
  66. package/dist/cjs/types/websockets/ws-request.js +3 -0
  67. package/dist/cjs/types/websockets/ws-request.js.map +1 -0
  68. package/{lib → dist/cjs}/util/BaseRestClient.d.ts +1 -1
  69. package/dist/cjs/util/BaseRestClient.js +237 -0
  70. package/dist/cjs/util/BaseRestClient.js.map +1 -0
  71. package/dist/cjs/util/BaseWSClient.d.ts +198 -0
  72. package/dist/cjs/util/BaseWSClient.js +770 -0
  73. package/dist/cjs/util/BaseWSClient.js.map +1 -0
  74. package/dist/cjs/util/WsStore.d.ts +75 -0
  75. package/dist/cjs/util/WsStore.js +303 -0
  76. package/dist/cjs/util/WsStore.js.map +1 -0
  77. package/dist/cjs/util/WsStore.types.d.ts +51 -0
  78. package/dist/cjs/util/WsStore.types.js +14 -0
  79. package/dist/cjs/util/WsStore.types.js.map +1 -0
  80. package/dist/cjs/util/logger.d.ts +8 -0
  81. package/{lib → dist/cjs}/util/logger.js +3 -11
  82. package/dist/cjs/util/logger.js.map +1 -0
  83. package/{lib → dist/cjs}/util/requestUtils.d.ts +2 -1
  84. package/{lib → dist/cjs}/util/requestUtils.js +13 -5
  85. package/dist/cjs/util/requestUtils.js.map +1 -0
  86. package/{lib → dist/cjs}/util/typeGuards.d.ts +4 -2
  87. package/{lib → dist/cjs}/util/typeGuards.js +43 -10
  88. package/dist/cjs/util/typeGuards.js.map +1 -0
  89. package/dist/cjs/util/webCryptoAPI.d.ts +15 -0
  90. package/dist/cjs/util/webCryptoAPI.js +82 -0
  91. package/dist/cjs/util/webCryptoAPI.js.map +1 -0
  92. package/dist/cjs/util/websocket-util.d.ts +142 -0
  93. package/dist/cjs/util/websocket-util.js +533 -0
  94. package/dist/cjs/util/websocket-util.js.map +1 -0
  95. package/dist/cjs/websocket-api-client.d.ts +135 -0
  96. package/dist/cjs/websocket-api-client.js +171 -0
  97. package/dist/cjs/websocket-api-client.js.map +1 -0
  98. package/{lib/websocket-client.d.ts → dist/cjs/websocket-client-legacy.d.ts} +16 -39
  99. package/dist/cjs/websocket-client-legacy.js +524 -0
  100. package/dist/cjs/websocket-client-legacy.js.map +1 -0
  101. package/dist/cjs/websocket-client.d.ts +81 -0
  102. package/dist/cjs/websocket-client.js +548 -0
  103. package/dist/cjs/websocket-client.js.map +1 -0
  104. package/dist/mjs/constants/funding.d.ts +139 -0
  105. package/dist/mjs/constants/funding.js +140 -0
  106. package/dist/mjs/constants/funding.js.map +1 -0
  107. package/dist/mjs/index.d.ts +43 -0
  108. package/dist/mjs/index.js +48 -0
  109. package/dist/mjs/index.js.map +1 -0
  110. package/dist/mjs/package.json +3 -0
  111. package/dist/mjs/rest-client.d.ts +1173 -0
  112. package/dist/mjs/rest-client.js +1271 -0
  113. package/dist/mjs/rest-client.js.map +1 -0
  114. package/dist/mjs/types/rest/client.d.ts +36 -0
  115. package/dist/mjs/types/rest/client.js +2 -0
  116. package/{lib/types/websockets → dist/mjs/types/rest}/client.js.map +1 -1
  117. package/dist/mjs/types/rest/request/account.d.ts +144 -0
  118. package/dist/mjs/types/rest/request/account.js +2 -0
  119. package/dist/mjs/types/rest/request/account.js.map +1 -0
  120. package/dist/mjs/types/rest/request/block-trading.d.ts +76 -0
  121. package/dist/mjs/types/rest/request/block-trading.js +2 -0
  122. package/dist/mjs/types/rest/request/block-trading.js.map +1 -0
  123. package/dist/mjs/types/rest/request/convert.d.ts +19 -0
  124. package/dist/mjs/types/rest/request/convert.js +2 -0
  125. package/dist/mjs/types/rest/request/convert.js.map +1 -0
  126. package/dist/mjs/types/rest/request/copy-trading.d.ts +117 -0
  127. package/dist/mjs/types/rest/request/copy-trading.js +2 -0
  128. package/dist/mjs/types/rest/request/copy-trading.js.map +1 -0
  129. package/dist/mjs/types/rest/request/funding.d.ts +43 -0
  130. package/dist/mjs/types/rest/request/funding.js +2 -0
  131. package/dist/mjs/types/rest/request/funding.js.map +1 -0
  132. package/dist/mjs/types/rest/request/grid-trading.d.ts +66 -0
  133. package/dist/mjs/types/rest/request/grid-trading.js +2 -0
  134. package/dist/mjs/types/rest/request/grid-trading.js.map +1 -0
  135. package/dist/mjs/types/rest/request/public.d.ts +55 -0
  136. package/dist/mjs/types/rest/request/public.js +2 -0
  137. package/dist/mjs/types/rest/request/public.js.map +1 -0
  138. package/dist/mjs/types/rest/request/recurring-buy.d.ts +28 -0
  139. package/dist/mjs/types/rest/request/recurring-buy.js +2 -0
  140. package/dist/mjs/types/rest/request/recurring-buy.js.map +1 -0
  141. package/dist/mjs/types/rest/request/shared.d.ts +7 -0
  142. package/dist/mjs/types/rest/request/shared.js +2 -0
  143. package/dist/mjs/types/rest/request/shared.js.map +1 -0
  144. package/dist/mjs/types/rest/request/signal-bot.d.ts +97 -0
  145. package/dist/mjs/types/rest/request/signal-bot.js +2 -0
  146. package/dist/mjs/types/rest/request/signal-bot.js.map +1 -0
  147. package/dist/mjs/types/rest/request/simple-earn.d.ts +23 -0
  148. package/dist/mjs/types/rest/request/simple-earn.js +2 -0
  149. package/dist/mjs/types/rest/request/simple-earn.js.map +1 -0
  150. package/dist/mjs/types/rest/request/spread-trading.d.ts +69 -0
  151. package/dist/mjs/types/rest/request/spread-trading.js +2 -0
  152. package/dist/mjs/types/rest/request/spread-trading.js.map +1 -0
  153. package/dist/mjs/types/rest/request/subaccount.d.ts +33 -0
  154. package/dist/mjs/types/rest/request/subaccount.js +2 -0
  155. package/dist/mjs/types/rest/request/subaccount.js.map +1 -0
  156. package/dist/mjs/types/rest/request/trade.d.ts +194 -0
  157. package/dist/mjs/types/rest/request/trade.js +2 -0
  158. package/dist/mjs/types/rest/request/trade.js.map +1 -0
  159. package/dist/mjs/types/rest/response/private-account.d.ts +448 -0
  160. package/dist/mjs/types/rest/response/private-account.js +2 -0
  161. package/dist/mjs/types/rest/response/private-account.js.map +1 -0
  162. package/dist/mjs/types/rest/response/private-block-trading.d.ts +124 -0
  163. package/dist/mjs/types/rest/response/private-block-trading.js +2 -0
  164. package/dist/mjs/types/rest/response/private-block-trading.js.map +1 -0
  165. package/dist/mjs/types/rest/response/private-copy-trading.d.ts +259 -0
  166. package/dist/mjs/types/rest/response/private-copy-trading.js +2 -0
  167. package/dist/mjs/types/rest/response/private-copy-trading.js.map +1 -0
  168. package/dist/mjs/types/rest/response/private-flexible-loan.d.ts +72 -0
  169. package/dist/mjs/types/rest/response/private-flexible-loan.js +2 -0
  170. package/dist/mjs/types/rest/response/private-flexible-loan.js.map +1 -0
  171. package/dist/mjs/types/rest/response/private-funding.d.ts +102 -0
  172. package/dist/mjs/types/rest/response/private-funding.js +2 -0
  173. package/dist/mjs/types/rest/response/private-funding.js.map +1 -0
  174. package/dist/mjs/types/rest/response/private-recurring-buy.d.ts +63 -0
  175. package/dist/mjs/types/rest/response/private-recurring-buy.js +2 -0
  176. package/dist/mjs/types/rest/response/private-recurring-buy.js.map +1 -0
  177. package/dist/mjs/types/rest/response/private-signal-bot.d.ts +22 -0
  178. package/dist/mjs/types/rest/response/private-signal-bot.js +2 -0
  179. package/dist/mjs/types/rest/response/private-signal-bot.js.map +1 -0
  180. package/dist/mjs/types/rest/response/private-spread-trading.d.ts +126 -0
  181. package/dist/mjs/types/rest/response/private-spread-trading.js +2 -0
  182. package/dist/mjs/types/rest/response/private-spread-trading.js.map +1 -0
  183. package/dist/mjs/types/rest/response/private-subaccount.d.ts +80 -0
  184. package/dist/mjs/types/rest/response/private-subaccount.js +2 -0
  185. package/dist/mjs/types/rest/response/private-subaccount.js.map +1 -0
  186. package/dist/mjs/types/rest/response/private-trade.d.ts +355 -0
  187. package/dist/mjs/types/rest/response/private-trade.js +2 -0
  188. package/dist/mjs/types/rest/response/private-trade.js.map +1 -0
  189. package/dist/mjs/types/rest/response/public-data.d.ts +174 -0
  190. package/dist/mjs/types/rest/response/public-data.js +2 -0
  191. package/dist/mjs/types/rest/response/public-data.js.map +1 -0
  192. package/dist/mjs/types/rest/shared.d.ts +45 -0
  193. package/dist/mjs/types/rest/shared.js +2 -0
  194. package/dist/mjs/types/rest/shared.js.map +1 -0
  195. package/dist/mjs/types/shared.d.ts +13 -0
  196. package/dist/mjs/types/shared.js +2 -0
  197. package/{lib/types/rest → dist/mjs/types}/shared.js.map +1 -1
  198. package/dist/mjs/types/websockets/ws-api-request.d.ts +61 -0
  199. package/dist/mjs/types/websockets/ws-api-request.js +2 -0
  200. package/dist/mjs/types/websockets/ws-api-request.js.map +1 -0
  201. package/dist/mjs/types/websockets/ws-api-response.d.ts +28 -0
  202. package/dist/mjs/types/websockets/ws-api-response.js +2 -0
  203. package/dist/mjs/types/websockets/ws-api-response.js.map +1 -0
  204. package/dist/mjs/types/websockets/ws-api.d.ts +139 -0
  205. package/dist/mjs/types/websockets/ws-api.js +35 -0
  206. package/dist/mjs/types/websockets/ws-api.js.map +1 -0
  207. package/dist/mjs/types/websockets/ws-events.d.ts +33 -0
  208. package/dist/mjs/types/websockets/ws-events.js +8 -0
  209. package/dist/mjs/types/websockets/ws-events.js.map +1 -0
  210. package/dist/mjs/types/websockets/ws-general.d.ts +48 -0
  211. package/dist/mjs/types/websockets/ws-general.js +2 -0
  212. package/dist/mjs/types/websockets/ws-general.js.map +1 -0
  213. package/dist/mjs/types/websockets/ws-request.d.ts +93 -0
  214. package/dist/mjs/types/websockets/ws-request.js +2 -0
  215. package/dist/mjs/types/websockets/ws-request.js.map +1 -0
  216. package/dist/mjs/util/BaseRestClient.d.ts +29 -0
  217. package/dist/mjs/util/BaseRestClient.js +230 -0
  218. package/dist/mjs/util/BaseRestClient.js.map +1 -0
  219. package/dist/mjs/util/BaseWSClient.d.ts +198 -0
  220. package/dist/mjs/util/BaseWSClient.js +763 -0
  221. package/dist/mjs/util/BaseWSClient.js.map +1 -0
  222. package/dist/mjs/util/WsStore.d.ts +75 -0
  223. package/dist/mjs/util/WsStore.js +298 -0
  224. package/dist/mjs/util/WsStore.js.map +1 -0
  225. package/dist/mjs/util/WsStore.types.d.ts +51 -0
  226. package/dist/mjs/util/WsStore.types.js +11 -0
  227. package/dist/mjs/util/WsStore.types.js.map +1 -0
  228. package/dist/mjs/util/logger.d.ts +8 -0
  229. package/dist/mjs/util/logger.js +14 -0
  230. package/dist/mjs/util/logger.js.map +1 -0
  231. package/dist/mjs/util/requestUtils.d.ts +8 -0
  232. package/dist/mjs/util/requestUtils.js +51 -0
  233. package/dist/mjs/util/requestUtils.js.map +1 -0
  234. package/dist/mjs/util/typeGuards.d.ts +19 -0
  235. package/dist/mjs/util/typeGuards.js +85 -0
  236. package/dist/mjs/util/typeGuards.js.map +1 -0
  237. package/dist/mjs/util/webCryptoAPI.d.ts +15 -0
  238. package/dist/mjs/util/webCryptoAPI.js +77 -0
  239. package/dist/mjs/util/webCryptoAPI.js.map +1 -0
  240. package/dist/mjs/util/websocket-util.d.ts +142 -0
  241. package/dist/mjs/util/websocket-util.js +517 -0
  242. package/dist/mjs/util/websocket-util.js.map +1 -0
  243. package/dist/mjs/websocket-api-client.d.ts +135 -0
  244. package/dist/mjs/websocket-api-client.js +167 -0
  245. package/dist/mjs/websocket-api-client.js.map +1 -0
  246. package/dist/mjs/websocket-client-legacy.d.ts +76 -0
  247. package/dist/mjs/websocket-client-legacy.js +517 -0
  248. package/dist/mjs/websocket-client-legacy.js.map +1 -0
  249. package/dist/mjs/websocket-client.d.ts +81 -0
  250. package/dist/mjs/websocket-client.js +544 -0
  251. package/dist/mjs/websocket-client.js.map +1 -0
  252. package/llms.txt +9266 -0
  253. package/package.json +30 -13
  254. package/index.js +0 -1
  255. package/lib/constants/funding.js.map +0 -1
  256. package/lib/constants/index.d.ts +0 -1
  257. package/lib/constants/index.js +0 -18
  258. package/lib/constants/index.js.map +0 -1
  259. package/lib/index.d.ts +0 -5
  260. package/lib/index.js +0 -22
  261. package/lib/index.js.map +0 -1
  262. package/lib/rest-client.js.map +0 -1
  263. package/lib/types/index.d.ts +0 -3
  264. package/lib/types/index.js +0 -20
  265. package/lib/types/index.js.map +0 -1
  266. package/lib/types/rest/client.d.ts +0 -20
  267. package/lib/types/rest/index.d.ts +0 -4
  268. package/lib/types/rest/index.js +0 -21
  269. package/lib/types/rest/index.js.map +0 -1
  270. package/lib/types/rest/request/account.js.map +0 -1
  271. package/lib/types/rest/request/announement.d.ts +0 -0
  272. package/lib/types/rest/request/announement.js +0 -1
  273. package/lib/types/rest/request/announement.js.map +0 -1
  274. package/lib/types/rest/request/block-trading.js.map +0 -1
  275. package/lib/types/rest/request/convert.js.map +0 -1
  276. package/lib/types/rest/request/copy-trading.js.map +0 -1
  277. package/lib/types/rest/request/funding.js.map +0 -1
  278. package/lib/types/rest/request/grid-trading.js.map +0 -1
  279. package/lib/types/rest/request/index.d.ts +0 -14
  280. package/lib/types/rest/request/index.js +0 -31
  281. package/lib/types/rest/request/index.js.map +0 -1
  282. package/lib/types/rest/request/public.js.map +0 -1
  283. package/lib/types/rest/request/recurring-buy.js.map +0 -1
  284. package/lib/types/rest/request/shared.js.map +0 -1
  285. package/lib/types/rest/request/signal-bot.js.map +0 -1
  286. package/lib/types/rest/request/simple-earn.js.map +0 -1
  287. package/lib/types/rest/request/spread-trading.js.map +0 -1
  288. package/lib/types/rest/request/subaccount.js.map +0 -1
  289. package/lib/types/rest/request/trade.js.map +0 -1
  290. package/lib/types/rest/response/index.d.ts +0 -11
  291. package/lib/types/rest/response/index.js +0 -28
  292. package/lib/types/rest/response/index.js.map +0 -1
  293. package/lib/types/rest/response/private-account.js.map +0 -1
  294. package/lib/types/rest/response/private-block-trading.js.map +0 -1
  295. package/lib/types/rest/response/private-copy-trading.js.map +0 -1
  296. package/lib/types/rest/response/private-flexible-loan.js.map +0 -1
  297. package/lib/types/rest/response/private-funding.js.map +0 -1
  298. package/lib/types/rest/response/private-recurring-buy.js.map +0 -1
  299. package/lib/types/rest/response/private-signal-bot.js.map +0 -1
  300. package/lib/types/rest/response/private-spread-trading.js.map +0 -1
  301. package/lib/types/rest/response/private-subaccount.js.map +0 -1
  302. package/lib/types/rest/response/private-trade.js.map +0 -1
  303. package/lib/types/rest/response/public-data.js.map +0 -1
  304. package/lib/types/shared.d.ts +0 -6
  305. package/lib/types/websockets/client.d.ts +0 -22
  306. package/lib/types/websockets/client.js +0 -3
  307. package/lib/types/websockets/event.js +0 -3
  308. package/lib/types/websockets/event.js.map +0 -1
  309. package/lib/types/websockets/index.d.ts +0 -3
  310. package/lib/types/websockets/index.js +0 -20
  311. package/lib/types/websockets/index.js.map +0 -1
  312. package/lib/types/websockets/request.js +0 -3
  313. package/lib/types/websockets/request.js.map +0 -1
  314. package/lib/util/BaseRestClient.js +0 -217
  315. package/lib/util/BaseRestClient.js.map +0 -1
  316. package/lib/util/WsStore.d.ts +0 -66
  317. package/lib/util/WsStore.js +0 -168
  318. package/lib/util/WsStore.js.map +0 -1
  319. package/lib/util/browser-support.d.ts +0 -6
  320. package/lib/util/browser-support.js +0 -49
  321. package/lib/util/browser-support.js.map +0 -1
  322. package/lib/util/index.d.ts +0 -4
  323. package/lib/util/index.js +0 -21
  324. package/lib/util/index.js.map +0 -1
  325. package/lib/util/logger.d.ts +0 -9
  326. package/lib/util/logger.js.map +0 -1
  327. package/lib/util/node-support.d.ts +0 -1
  328. package/lib/util/node-support.js +0 -9
  329. package/lib/util/node-support.js.map +0 -1
  330. package/lib/util/requestUtils.js.map +0 -1
  331. package/lib/util/typeGuards.js.map +0 -1
  332. package/lib/util/websocket-util.d.ts +0 -35
  333. package/lib/util/websocket-util.js +0 -282
  334. package/lib/util/websocket-util.js.map +0 -1
  335. package/lib/websocket-client.js +0 -472
  336. package/lib/websocket-client.js.map +0 -1
  337. /package/{lib → dist/cjs}/constants/funding.d.ts +0 -0
  338. /package/{lib → dist/cjs}/constants/funding.js +0 -0
  339. /package/{lib → dist/cjs}/types/rest/client.js +0 -0
  340. /package/{lib → dist/cjs}/types/rest/request/account.js +0 -0
  341. /package/{lib → dist/cjs}/types/rest/request/block-trading.js +0 -0
  342. /package/{lib → dist/cjs}/types/rest/request/convert.d.ts +0 -0
  343. /package/{lib → dist/cjs}/types/rest/request/convert.js +0 -0
  344. /package/{lib → dist/cjs}/types/rest/request/copy-trading.d.ts +0 -0
  345. /package/{lib → dist/cjs}/types/rest/request/copy-trading.js +0 -0
  346. /package/{lib → dist/cjs}/types/rest/request/funding.d.ts +0 -0
  347. /package/{lib → dist/cjs}/types/rest/request/funding.js +0 -0
  348. /package/{lib → dist/cjs}/types/rest/request/grid-trading.d.ts +0 -0
  349. /package/{lib → dist/cjs}/types/rest/request/grid-trading.js +0 -0
  350. /package/{lib → dist/cjs}/types/rest/request/public.d.ts +0 -0
  351. /package/{lib → dist/cjs}/types/rest/request/public.js +0 -0
  352. /package/{lib → dist/cjs}/types/rest/request/recurring-buy.d.ts +0 -0
  353. /package/{lib → dist/cjs}/types/rest/request/recurring-buy.js +0 -0
  354. /package/{lib → dist/cjs}/types/rest/request/shared.js +0 -0
  355. /package/{lib → dist/cjs}/types/rest/request/signal-bot.d.ts +0 -0
  356. /package/{lib → dist/cjs}/types/rest/request/signal-bot.js +0 -0
  357. /package/{lib → dist/cjs}/types/rest/request/simple-earn.d.ts +0 -0
  358. /package/{lib → dist/cjs}/types/rest/request/simple-earn.js +0 -0
  359. /package/{lib → dist/cjs}/types/rest/request/spread-trading.d.ts +0 -0
  360. /package/{lib → dist/cjs}/types/rest/request/spread-trading.js +0 -0
  361. /package/{lib → dist/cjs}/types/rest/request/subaccount.d.ts +0 -0
  362. /package/{lib → dist/cjs}/types/rest/request/subaccount.js +0 -0
  363. /package/{lib → dist/cjs}/types/rest/request/trade.js +0 -0
  364. /package/{lib → dist/cjs}/types/rest/response/private-account.js +0 -0
  365. /package/{lib → dist/cjs}/types/rest/response/private-block-trading.js +0 -0
  366. /package/{lib → dist/cjs}/types/rest/response/private-copy-trading.d.ts +0 -0
  367. /package/{lib → dist/cjs}/types/rest/response/private-copy-trading.js +0 -0
  368. /package/{lib → dist/cjs}/types/rest/response/private-flexible-loan.d.ts +0 -0
  369. /package/{lib → dist/cjs}/types/rest/response/private-flexible-loan.js +0 -0
  370. /package/{lib → dist/cjs}/types/rest/response/private-funding.js +0 -0
  371. /package/{lib → dist/cjs}/types/rest/response/private-recurring-buy.d.ts +0 -0
  372. /package/{lib → dist/cjs}/types/rest/response/private-recurring-buy.js +0 -0
  373. /package/{lib → dist/cjs}/types/rest/response/private-signal-bot.d.ts +0 -0
  374. /package/{lib → dist/cjs}/types/rest/response/private-signal-bot.js +0 -0
  375. /package/{lib → dist/cjs}/types/rest/response/private-spread-trading.d.ts +0 -0
  376. /package/{lib → dist/cjs}/types/rest/response/private-spread-trading.js +0 -0
  377. /package/{lib → dist/cjs}/types/rest/response/private-subaccount.d.ts +0 -0
  378. /package/{lib → dist/cjs}/types/rest/response/private-subaccount.js +0 -0
  379. /package/{lib → dist/cjs}/types/rest/response/private-trade.js +0 -0
  380. /package/{lib → dist/cjs}/types/rest/response/public-data.js +0 -0
  381. /package/{lib → dist/cjs}/types/rest/shared.js +0 -0
  382. /package/{lib → dist/cjs}/types/shared.js +0 -0
@@ -0,0 +1,139 @@
1
+ import { WS_KEY_MAP, WsKey } from '../../util/websocket-util.js';
2
+ import { OrderIdRequest } from '../rest/request/trade.js';
3
+ import { OrderResult } from '../rest/response/private-trade.js';
4
+ import { numberInString } from '../rest/shared.js';
5
+ import { WSAPIAmendOrderRequestV5, WSAPIAmendSpreadOrderRequestV5, WSAPICancelSpreadOrderRequestV5, WSAPIMassCancelOrdersRequestV5, WSAPIPlaceOrderRequestV5, WSAPIPlaceSpreadOrderRequestV5, WSAPISpreadMassCancelOrdersRequestV5 } from './ws-api-request.js';
6
+ import { WSAPICancelOrderResultV5, WSAPISpreadAmendOrderResultV5, WSAPISpreadCancelOrderResultV5, WSAPISpreadPlaceOrderResultV5 } from './ws-api-response.js';
7
+ import { WsAuthRequestArg, WsChannelSubUnSubRequestArg } from './ws-request.js';
8
+ export interface WSAPIRequestFlags {
9
+ /** If true, will skip auth requirement for WS API connection */
10
+ authIsOptional?: boolean | undefined;
11
+ /**
12
+ * Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085
13
+ *
14
+ * Only applies for order placement and order amend (batch commands included)
15
+ */
16
+ expTime?: numberInString;
17
+ }
18
+ export type WSOperation = 'subscribe' | 'unsubscribe' | 'login';
19
+ /**
20
+ *
21
+ * Top level requests with args
22
+ *
23
+ */
24
+ /**
25
+
26
+ /**
27
+ * request looks like this:
28
+ {
29
+ "id": "1512",
30
+ "op": "subscribe",
31
+ "args": [
32
+ {
33
+ "channel": "tickers",
34
+ "instId": "BTC-USDT"
35
+ }
36
+ ]
37
+ }
38
+ */
39
+ export interface WsRequestOperationOKX<TWSRequestArg> {
40
+ id: string;
41
+ op: WSOperation;
42
+ args?: TWSRequestArg[];
43
+ }
44
+ export interface WsSubRequest extends WsRequestOperationOKX<WsChannelSubUnSubRequestArg> {
45
+ op: 'subscribe';
46
+ }
47
+ export interface WsUnsubRequest extends WsRequestOperationOKX<WsChannelSubUnSubRequestArg> {
48
+ op: 'unsubscribe';
49
+ }
50
+ export interface WsAuthRequest extends WsRequestOperationOKX<WsAuthRequestArg> {
51
+ op: 'login';
52
+ }
53
+ export type WSAPIPrivateOperations = 'order' | 'batch-orders' | 'cancel-order' | 'batch-cancel-orders' | 'amend-order' | 'batch-amend-orders' | 'mass-cancel';
54
+ export type WSAPIBusinessOperations = 'sprd-order' | 'sprd-amend-order' | 'sprd-cancel-order' | 'sprd-mass-cancel';
55
+ export type WSAPIOperation = WSAPIPrivateOperations | WSAPIBusinessOperations;
56
+ export declare const WS_API_Operations: WSAPIOperation[];
57
+ export declare const WS_API_PRIVATE_OPERATIONS: WSAPIPrivateOperations[];
58
+ export declare const WS_API_BUSINESS_OPERATIONS: WSAPIBusinessOperations[];
59
+ export declare const WS_API_TAG_OPERATIONS: WSAPIOperation[];
60
+ export interface WSAPIRequestOKX<TRequestParams> {
61
+ id: numberInString;
62
+ op: WSAPIOperation;
63
+ expTime?: numberInString;
64
+ args: TRequestParams[];
65
+ }
66
+ export interface WSAPIResponse<TResponseData extends object = object, TOperation extends WSAPIOperation = WSAPIOperation> {
67
+ wsKey: WsKey;
68
+ id: numberInString;
69
+ op: TOperation;
70
+ code: numberInString;
71
+ msg: string;
72
+ data: TResponseData[];
73
+ inTime: numberInString;
74
+ outTime: numberInString;
75
+ }
76
+ export interface WSOperationLoginParams {
77
+ apiKey: string;
78
+ passphrase: string;
79
+ timestamp: number;
80
+ sign: string;
81
+ }
82
+ export type Exact<T> = {
83
+ [K: string]: never;
84
+ } & {
85
+ [K in keyof T]: T[K];
86
+ };
87
+ /**
88
+ * List of operations supported for this WsKey (connection)
89
+ */
90
+ export interface WsAPIWsKeyTopicMap {
91
+ [WS_KEY_MAP.prodPrivate]: WSAPIPrivateOperations;
92
+ [WS_KEY_MAP.prodDemoPrivate]: WSAPIPrivateOperations;
93
+ [WS_KEY_MAP.prodBusiness]: WSAPIBusinessOperations;
94
+ [WS_KEY_MAP.prodDemoBusiness]: WSAPIBusinessOperations;
95
+ [WS_KEY_MAP.eeaLivePrivate]: WSAPIPrivateOperations;
96
+ [WS_KEY_MAP.eeaDemoPrivate]: WSAPIPrivateOperations;
97
+ [WS_KEY_MAP.usLivePrivate]: WSAPIPrivateOperations;
98
+ [WS_KEY_MAP.usDemoPrivate]: WSAPIPrivateOperations;
99
+ }
100
+ /**
101
+ * Request parameters expected per operation
102
+ */
103
+ export interface WsAPITopicRequestParamMap {
104
+ order: WSAPIPlaceOrderRequestV5;
105
+ 'batch-orders': WSAPIPlaceOrderRequestV5[];
106
+ 'cancel-order': OrderIdRequest;
107
+ 'batch-cancel-orders': OrderIdRequest[];
108
+ 'amend-order': WSAPIAmendOrderRequestV5;
109
+ 'batch-amend-orders': WSAPIAmendOrderRequestV5[];
110
+ 'mass-cancel': WSAPIMassCancelOrdersRequestV5;
111
+ 'sprd-order': WSAPIPlaceSpreadOrderRequestV5;
112
+ 'sprd-amend-order': WSAPIAmendSpreadOrderRequestV5;
113
+ 'sprd-cancel-order': WSAPICancelSpreadOrderRequestV5;
114
+ 'sprd-mass-cancel': WSAPISpreadMassCancelOrdersRequestV5;
115
+ }
116
+ /**
117
+ * Response structure expected for each operation
118
+ */
119
+ export interface WsAPIOperationResponseMap {
120
+ order: WSAPIResponse<[OrderResult], 'order'>;
121
+ 'batch-orders': WSAPIResponse<OrderResult[], 'batch-orders'>;
122
+ 'cancel-order': WSAPIResponse<[WSAPICancelOrderResultV5], 'cancel-order'>;
123
+ 'batch-cancel-orders': WSAPIResponse<WSAPICancelOrderResultV5[], 'batch-cancel-orders'>;
124
+ 'amend-order': WSAPIResponse<[OrderResult], 'amend-order'>;
125
+ 'batch-amend-orders': WSAPIResponse<[OrderResult], 'batch-amend-orders'>;
126
+ 'mass-cancel': WSAPIResponse<[{
127
+ result: boolean;
128
+ }], 'mass-cancel'>;
129
+ 'sprd-order': WSAPIResponse<[WSAPISpreadPlaceOrderResultV5], 'sprd-order'>;
130
+ 'sprd-amend-order': WSAPIResponse<[
131
+ WSAPISpreadAmendOrderResultV5
132
+ ], 'sprd-amend-order'>;
133
+ 'sprd-cancel-order': WSAPIResponse<[
134
+ WSAPISpreadCancelOrderResultV5
135
+ ], 'sprd-cancel-order'>;
136
+ 'sprd-mass-cancel': WSAPIResponse<[{
137
+ result: boolean;
138
+ }], 'sprd-mass-cancel'>;
139
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WS_API_TAG_OPERATIONS = exports.WS_API_BUSINESS_OPERATIONS = exports.WS_API_PRIVATE_OPERATIONS = exports.WS_API_Operations = void 0;
4
+ const websocket_util_js_1 = require("../../util/websocket-util.js");
5
+ exports.WS_API_Operations = [
6
+ 'order',
7
+ 'batch-orders',
8
+ 'cancel-order',
9
+ 'batch-cancel-orders',
10
+ 'amend-order',
11
+ 'batch-amend-orders',
12
+ 'mass-cancel',
13
+ 'sprd-order',
14
+ 'sprd-amend-order',
15
+ 'sprd-cancel-order',
16
+ 'sprd-mass-cancel',
17
+ ];
18
+ exports.WS_API_PRIVATE_OPERATIONS = [
19
+ 'order',
20
+ 'batch-orders',
21
+ 'cancel-order',
22
+ 'batch-cancel-orders',
23
+ 'amend-order',
24
+ 'batch-amend-orders',
25
+ 'mass-cancel',
26
+ ];
27
+ exports.WS_API_BUSINESS_OPERATIONS = [
28
+ 'sprd-order',
29
+ 'sprd-amend-order',
30
+ 'sprd-cancel-order',
31
+ 'sprd-mass-cancel',
32
+ ];
33
+ exports.WS_API_TAG_OPERATIONS = [
34
+ 'order',
35
+ 'batch-orders',
36
+ 'sprd-order',
37
+ ];
38
+ //# 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,oEAAiE;AAwGpD,QAAA,iBAAiB,GAAqB;IACjD,OAAO;IACP,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,aAAa;IACb,oBAAoB;IACpB,aAAa;IACb,YAAY;IACZ,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;CACnB,CAAC;AAEW,QAAA,yBAAyB,GAA6B;IACjE,OAAO;IACP,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,aAAa;IACb,oBAAoB;IACpB,aAAa;CACd,CAAC;AAEW,QAAA,0BAA0B,GAA8B;IACnE,YAAY;IACZ,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;CACnB,CAAC;AAEW,QAAA,qBAAqB,GAAqB;IACrD,OAAO;IACP,cAAc;IACd,YAAY;CACb,CAAC"}
@@ -1,4 +1,10 @@
1
- import { WsChannel } from './request';
1
+ import { WsChannel } from './ws-request.js';
2
+ export interface MessageEventLike {
3
+ target: WebSocket;
4
+ type: 'message';
5
+ data: string;
6
+ }
7
+ export declare function isMessageEvent(msg: unknown): msg is MessageEventLike;
2
8
  export interface WsEvent {
3
9
  event: 'error' | 'login' | 'subscribe' | 'unsubscribe' | 'channel-conn-count';
4
10
  code?: string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isMessageEvent = isMessageEvent;
4
+ function isMessageEvent(msg) {
5
+ if (typeof msg !== 'object' || !msg) {
6
+ return false;
7
+ }
8
+ const message = msg;
9
+ return message['type'] === 'message' && typeof message['data'] === 'string';
10
+ }
11
+ //# 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":";;AAQA,wCAOC;AAPD,SAAgB,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,48 @@
1
+ import { RestClientOptions } from '../rest/client.js';
2
+ import { APICredentials, APIMarket } from '../shared.js';
3
+ export interface WSClientConfigurableOptions {
4
+ accounts?: APICredentials[];
5
+ /**
6
+ * The API group this client should connect to:
7
+ * - market: 'prod' (default: connects to OKX global) https://www.okx.com/docs-v5/en/#overview-production-trading-services
8
+ * - market: 'EEA' // also known as "my.okx.com" https://my.okx.com/docs-v5/en/#overview-production-trading-services
9
+ * - market: 'US' // also known as "app.okx.com" https://app.okx.com/docs-v5/en/#overview-production-trading-services
10
+ */
11
+ market?: APIMarket;
12
+ /**
13
+ * Set to `true` to use OKX's demo trading functionality
14
+ */
15
+ demoTrading?: boolean;
16
+ disableHeartbeat?: boolean;
17
+ /** How often to check if the connection is alive */
18
+ pingInterval?: number;
19
+ /** How long to wait for a pong (heartbeat reply) before assuming the connection is dead */
20
+ pongTimeout?: number;
21
+ /** Delay in milliseconds before respawning the connection */
22
+ reconnectTimeout?: number;
23
+ requestOptions?: RestClientOptions;
24
+ wsOptions?: {
25
+ protocols?: string[];
26
+ agent?: any;
27
+ };
28
+ wsUrl?: string;
29
+ /**
30
+ * Allows you to provide a custom "signMessage" function, e.g. to use node's much faster createHmac method
31
+ *
32
+ * Look in the examples folder for a demonstration on using node's createHmac instead.
33
+ */
34
+ customSignMessageFn?: (message: string, secret: string) => Promise<string>;
35
+ }
36
+ export interface WebsocketClientOptions extends WSClientConfigurableOptions {
37
+ market: APIMarket;
38
+ pongTimeout: number;
39
+ pingInterval: number;
40
+ reconnectTimeout: number;
41
+ authPrivateConnectionsOnConnect: boolean;
42
+ authPrivateRequests: boolean;
43
+ /**
44
+ * Whether to use native WebSocket ping/pong frames for heartbeats
45
+ */
46
+ useNativeHeartbeats: boolean;
47
+ }
48
+ export type WsEventInternalSrc = 'event' | 'function';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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":""}
@@ -5,7 +5,6 @@ export interface WsAuthRequestArg {
5
5
  sign: string;
6
6
  }
7
7
  export type WsTradeOp = 'order' | 'batch-orders' | 'cancel-order' | 'batch-cancel-orders' | 'amend-order' | 'batch-amend-order';
8
- export type WsRequestOp = 'login' | 'subscribe' | 'unsubscribe';
9
8
  export type WsPrivateChannel = 'account' | 'positions' | 'balance_and_position' | 'orders' | 'orders-algo' | 'algo-advance' | 'liquidation-warning' | 'account-greeks' | 'grid-orders-spot' | 'grid-orders-contract' | 'grid-orders-moon' | 'grid-positions' | 'grid-sub-orders';
10
9
  export type WsPublicKlineChannel = 'candle1Y' | 'candle6M' | 'candle3M' | 'candle1M' | 'candle1W' | 'candle1D' | 'candle2D' | 'candle3D' | 'candle5D' | 'candle12H' | 'candle6H' | 'candle4H' | 'candle2H' | 'candle1H' | 'candle30m' | 'candle15m' | 'candle5m' | 'candle3m' | 'candle1m' | 'candle1s' | 'candle1Yutc' | 'candle3Mutc' | 'candle1Mutc' | 'candle1Wutc' | 'candle1Dutc' | 'candle2Dutc' | 'candle3Dutc' | 'candle5Dutc' | 'candle12Hutc' | 'candle6Hutc';
11
10
  export type WsPublicMarkPriceKlineChannel = 'mark-price-candle1Y' | 'mark-price-candle6M' | 'mark-price-candle3M' | 'mark-price-candle1M' | 'mark-price-candle1W' | 'mark-price-candle1D' | 'mark-price-candle2D' | 'mark-price-candle3D' | 'mark-price-candle5D' | 'mark-price-candle12H' | 'mark-price-candle6H' | 'mark-price-candle4H' | 'mark-price-candle2H' | 'mark-price-candle1H' | 'mark-price-candle30m' | 'mark-price-candle15m' | 'mark-price-candle5m' | 'mark-price-candle3m' | 'mark-price-candle1m' | 'mark-price-candle1Yutc' | 'mark-price-candle3Mutc' | 'mark-price-candle1Mutc' | 'mark-price-candle1Wutc' | 'mark-price-candle1Dutc' | 'mark-price-candle2Dutc' | 'mark-price-candle3Dutc' | 'mark-price-candle5Dutc' | 'mark-price-candle12Hutc' | 'mark-price-candle6Hutc';
@@ -16,10 +15,6 @@ export type WsBusinessPrivateChannel = 'orders-algo' | 'algo-advance' | 'deposit
16
15
  export type WsBusinessPublicChannel = WsPublicKlineChannel | WsPublicMarkPriceKlineChannel | WsPublicIndexKlineChannel;
17
16
  export type WsBusinessChannel = WsBusinessPrivateChannel | WsBusinessPublicChannel;
18
17
  export type WsChannel = WsPublicChannel | WsPrivateChannel | WsBusinessChannel;
19
- export interface WsBaseRequest {
20
- op: WsRequestOp;
21
- args: any[];
22
- }
23
18
  /** Used to trigger order actions over websockets (e.g. placing & cancelling orders) */
24
19
  export interface WsTradeBaseRequest {
25
20
  op: WsTradeOp;
@@ -96,20 +91,3 @@ export interface WsPublicChannelArgLiquidationOrders extends WsBaseRequestArg {
96
91
  instType: 'SWAP' | 'FUTURES';
97
92
  }
98
93
  export type WsChannelSubUnSubRequestArg = WsPrivateChannelArgTickers | WsPrivateChannelArgWithCcy | WsPrivateChannelArgWithInstFamily | WsPrivateChannelArgAlgo | WsPrivateChannelArgBalanceAndPosition | WsPrivateChannelArgGridOrders | WsPrivateChannelArgGridOther | WsPublicChannelArgInstType | WsPublicChannelArgInstId | WsPublicChannelArgInstIdOrFamily | WsPublicChannelArgOptionSummary | WsPublicChannelArgStatus | WsPublicChannelArgLiquidationOrders;
99
- /**
100
- *
101
- * Top level requests with args
102
- *
103
- */
104
- export interface WsSubRequest extends WsBaseRequest {
105
- op: 'subscribe';
106
- args: WsChannelSubUnSubRequestArg[];
107
- }
108
- export interface WsUnsubRequest extends WsBaseRequest {
109
- op: 'unsubscribe';
110
- args: WsChannelSubUnSubRequestArg[];
111
- }
112
- export interface WsAuthRequest extends WsBaseRequest {
113
- op: 'login';
114
- args: WsAuthRequestArg[];
115
- }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ws-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-request.js","sourceRoot":"","sources":["../../../../src/types/websockets/ws-request.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import { AxiosRequestConfig } from 'axios';
2
- import { RestClientOptions } from '../types';
2
+ import { RestClientOptions } from '../types/rest/client.js';
3
3
  export declare const MISSING_CREDENTIALS_ERROR = "Private endpoints require api and secret to be provided in the REST client constructor";
4
4
  export default abstract class BaseRestClient {
5
5
  private options;
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MISSING_CREDENTIALS_ERROR = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const https_1 = require("https");
9
+ const requestUtils_js_1 = require("./requestUtils.js");
10
+ const typeGuards_js_1 = require("./typeGuards.js");
11
+ const webCryptoAPI_js_1 = require("./webCryptoAPI.js");
12
+ // axios.interceptors.request.use((request) => {
13
+ // console.log(new Date(), 'Starting Request', JSON.stringify(request, null, 2));
14
+ // return request;
15
+ // });
16
+ // axios.interceptors.response.use((response) => {
17
+ // // console.log(new Date(), 'Response:', JSON.stringify(response, null, 2));
18
+ // console.log(
19
+ // new Date(),
20
+ // 'Response:',
21
+ // JSON.stringify(
22
+ // {
23
+ // data: response.data,
24
+ // headers: response.headers,
25
+ // },
26
+ // null,
27
+ // 2,
28
+ // ),
29
+ // );
30
+ // return response;
31
+ // });
32
+ exports.MISSING_CREDENTIALS_ERROR = 'Private endpoints require api and secret to be provided in the REST client constructor';
33
+ class BaseRestClient {
34
+ options;
35
+ baseUrl;
36
+ globalRequestOptions;
37
+ apiKey;
38
+ apiSecret;
39
+ apiPassphrase;
40
+ constructor(options = {}, requestOptions = {}) {
41
+ // this.environment = environment;
42
+ this.options = {
43
+ // if true, we'll throw errors if any params are undefined
44
+ strict_param_validation: false,
45
+ market: 'prod',
46
+ ...options,
47
+ };
48
+ this.baseUrl = (0, requestUtils_js_1.getRestBaseUrl)(options.market || 'prod', options);
49
+ const hasOneCredential = options.apiKey || options.apiSecret || options.apiPass;
50
+ const hasAllCredentials = !!options.apiKey && !!options.apiSecret && !!options.apiPass;
51
+ // Allow empty object
52
+ if (hasOneCredential && !hasAllCredentials) {
53
+ throw new Error('API Key, Secret AND Passphrase are ALL required for private enpoints');
54
+ }
55
+ if (hasAllCredentials && !this.options.customSignMessageFn) {
56
+ // Provide a user friendly error message if the user is using an outdated Node.js version (where Web Crypto API is not available).
57
+ // A few users have been caught out by using the end-of-life Node.js v18 release.
58
+ (0, webCryptoAPI_js_1.checkWebCryptoAPISupported)();
59
+ }
60
+ this.globalRequestOptions = {
61
+ // in ms == 5 minutes by default
62
+ timeout: 1000 * 60 * 5,
63
+ // custom request options based on axios specs - see: https://github.com/axios/axios#request-config
64
+ ...requestOptions,
65
+ };
66
+ if (!this.globalRequestOptions.headers) {
67
+ this.globalRequestOptions.headers = {};
68
+ }
69
+ if (options.market === 'demo') {
70
+ throw new Error('ERROR: to use demo trading, set the "demoTrading: true" flag in the constructor');
71
+ }
72
+ // Note: `x-simulated-trading: 1` needs to be added to the header of the Demo Trading request.
73
+ if (options.demoTrading) {
74
+ this.globalRequestOptions.headers['x-simulated-trading'] = 1;
75
+ }
76
+ this.globalRequestOptions.headers['Content-Type'] = 'application/json';
77
+ this.globalRequestOptions.headers['Accept'] = 'application/json';
78
+ // If enabled, configure a https agent with keepAlive enabled
79
+ if (this.options.keepAlive) {
80
+ // Extract existing https agent parameters, if provided, to prevent the keepAlive flag from overwriting an existing https agent completely
81
+ const existingHttpsAgent = this.globalRequestOptions.httpsAgent;
82
+ const existingAgentOptions = existingHttpsAgent?.options || {};
83
+ // For more advanced configuration, raise an issue on GitHub or use the "requestOptions"
84
+ // parameter to define a custom httpsAgent with the desired properties
85
+ this.globalRequestOptions.httpsAgent = new https_1.Agent({
86
+ ...existingAgentOptions,
87
+ keepAlive: true,
88
+ keepAliveMsecs: this.options.keepAliveMsecs,
89
+ });
90
+ }
91
+ this.apiKey = options?.apiKey;
92
+ this.apiSecret = options?.apiSecret;
93
+ this.apiPassphrase = options?.apiPass;
94
+ }
95
+ get(endpoint, params) {
96
+ return this._call('GET', endpoint, params, true);
97
+ }
98
+ post(endpoint, params) {
99
+ return this._call('POST', endpoint, params, true);
100
+ }
101
+ getPrivate(endpoint, params) {
102
+ return this._call('GET', endpoint, params, false);
103
+ }
104
+ postPrivate(endpoint, params) {
105
+ return this._call('POST', endpoint, Array.isArray(params)
106
+ ? params.map((p) => ({ ...p, [requestUtils_js_1.programKey]: requestUtils_js_1.programId }))
107
+ : { ...params, [requestUtils_js_1.programKey]: requestUtils_js_1.programId }, false);
108
+ }
109
+ deletePrivate(endpoint, params) {
110
+ return this._call('DELETE', endpoint, params, false);
111
+ }
112
+ /**
113
+ * Make a HTTP request to a specific endpoint. Private endpoints are automatically signed.
114
+ */
115
+ async _call(method, endpoint, params, isPublicApi) {
116
+ const options = {
117
+ ...this.globalRequestOptions,
118
+ url: [this.baseUrl, endpoint].join(endpoint.startsWith('/') ? '' : '/'),
119
+ method: method,
120
+ json: true,
121
+ };
122
+ // Delete any params without value
123
+ if (params) {
124
+ for (const key in params) {
125
+ if (typeof params[key] === 'undefined') {
126
+ delete params[key];
127
+ }
128
+ }
129
+ }
130
+ const tsISO = new Date().toISOString();
131
+ const signResult = await this.signRequest(isPublicApi, tsISO, method, endpoint, params);
132
+ if (!options.headers) {
133
+ options.headers = {};
134
+ }
135
+ if (!isPublicApi) {
136
+ options.headers['OK-ACCESS-KEY'] = this.apiKey;
137
+ options.headers['OK-ACCESS-SIGN'] = signResult.sign;
138
+ options.headers['OK-ACCESS-TIMESTAMP'] = tsISO;
139
+ options.headers['OK-ACCESS-PASSPHRASE'] = this.apiPassphrase;
140
+ }
141
+ if (method === 'GET') {
142
+ options.params = signResult.requestBody;
143
+ }
144
+ else {
145
+ options.data = signResult.requestBody;
146
+ }
147
+ // console.log(new Date(), 'request: ', {
148
+ // url: options.url,
149
+ // method,
150
+ // params: signResult.requestBody,
151
+ // sign: signResult.sign,
152
+ // options,
153
+ // });
154
+ return (0, axios_1.default)(options)
155
+ .then((response) => {
156
+ // Check this is an API response without an error code.
157
+ // If so, resolve the nested data property, else throw the full response body
158
+ if ((0, typeGuards_js_1.isRawAPIResponse)(response.data) &&
159
+ response.status == 200 &&
160
+ response.data?.code === '0') {
161
+ return response.data.data;
162
+ }
163
+ // console.log('request: ', JSON.stringify(options, null, 2));
164
+ // console.log(
165
+ // 'bad response: ',
166
+ // JSON.stringify(
167
+ // {
168
+ // data: response.data,
169
+ // headers: response.headers,
170
+ // },
171
+ // null,
172
+ // 2
173
+ // )
174
+ // );
175
+ // Also throw if API returned error code
176
+ // This API error thrown by the exchange will be post-processed by the exception parser
177
+ throw { response };
178
+ })
179
+ .catch((e) => this.parseException(e));
180
+ }
181
+ /**
182
+ * Sign request
183
+ */
184
+ async signRequest(isPublicApi, tsISO, method, endpoint, params) {
185
+ const res = {
186
+ requestBody: params,
187
+ method,
188
+ endpoint,
189
+ sign: '',
190
+ };
191
+ if (isPublicApi) {
192
+ return res;
193
+ }
194
+ if (!this.apiKey || !this.apiSecret || !this.apiPassphrase) {
195
+ throw new Error(exports.MISSING_CREDENTIALS_ERROR);
196
+ }
197
+ const serializedParams = (0, requestUtils_js_1.serializeParams)(params, method, this.options.strict_param_validation);
198
+ const message = tsISO + method + endpoint + serializedParams;
199
+ // console.log(new Date(), `Sign params: `, {
200
+ // message,
201
+ // secret: this.apiSecret,
202
+ // });
203
+ return {
204
+ ...res,
205
+ sign: await (0, webCryptoAPI_js_1.signMessage)(message, this.apiSecret, 'base64', 'SHA-256'),
206
+ };
207
+ }
208
+ /**
209
+ * Generic handler to parse request exceptions
210
+ */
211
+ parseException(e) {
212
+ if (this.options.parse_exceptions === false) {
213
+ throw e;
214
+ }
215
+ // Something happened in setting up the request that triggered an Error
216
+ if (!e.response) {
217
+ if (!e.request) {
218
+ throw e.message;
219
+ }
220
+ // request made but no response received
221
+ throw e;
222
+ }
223
+ // The request was made and the server responded with a status code
224
+ // that falls out of the range of 2xx
225
+ const response = e.response;
226
+ throw response.data;
227
+ // throw {
228
+ // status: response.status,
229
+ // statusText: response.statusText,
230
+ // data: response.data,
231
+ // headers: response.headers,
232
+ // requestOptions: this.options,
233
+ // };
234
+ }
235
+ }
236
+ exports.default = BaseRestClient;
237
+ //# sourceMappingURL=BaseRestClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseRestClient.js","sourceRoot":"","sources":["../../../src/util/BaseRestClient.ts"],"names":[],"mappings":"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"}