kucoin-api 2.1.22 → 2.2.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 (106) hide show
  1. package/README.md +111 -14
  2. package/dist/cjs/FuturesClient.d.ts +9 -0
  3. package/dist/cjs/FuturesClient.js +7 -0
  4. package/dist/cjs/FuturesClient.js.map +1 -1
  5. package/dist/cjs/WebsocketAPIClient.d.ts +123 -0
  6. package/dist/cjs/WebsocketAPIClient.js +147 -0
  7. package/dist/cjs/WebsocketAPIClient.js.map +1 -0
  8. package/dist/cjs/WebsocketClient.d.ts +14 -9
  9. package/dist/cjs/WebsocketClient.js +277 -37
  10. package/dist/cjs/WebsocketClient.js.map +1 -1
  11. package/dist/cjs/index.d.ts +4 -3
  12. package/dist/cjs/index.js +4 -3
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/lib/BaseRestClient.d.ts +16 -0
  15. package/dist/cjs/lib/BaseRestClient.js +46 -12
  16. package/dist/cjs/lib/BaseRestClient.js.map +1 -1
  17. package/dist/cjs/lib/BaseWSClient.d.ts +30 -17
  18. package/dist/cjs/lib/BaseWSClient.js +248 -55
  19. package/dist/cjs/lib/BaseWSClient.js.map +1 -1
  20. package/dist/cjs/lib/requestUtils.d.ts +11 -0
  21. package/dist/cjs/lib/requestUtils.js.map +1 -1
  22. package/dist/cjs/lib/websocket/WsStore.d.ts +15 -3
  23. package/dist/cjs/lib/websocket/WsStore.js +61 -12
  24. package/dist/cjs/lib/websocket/WsStore.js.map +1 -1
  25. package/dist/cjs/lib/websocket/WsStore.types.d.ts +6 -4
  26. package/dist/cjs/lib/websocket/WsStore.types.js +2 -2
  27. package/dist/cjs/lib/websocket/WsStore.types.js.map +1 -1
  28. package/dist/cjs/lib/websocket/logger.d.ts +1 -0
  29. package/dist/cjs/lib/websocket/websocket-util.d.ts +12 -6
  30. package/dist/cjs/lib/websocket/websocket-util.js +17 -8
  31. package/dist/cjs/lib/websocket/websocket-util.js.map +1 -1
  32. package/dist/cjs/types/request/futures.types.d.ts +1 -0
  33. package/dist/cjs/types/response/futures.types.d.ts +1 -0
  34. package/dist/cjs/types/websockets/ws-api.d.ts +123 -0
  35. package/dist/cjs/types/websockets/ws-api.js +22 -0
  36. package/dist/cjs/types/websockets/ws-api.js.map +1 -0
  37. package/dist/cjs/types/websockets/ws-events.d.ts +11 -0
  38. package/dist/cjs/types/websockets/ws-events.js +11 -0
  39. package/dist/cjs/types/websockets/ws-events.js.map +1 -0
  40. package/dist/cjs/types/websockets/{client.d.ts → ws-general.d.ts} +5 -0
  41. package/dist/cjs/types/websockets/{events.js → ws-general.js} +1 -1
  42. package/dist/cjs/types/websockets/ws-general.js.map +1 -0
  43. package/dist/mjs/FuturesClient.d.ts +9 -0
  44. package/dist/mjs/FuturesClient.js +7 -0
  45. package/dist/mjs/FuturesClient.js.map +1 -1
  46. package/dist/mjs/WebsocketAPIClient.d.ts +123 -0
  47. package/dist/mjs/WebsocketAPIClient.js +143 -0
  48. package/dist/mjs/WebsocketAPIClient.js.map +1 -0
  49. package/dist/mjs/WebsocketClient.d.ts +14 -9
  50. package/dist/mjs/WebsocketClient.js +278 -38
  51. package/dist/mjs/WebsocketClient.js.map +1 -1
  52. package/dist/mjs/index.d.ts +4 -3
  53. package/dist/mjs/index.js +4 -3
  54. package/dist/mjs/index.js.map +1 -1
  55. package/dist/mjs/lib/BaseRestClient.d.ts +16 -0
  56. package/dist/mjs/lib/BaseRestClient.js +47 -13
  57. package/dist/mjs/lib/BaseRestClient.js.map +1 -1
  58. package/dist/mjs/lib/BaseWSClient.d.ts +30 -17
  59. package/dist/mjs/lib/BaseWSClient.js +248 -55
  60. package/dist/mjs/lib/BaseWSClient.js.map +1 -1
  61. package/dist/mjs/lib/requestUtils.d.ts +11 -0
  62. package/dist/mjs/lib/requestUtils.js.map +1 -1
  63. package/dist/mjs/lib/websocket/WsStore.d.ts +15 -3
  64. package/dist/mjs/lib/websocket/WsStore.js +61 -12
  65. package/dist/mjs/lib/websocket/WsStore.js.map +1 -1
  66. package/dist/mjs/lib/websocket/WsStore.types.d.ts +6 -4
  67. package/dist/mjs/lib/websocket/WsStore.types.js +2 -2
  68. package/dist/mjs/lib/websocket/WsStore.types.js.map +1 -1
  69. package/dist/mjs/lib/websocket/logger.d.ts +1 -0
  70. package/dist/mjs/lib/websocket/websocket-util.d.ts +12 -6
  71. package/dist/mjs/lib/websocket/websocket-util.js +15 -7
  72. package/dist/mjs/lib/websocket/websocket-util.js.map +1 -1
  73. package/dist/mjs/types/request/futures.types.d.ts +1 -0
  74. package/dist/mjs/types/response/futures.types.d.ts +1 -0
  75. package/dist/mjs/types/websockets/ws-api.d.ts +123 -0
  76. package/dist/mjs/types/websockets/ws-api.js +19 -0
  77. package/dist/mjs/types/websockets/ws-api.js.map +1 -0
  78. package/dist/mjs/types/websockets/ws-events.d.ts +11 -0
  79. package/dist/mjs/types/websockets/ws-events.js +8 -0
  80. package/dist/mjs/types/websockets/ws-events.js.map +1 -0
  81. package/dist/mjs/types/websockets/{client.d.ts → ws-general.d.ts} +5 -0
  82. package/dist/mjs/types/websockets/ws-general.js +2 -0
  83. package/dist/mjs/types/websockets/ws-general.js.map +1 -0
  84. package/llms.txt +6632 -5613
  85. package/package.json +6 -4
  86. package/dist/cjs/types/websockets/client.js +0 -3
  87. package/dist/cjs/types/websockets/client.js.map +0 -1
  88. package/dist/cjs/types/websockets/events.d.ts +0 -5
  89. package/dist/cjs/types/websockets/events.js.map +0 -1
  90. package/dist/cjs/types/websockets/requests.d.ts +0 -8
  91. package/dist/cjs/types/websockets/requests.js +0 -3
  92. package/dist/cjs/types/websockets/requests.js.map +0 -1
  93. package/dist/cjs/types/websockets/wsAPI.d.ts +0 -9
  94. package/dist/cjs/types/websockets/wsAPI.js +0 -3
  95. package/dist/cjs/types/websockets/wsAPI.js.map +0 -1
  96. package/dist/mjs/types/websockets/client.js +0 -2
  97. package/dist/mjs/types/websockets/client.js.map +0 -1
  98. package/dist/mjs/types/websockets/events.d.ts +0 -5
  99. package/dist/mjs/types/websockets/events.js +0 -2
  100. package/dist/mjs/types/websockets/events.js.map +0 -1
  101. package/dist/mjs/types/websockets/requests.d.ts +0 -8
  102. package/dist/mjs/types/websockets/requests.js +0 -2
  103. package/dist/mjs/types/websockets/requests.js.map +0 -1
  104. package/dist/mjs/types/websockets/wsAPI.d.ts +0 -9
  105. package/dist/mjs/types/websockets/wsAPI.js +0 -2
  106. package/dist/mjs/types/websockets/wsAPI.js.map +0 -1
@@ -4,6 +4,8 @@ exports.WebsocketClient = exports.PUBLIC_WS_KEYS = exports.WS_LOGGER_CATEGORY =
4
4
  const FuturesClient_js_1 = require("./FuturesClient.js");
5
5
  const BaseWSClient_js_1 = require("./lib/BaseWSClient.js");
6
6
  const misc_util_js_1 = require("./lib/misc-util.js");
7
+ const requestUtils_js_1 = require("./lib/requestUtils.js");
8
+ const webCryptoAPI_js_1 = require("./lib/webCryptoAPI.js");
7
9
  const websocket_util_js_1 = require("./lib/websocket/websocket-util.js");
8
10
  const SpotClient_js_1 = require("./SpotClient.js");
9
11
  function getRandomInt(max) {
@@ -55,11 +57,17 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
55
57
  }
56
58
  async getWSConnectionInfo(wsKey) {
57
59
  const restClient = this.getRESTClient(wsKey);
58
- if (wsKey === 'spotPrivateV1' || wsKey === 'futuresPrivateV1') {
60
+ if (PRIVATE_WS_KEYS.includes(wsKey)) {
59
61
  return restClient.getPrivateWSConnectionToken();
60
62
  }
61
63
  return restClient.getPublicWSConnectionToken();
62
64
  }
65
+ async signMessage(paramsStr, secret, method, algorithm) {
66
+ if (typeof this.options.customSignMessageFn === 'function') {
67
+ return this.options.customSignMessageFn(paramsStr, secret);
68
+ }
69
+ return await (0, webCryptoAPI_js_1.signMessage)(paramsStr, secret, method, algorithm);
70
+ }
63
71
  /**
64
72
  * Request connection of all dependent (public & private) websockets, instead of waiting for automatic connection by library
65
73
  */
@@ -105,18 +113,81 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
105
113
  this.unsubscribeTopicsForWsKey(requests, wsKey);
106
114
  }
107
115
  }
108
- async sendWSAPIRequest(wsKey, channel, params) {
109
- this.logger.trace(`sendWSAPIRequest(): assert "${wsKey}" is connected`, {
110
- channel,
111
- params,
116
+ async sendWSAPIRequest(wsKey, operation, params, requestFlags) {
117
+ /**
118
+ * Base Info:
119
+ * - https://www.kucoin.com/docs-new/websocket-api/base-info/introduction
120
+ *
121
+ * Add/Cancel API info:
122
+ * - https://www.kucoin.com/docs-new/3470133w0
123
+ **/
124
+ // this.logger.trace(`sendWSAPIRequest(): assertIsConnected("${wsKey}")...`);
125
+ await this.assertIsConnected(wsKey);
126
+ // this.logger.trace('sendWSAPIRequest(): assertIsConnected(${wsKey}) ok');
127
+ // Some commands don't require authentication.
128
+ if (requestFlags?.authIsOptional !== true) {
129
+ // this.logger.trace(
130
+ // 'sendWSAPIRequest(): assertIsAuthenticated(${wsKey})...',
131
+ // );
132
+ await this.assertIsAuthenticated(wsKey);
133
+ // this.logger.trace(
134
+ // 'sendWSAPIRequest(): assertIsAuthenticated(${wsKey}) ok',
135
+ // );
136
+ }
137
+ const request = {
138
+ id: this.getNewRequestId(),
139
+ op: operation,
140
+ args: Array.isArray(params)
141
+ ? [...params]
142
+ : {
143
+ ...params,
144
+ },
145
+ };
146
+ // Sign, if needed
147
+ const signedEvent = await this.signWSAPIRequest(request);
148
+ // Store deferred promise, resolved within the "resolveEmittableEvents" method while parsing incoming events
149
+ const promiseRef = (0, websocket_util_js_1.getPromiseRefForWSAPIRequest)(wsKey, signedEvent);
150
+ const deferredPromise = this.getWsStore().createDeferredPromise(wsKey, promiseRef, false);
151
+ // Enrich returned promise with request context for easier debugging
152
+ deferredPromise.promise
153
+ ?.then((res) => {
154
+ if (!Array.isArray(res)) {
155
+ res.request = {
156
+ wsKey,
157
+ ...signedEvent,
158
+ };
159
+ }
160
+ return res;
161
+ })
162
+ .catch((e) => {
163
+ if (typeof e === 'string') {
164
+ this.logger.error('unexpcted string', { e });
165
+ return e;
166
+ }
167
+ e.request = {
168
+ wsKey,
169
+ operation,
170
+ params: signedEvent.args,
171
+ };
172
+ // throw e;
173
+ return e;
112
174
  });
113
- return;
175
+ this.logger.trace(`sendWSAPIRequest(): sending raw request: ${JSON.stringify(signedEvent)} with promiseRef(${promiseRef})`);
176
+ // Send event.
177
+ const throwExceptions = true;
178
+ this.tryWsSend(wsKey, JSON.stringify(signedEvent), throwExceptions);
179
+ this.logger.trace(`sendWSAPIRequest(): sent "${operation}" event with promiseRef(${promiseRef})`);
180
+ // Return deferred promise, so caller can await this call
181
+ return deferredPromise.promise;
114
182
  }
115
183
  /**
116
184
  *
117
185
  * Internal methods
118
186
  *
119
187
  */
188
+ async signWSAPIRequest(requestEvent) {
189
+ return requestEvent;
190
+ }
120
191
  /**
121
192
  * Whatever url this method returns, it's connected to as-is!
122
193
  *
@@ -126,23 +197,71 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
126
197
  if (this.options.wsUrl) {
127
198
  return this.options.wsUrl;
128
199
  }
129
- const connectionInfo = await this.getWSConnectionInfo(wsKey);
130
- this.logger.trace('getWSConnectionInfo', {
131
- wsKey,
132
- ...connectionInfo,
133
- });
134
- const server = connectionInfo.data.instanceServers[0];
135
- if (!server) {
136
- this.logger.error('No servers returned by connection info response?', JSON.stringify({
137
- wsKey,
138
- connectionInfo,
139
- }, null, 2));
140
- throw new Error('No servers returned by connection info response?');
200
+ switch (wsKey) {
201
+ case websocket_util_js_1.WS_KEY_MAP.spotPublicV1:
202
+ case websocket_util_js_1.WS_KEY_MAP.spotPrivateV1:
203
+ case websocket_util_js_1.WS_KEY_MAP.futuresPublicV1:
204
+ case websocket_util_js_1.WS_KEY_MAP.futuresPrivateV1: {
205
+ // These WS URLs are dynamically fetched via the REST API, as per API spec
206
+ const connectionInfo = await this.getWSConnectionInfo(wsKey);
207
+ this.logger.trace('getWSConnectionInfo', {
208
+ wsKey,
209
+ ...connectionInfo,
210
+ });
211
+ const server = connectionInfo.data.instanceServers[0];
212
+ if (!server) {
213
+ this.logger.error('No servers returned by connection info response?', JSON.stringify({
214
+ wsKey,
215
+ connectionInfo,
216
+ }, null, 2));
217
+ throw new Error('No servers returned by connection info response?');
218
+ }
219
+ const connectionUrl = `${server.endpoint}?token=${connectionInfo.data.token}`;
220
+ return connectionUrl;
221
+ }
222
+ case websocket_util_js_1.WS_KEY_MAP.wsApiSpotV1:
223
+ case websocket_util_js_1.WS_KEY_MAP.wsApiFuturesV1: {
224
+ // WS API URL works differently: https://www.kucoin.com/docs-new/3470133w0
225
+ // wss://wsapi.kucoin.com/v1/private?apikey=xxx&sign=xxx&passphrase=xxx&timestamp=xxx
226
+ const WS_API_ENDPOINT = 'v1/private';
227
+ const WS_API_BASE_URL = 'wss://wsapi.kucoin.com/';
228
+ const isSpotWsKey = wsKey === websocket_util_js_1.WS_KEY_MAP.wsApiSpotV1;
229
+ // ws_url = f"{url}/v1/private?{url_path}&sign={sign_value}&passphrase={passphrase_sign}"
230
+ const queryString = {
231
+ apikey: this.options.apiKey,
232
+ timestamp: Date.now(),
233
+ sign: '',
234
+ passphrase: '',
235
+ partner: isSpotWsKey ? requestUtils_js_1.APIIDMain : requestUtils_js_1.APIIDFutures,
236
+ partner_sign: '',
237
+ };
238
+ // original = f"{apikey}{timestamp}"
239
+ const paramsStr = `${queryString.apikey}${queryString.timestamp}`;
240
+ queryString.passphrase = await this.signMessage(this.options.apiPassphrase, this.options.apiSecret, 'base64', 'SHA-256');
241
+ queryString.sign = await this.signMessage(paramsStr, this.options.apiSecret, 'base64', 'SHA-256');
242
+ const partnerSignParam = `${queryString.timestamp}${queryString.partner}${queryString.apikey}`;
243
+ queryString.partner_sign = await this.signMessage(partnerSignParam, isSpotWsKey ? requestUtils_js_1.APIIDMainSign : requestUtils_js_1.APIIDFuturesSign, 'base64', 'SHA-256');
244
+ const strictParamValidation = false;
245
+ const encodeQueryStringValues = true;
246
+ const finalQueryString = (0, requestUtils_js_1.serializeParams)(queryString, strictParamValidation, encodeQueryStringValues, '?');
247
+ const finalUrl = WS_API_BASE_URL + WS_API_ENDPOINT + finalQueryString;
248
+ // console.log('signParams: ', {
249
+ // paramsStr,
250
+ // partnerSignParam,
251
+ // queryString,
252
+ // finalUrl,
253
+ // });
254
+ return finalUrl;
255
+ }
256
+ default: {
257
+ throw (0, misc_util_js_1.neverGuard)(wsKey, `Unhandled WsKey "${wsKey}} in getWsUrl()`);
258
+ }
141
259
  }
142
- const connectionUrl = `${server.endpoint}?token=${connectionInfo.data.token}`;
143
- return connectionUrl;
144
260
  }
145
261
  sendPingEvent(wsKey) {
262
+ if ((0, websocket_util_js_1.isWSAPIWsKey)(wsKey)) {
263
+ return this.tryWsSend(wsKey, `{"id": "ping-${this.getNewRequestId()}", "op": "ping", "timestamp": "${Date.now()}"}`);
264
+ }
146
265
  return this.tryWsSend(wsKey, `{ "id": "${Date.now()}", "type": "ping" }`);
147
266
  }
148
267
  sendPongEvent(wsKey) {
@@ -189,10 +308,26 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
189
308
  const results = [];
190
309
  try {
191
310
  const parsed = JSON.parse(event.data);
311
+ const isForWSAPIWsKey = (0, websocket_util_js_1.isWSAPIWsKey)(wsKey);
192
312
  const responseEvents = ['subscribe', 'unsubscribe', 'ack'];
193
313
  const authenticatedEvents = ['login', 'access'];
194
314
  const connectionReadyEvents = ['welcome'];
195
315
  const eventType = parsed.event || parsed.type;
316
+ const traceEmittable = false;
317
+ if (traceEmittable) {
318
+ this.logger.info('resolveEmittableEvents', {
319
+ ...exports.WS_LOGGER_CATEGORY,
320
+ wsKey,
321
+ parsedEvent: JSON.stringify(event),
322
+ parsedEventData: JSON.stringify(parsed),
323
+ eventType,
324
+ properties: {
325
+ parsedEventId: parsed?.id,
326
+ parsedEventErrorCode: parsed?.code,
327
+ },
328
+ // parsed: JSON.stringify(parsed, null, 2),
329
+ });
330
+ }
196
331
  if (typeof eventType === 'string') {
197
332
  if (parsed.success === false) {
198
333
  results.push({
@@ -202,12 +337,11 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
202
337
  return results;
203
338
  }
204
339
  if (connectionReadyEvents.includes(eventType)) {
205
- return [
206
- {
207
- eventType: 'connectionReady',
208
- event: parsed,
209
- },
210
- ];
340
+ results.push({
341
+ eventType: 'connectionReady',
342
+ event: parsed,
343
+ });
344
+ return results;
211
345
  }
212
346
  // These are request/reply pattern events (e.g. after subscribing to topics or authenticating)
213
347
  if (responseEvents.includes(eventType)) {
@@ -235,6 +369,91 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
235
369
  });
236
370
  return results;
237
371
  }
372
+ if (!eventType) {
373
+ if (isForWSAPIWsKey) {
374
+ const isWSAPIResponse = typeof parsed.op === 'string';
375
+ if (isWSAPIResponse) {
376
+ const parsedEventErrorCode = Number(parsed.code);
377
+ const parsedEventId = parsed.id;
378
+ const isError = typeof parsedEventErrorCode === 'number' &&
379
+ parsedEventErrorCode !== 0 &&
380
+ parsedEventErrorCode !== 200000;
381
+ // This is the counterpart to getPromiseRefForWSAPIRequest
382
+ const promiseRef = [wsKey, parsedEventId].join('_');
383
+ if (!parsedEventId) {
384
+ this.logger.error('WS API response is missing reqId - promisified workflow could get stuck. If this happens, please get in touch with steps to reproduce. Trace:', {
385
+ wsKey,
386
+ promiseRef,
387
+ parsedEvent: parsed,
388
+ });
389
+ }
390
+ // WS API Exception
391
+ if (isError) {
392
+ try {
393
+ this.getWsStore().rejectDeferredPromise(wsKey, promiseRef, {
394
+ wsKey,
395
+ ...parsed,
396
+ }, true);
397
+ }
398
+ catch (e) {
399
+ this.logger.error('Exception trying to reject WSAPI promise', {
400
+ wsKey,
401
+ promiseRef,
402
+ parsedEvent: parsed,
403
+ e,
404
+ });
405
+ }
406
+ results.push({
407
+ eventType: 'exception',
408
+ event: parsed,
409
+ isWSAPIResponse: isWSAPIResponse,
410
+ });
411
+ return results;
412
+ }
413
+ // WS API Success
414
+ try {
415
+ this.getWsStore().resolveDeferredPromise(wsKey, promiseRef, {
416
+ wsKey,
417
+ ...parsed,
418
+ }, true);
419
+ }
420
+ catch (e) {
421
+ this.logger.error('Exception trying to resolve WSAPI promise', {
422
+ wsKey,
423
+ promiseRef,
424
+ parsedEvent: parsed,
425
+ e,
426
+ });
427
+ }
428
+ results.push({
429
+ eventType: 'response',
430
+ event: {
431
+ ...parsed,
432
+ },
433
+ isWSAPIResponse: isWSAPIResponse,
434
+ });
435
+ return results;
436
+ }
437
+ if (parsed.sessionId && parsed.data === 'welcome') {
438
+ results.push({
439
+ eventType: 'authenticated',
440
+ event: parsed,
441
+ });
442
+ return results;
443
+ }
444
+ if (parsed.sessionId && parsed.timestamp) {
445
+ results.push({
446
+ eventType: 'connectionReady',
447
+ event: parsed,
448
+ });
449
+ results.push({
450
+ eventType: 'connectionReadyForAuth',
451
+ event: parsed,
452
+ });
453
+ return results;
454
+ }
455
+ }
456
+ }
238
457
  this.logger.error(`!! (${wsKey}) Unhandled non-string event type "${eventType}". Defaulting to "update" channel...`, parsed);
239
458
  results.push({
240
459
  eventType: 'update',
@@ -274,14 +493,20 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
274
493
  }
275
494
  getWsMarketForWsKey(key) {
276
495
  switch (key) {
277
- case 'futuresPrivateV1':
278
- case 'futuresPublicV1': {
496
+ case websocket_util_js_1.WS_KEY_MAP.futuresPrivateV1:
497
+ case websocket_util_js_1.WS_KEY_MAP.futuresPublicV1: {
279
498
  return 'futures';
280
499
  }
281
- case 'spotPrivateV1':
282
- case 'spotPublicV1': {
500
+ case websocket_util_js_1.WS_KEY_MAP.spotPrivateV1:
501
+ case websocket_util_js_1.WS_KEY_MAP.spotPublicV1: {
283
502
  return 'spot';
284
503
  }
504
+ case websocket_util_js_1.WS_KEY_MAP.wsApiSpotV1: {
505
+ return 'spot';
506
+ }
507
+ case websocket_util_js_1.WS_KEY_MAP.wsApiFuturesV1: {
508
+ return 'futures';
509
+ }
285
510
  default: {
286
511
  throw (0, misc_util_js_1.neverGuard)(key, `Unhandled ws key "${key}"`);
287
512
  }
@@ -293,10 +518,12 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
293
518
  /** Force subscription requests to be sent in smaller batches, if a number is returned */
294
519
  getMaxTopicsPerSubscribeEvent(wsKey) {
295
520
  switch (wsKey) {
296
- case 'futuresPrivateV1':
297
- case 'futuresPublicV1':
298
- case 'spotPrivateV1':
299
- case 'spotPublicV1': {
521
+ case websocket_util_js_1.WS_KEY_MAP.futuresPrivateV1:
522
+ case websocket_util_js_1.WS_KEY_MAP.futuresPublicV1:
523
+ case websocket_util_js_1.WS_KEY_MAP.spotPrivateV1:
524
+ case websocket_util_js_1.WS_KEY_MAP.spotPublicV1:
525
+ case websocket_util_js_1.WS_KEY_MAP.wsApiSpotV1:
526
+ case websocket_util_js_1.WS_KEY_MAP.wsApiFuturesV1: {
300
527
  // Return a number if there's a limit on the number of sub topics per rq
301
528
  // Always 1 at a time for this exchange
302
529
  return 1;
@@ -329,9 +556,22 @@ class WebsocketClient extends BaseWSClient_js_1.BaseWebsocketClient {
329
556
  // Events that are ready to send (usually stringified JSON)
330
557
  return operationEvents.map((event) => JSON.stringify(event));
331
558
  }
332
- // Not used for kucoin - auth is part of the WS URL
333
- async getWsAuthRequestEvent(wsKey) {
334
- return { wsKey };
559
+ async getWsAuthRequestEvent(wsKey, eventToAuth) {
560
+ // Send anything for WS API
561
+ if ((0, websocket_util_js_1.isWSAPIWsKey)(wsKey)) {
562
+ if (eventToAuth) {
563
+ const eventToAuthAsString = JSON.stringify(eventToAuth);
564
+ this.logger.trace(`getWsAuthRequestEvent(${wsKey}): responding to WS API auth handshake...`, {
565
+ eventToAuth,
566
+ });
567
+ const sessionInfo = await this.signMessage(eventToAuthAsString, this.options.apiSecret, 'base64', 'SHA-256');
568
+ return sessionInfo;
569
+ }
570
+ // Don't send anything, don't resolve auth promise. Wait for auth handshake from server
571
+ return 'waitForEvent';
572
+ }
573
+ // Don't send anything for all other WS connections, since they auth as part of the connection (not after connect). Returning an empty value here will short-circuit the assertIsAuthenticated workflow.
574
+ return;
335
575
  }
336
576
  }
337
577
  exports.WebsocketClient = WebsocketClient;
@@ -1 +1 @@
1
- {"version":3,"file":"WebsocketClient.js","sourceRoot":"","sources":["../../src/WebsocketClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebsocketClient.js","sourceRoot":"","sources":["../../src/WebsocketClient.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,8 @@ export * from './types/response/spot-margin-trading.js';
25
25
  export * from './types/response/spot-misc.js';
26
26
  export * from './types/response/spot-trading.js';
27
27
  export * from './types/response/spot-vip.js';
28
- export * from './types/websockets/client.js';
29
- export * from './types/websockets/events.js';
30
- export * from './types/websockets/requests.js';
28
+ export * from './types/websockets/ws-api.js';
29
+ export * from './types/websockets/ws-events.js';
30
+ export * from './types/websockets/ws-general.js';
31
+ export * from './WebsocketAPIClient.js';
31
32
  export * from './WebsocketClient.js';
package/dist/cjs/index.js CHANGED
@@ -41,8 +41,9 @@ __exportStar(require("./types/response/spot-margin-trading.js"), exports);
41
41
  __exportStar(require("./types/response/spot-misc.js"), exports);
42
42
  __exportStar(require("./types/response/spot-trading.js"), exports);
43
43
  __exportStar(require("./types/response/spot-vip.js"), exports);
44
- __exportStar(require("./types/websockets/client.js"), exports);
45
- __exportStar(require("./types/websockets/events.js"), exports);
46
- __exportStar(require("./types/websockets/requests.js"), exports);
44
+ __exportStar(require("./types/websockets/ws-api.js"), exports);
45
+ __exportStar(require("./types/websockets/ws-events.js"), exports);
46
+ __exportStar(require("./types/websockets/ws-general.js"), exports);
47
+ __exportStar(require("./WebsocketAPIClient.js"), exports);
47
48
  __exportStar(require("./WebsocketClient.js"), exports);
48
49
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,qDAAmC;AACnC,4DAA0C;AAC1C,oEAAkD;AAClD,kDAAgC;AAChC,kEAAgD;AAChD,mEAAiD;AACjD,kEAAgD;AAChD,oEAAkD;AAClD,kEAAgD;AAChD,+DAA6C;AAC7C,kEAAgD;AAChD,yEAAuD;AACvD,+DAA6C;AAC7C,kEAAgD;AAChD,mEAAiD;AACjD,oEAAkD;AAClD,mEAAiD;AACjD,mEAAiD;AACjD,qEAAmD;AACnD,mEAAiD;AACjD,gEAA8C;AAC9C,mEAAiD;AACjD,0EAAwD;AACxD,gEAA8C;AAC9C,mEAAiD;AACjD,+DAA6C;AAC7C,+DAA6C;AAC7C,+DAA6C;AAC7C,iEAA+C;AAC/C,uDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,qDAAmC;AACnC,4DAA0C;AAC1C,oEAAkD;AAClD,kDAAgC;AAChC,kEAAgD;AAChD,mEAAiD;AACjD,kEAAgD;AAChD,oEAAkD;AAClD,kEAAgD;AAChD,+DAA6C;AAC7C,kEAAgD;AAChD,yEAAuD;AACvD,+DAA6C;AAC7C,kEAAgD;AAChD,mEAAiD;AACjD,oEAAkD;AAClD,mEAAiD;AACjD,mEAAiD;AACjD,qEAAmD;AACnD,mEAAiD;AACjD,gEAA8C;AAC9C,mEAAiD;AACjD,0EAAwD;AACxD,gEAA8C;AAC9C,mEAAiD;AACjD,+DAA6C;AAC7C,+DAA6C;AAC7C,kEAAgD;AAChD,mEAAiD;AACjD,0DAAwC;AACxC,uDAAqC"}
@@ -1,5 +1,16 @@
1
1
  import { AxiosRequestConfig } from 'axios';
2
2
  import { RestClientOptions, RestClientType } from './requestUtils.js';
3
+ export interface SignedRequest<T extends object | undefined = {}> {
4
+ originalParams: T;
5
+ paramsWithSign?: T & {
6
+ sign: string;
7
+ };
8
+ serializedParams: string;
9
+ sign: string;
10
+ queryParamsWithSign: string;
11
+ timestamp: number;
12
+ recvWindow: number;
13
+ }
3
14
  export declare abstract class BaseRestClient {
4
15
  private options;
5
16
  private baseUrl;
@@ -7,6 +18,7 @@ export declare abstract class BaseRestClient {
7
18
  private apiKey;
8
19
  private apiSecret;
9
20
  private apiPassphrase;
21
+ private apiAccessToken;
10
22
  /** Defines the client type (affecting how requests & signatures behave) */
11
23
  abstract getClientType(): RestClientType;
12
24
  /**
@@ -23,6 +35,9 @@ export declare abstract class BaseRestClient {
23
35
  * If no custom function is provided, it defaults to the current system time.
24
36
  */
25
37
  private getSignTimestampMs;
38
+ private hasValidCredentials;
39
+ setAccessToken(newAccessToken: string): void;
40
+ hasAccessToken(): boolean;
26
41
  get(endpoint: string, params?: any): Promise<any>;
27
42
  post(endpoint: string, params?: any): Promise<any>;
28
43
  getPrivate(endpoint: string, params?: any): Promise<any>;
@@ -36,6 +51,7 @@ export declare abstract class BaseRestClient {
36
51
  * @private generic handler to parse request exceptions
37
52
  */
38
53
  parseException(e: any, requestParams: any): unknown;
54
+ private signMessage;
39
55
  /**
40
56
  * @private sign request and set recv window
41
57
  */