bybit-api 2.3.2 → 2.4.0-beta.1

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 (92) hide show
  1. package/README.md +60 -152
  2. package/lib/account-asset-client.d.ts +42 -0
  3. package/lib/account-asset-client.js +104 -0
  4. package/lib/account-asset-client.js.map +1 -0
  5. package/lib/constants/enum.d.ts +18 -0
  6. package/lib/constants/enum.js +18 -0
  7. package/lib/constants/enum.js.map +1 -1
  8. package/lib/copy-trading-client.d.ts +54 -0
  9. package/lib/copy-trading-client.js +112 -0
  10. package/lib/copy-trading-client.js.map +1 -0
  11. package/lib/index.d.ts +7 -1
  12. package/lib/index.js +7 -1
  13. package/lib/index.js.map +1 -1
  14. package/lib/inverse-client.d.ts +5 -13
  15. package/lib/inverse-client.js +6 -13
  16. package/lib/inverse-client.js.map +1 -1
  17. package/lib/inverse-futures-client.d.ts +4 -12
  18. package/lib/inverse-futures-client.js +5 -12
  19. package/lib/inverse-futures-client.js.map +1 -1
  20. package/lib/linear-client.d.ts +4 -12
  21. package/lib/linear-client.js +5 -12
  22. package/lib/linear-client.js.map +1 -1
  23. package/lib/spot-client-v3.d.ts +105 -0
  24. package/lib/spot-client-v3.js +222 -0
  25. package/lib/spot-client-v3.js.map +1 -0
  26. package/lib/spot-client.d.ts +5 -12
  27. package/lib/spot-client.js +6 -12
  28. package/lib/spot-client.js.map +1 -1
  29. package/lib/types/index.d.ts +1 -1
  30. package/lib/types/index.js +1 -1
  31. package/lib/types/index.js.map +1 -1
  32. package/lib/types/request/account-asset.d.ts +76 -0
  33. package/lib/types/request/account-asset.js +3 -0
  34. package/lib/types/request/account-asset.js.map +1 -0
  35. package/lib/types/request/copy-trading.d.ts +47 -0
  36. package/lib/types/request/copy-trading.js +3 -0
  37. package/lib/types/request/copy-trading.js.map +1 -0
  38. package/lib/types/request/index.d.ts +7 -0
  39. package/lib/types/request/index.js +7 -0
  40. package/lib/types/request/index.js.map +1 -1
  41. package/lib/types/request/spot.d.ts +72 -0
  42. package/lib/types/{spot.js → request/spot.js} +0 -0
  43. package/lib/types/{spot.js.map → request/spot.js.map} +1 -1
  44. package/lib/types/request/unified-margin.d.ts +223 -0
  45. package/lib/types/request/unified-margin.js +3 -0
  46. package/lib/types/request/unified-margin.js.map +1 -0
  47. package/lib/types/request/usdc-options.d.ts +119 -0
  48. package/lib/types/request/usdc-options.js +3 -0
  49. package/lib/types/request/usdc-options.js.map +1 -0
  50. package/lib/types/request/usdc-perp.d.ts +86 -0
  51. package/lib/types/request/usdc-perp.js +3 -0
  52. package/lib/types/request/usdc-perp.js.map +1 -0
  53. package/lib/types/request/usdc-shared.d.ts +29 -0
  54. package/lib/types/request/usdc-shared.js +3 -0
  55. package/lib/types/request/usdc-shared.js.map +1 -0
  56. package/lib/types/shared.d.ts +16 -5
  57. package/lib/types/websockets.d.ts +40 -0
  58. package/lib/types/websockets.js +3 -0
  59. package/lib/types/websockets.js.map +1 -0
  60. package/lib/unified-margin-client.d.ts +137 -0
  61. package/lib/unified-margin-client.js +269 -0
  62. package/lib/unified-margin-client.js.map +1 -0
  63. package/lib/usdc-option-client.d.ts +100 -0
  64. package/lib/usdc-option-client.js +186 -0
  65. package/lib/usdc-option-client.js.map +1 -0
  66. package/lib/usdc-perpetual-client.d.ts +88 -0
  67. package/lib/usdc-perpetual-client.js +181 -0
  68. package/lib/usdc-perpetual-client.js.map +1 -0
  69. package/lib/util/BaseRestClient.d.ts +15 -2
  70. package/lib/util/BaseRestClient.js +93 -29
  71. package/lib/util/BaseRestClient.js.map +1 -1
  72. package/lib/util/WsStore.d.ts +28 -8
  73. package/lib/util/WsStore.js +11 -3
  74. package/lib/util/WsStore.js.map +1 -1
  75. package/lib/util/index.d.ts +5 -0
  76. package/lib/util/index.js +18 -0
  77. package/lib/util/index.js.map +1 -0
  78. package/lib/{logger.d.ts → util/logger.d.ts} +0 -0
  79. package/lib/{logger.js → util/logger.js} +0 -0
  80. package/lib/util/logger.js.map +1 -0
  81. package/lib/util/requestUtils.d.ts +5 -1
  82. package/lib/util/requestUtils.js +9 -20
  83. package/lib/util/requestUtils.js.map +1 -1
  84. package/lib/util/websocket-util.d.ts +8 -0
  85. package/lib/util/websocket-util.js +39 -0
  86. package/lib/util/websocket-util.js.map +1 -0
  87. package/lib/websocket-client.d.ts +6 -58
  88. package/lib/websocket-client.js +63 -114
  89. package/lib/websocket-client.js.map +1 -1
  90. package/package.json +1 -1
  91. package/lib/logger.js.map +0 -1
  92. package/lib/types/spot.d.ts +0 -30
@@ -16,12 +16,21 @@ const axios_1 = __importDefault(require("axios"));
16
16
  const node_support_1 = require("./node-support");
17
17
  const requestUtils_1 = require("./requestUtils");
18
18
  class BaseRestClient {
19
- constructor(key, secret, baseUrl, options = {}, requestOptions = {}, clientType) {
19
+ /**
20
+ * Create an instance of the REST client
21
+ * @param {string} key - your API key
22
+ * @param {string} secret - your API secret
23
+ * @param {boolean} [useLivenet=false]
24
+ * @param {RestClientOptions} [restClientOptions={}] options to configure REST API connectivity
25
+ * @param {AxiosRequestConfig} [requestOptions={}] HTTP networking options for axios
26
+ */
27
+ constructor(key, secret, useLivenet = false, options = {}, requestOptions = {}) {
28
+ const baseUrl = requestUtils_1.getRestBaseUrl(useLivenet, options);
20
29
  this.timeOffset = null;
21
30
  this.syncTimePromise = null;
22
- this.clientType = clientType;
31
+ this.clientType = this.getClientType();
23
32
  this.options = Object.assign({ recv_window: 5000,
24
- /** Throw errors if any params are undefined */
33
+ /** Throw errors if any request params are empty */
25
34
  strict_param_validation: false,
26
35
  /** Disable time sync by default */
27
36
  enable_time_sync: false,
@@ -30,7 +39,7 @@ class BaseRestClient {
30
39
  this.globalRequestOptions = Object.assign(Object.assign({
31
40
  // in ms == 5 minutes by default
32
41
  timeout: 1000 * 60 * 5 }, requestOptions), { headers: {
33
- 'x-referer': 'bybitapinode',
42
+ 'x-referer': requestUtils_1.agentSource,
34
43
  } });
35
44
  this.baseUrl = baseUrl;
36
45
  if (key && !secret) {
@@ -46,6 +55,9 @@ class BaseRestClient {
46
55
  isSpotClient() {
47
56
  return this.clientType === requestUtils_1.REST_CLIENT_TYPE_ENUM.spot;
48
57
  }
58
+ isUSDCClient() {
59
+ return this.clientType === requestUtils_1.REST_CLIENT_TYPE_ENUM.v3;
60
+ }
49
61
  get(endpoint, params) {
50
62
  return this._call('GET', endpoint, params, true);
51
63
  }
@@ -61,7 +73,7 @@ class BaseRestClient {
61
73
  deletePrivate(endpoint, params) {
62
74
  return this._call('DELETE', endpoint, params, false);
63
75
  }
64
- prepareSignParams(params, isPublicApi) {
76
+ prepareSignParams(method, signMethod, params, isPublicApi) {
65
77
  return __awaiter(this, void 0, void 0, function* () {
66
78
  if (isPublicApi) {
67
79
  return {
@@ -75,27 +87,54 @@ class BaseRestClient {
75
87
  if (this.timeOffset === null) {
76
88
  yield this.syncTime();
77
89
  }
78
- return this.signRequest(params);
90
+ return this.signRequest(params, method, signMethod);
79
91
  });
80
92
  }
81
- /**
82
- * @private Make a HTTP request to a specific endpoint. Private endpoints are automatically signed.
83
- */
84
- _call(method, endpoint, params, isPublicApi) {
93
+ /** Returns an axios request object. Handles signing process automatically if this is a private API call */
94
+ buildRequest(method, url, params, isPublicApi) {
85
95
  return __awaiter(this, void 0, void 0, function* () {
86
- const options = Object.assign(Object.assign({}, this.globalRequestOptions), { url: [this.baseUrl, endpoint].join(endpoint.startsWith('/') ? '' : '/'), method: method, json: true });
96
+ const options = Object.assign(Object.assign({}, this.globalRequestOptions), { url: url, method: method });
87
97
  for (const key in params) {
88
98
  if (typeof params[key] === 'undefined') {
89
99
  delete params[key];
90
100
  }
91
101
  }
92
- const signResult = yield this.prepareSignParams(params, isPublicApi);
93
- if (method === 'GET' || this.isSpotClient()) {
94
- options.params = signResult.paramsWithSign;
102
+ if (isPublicApi) {
103
+ return Object.assign(Object.assign({}, options), { params: params });
104
+ }
105
+ // USDC Options uses a different way of authenticating requests (headers instead of params)
106
+ if (this.isUSDCClient()) {
107
+ if (!options.headers) {
108
+ options.headers = {};
109
+ }
110
+ const signResult = yield this.prepareSignParams(method, 'usdc', params, isPublicApi);
111
+ options.headers['X-BAPI-SIGN-TYPE'] = 2;
112
+ options.headers['X-BAPI-API-KEY'] = this.key;
113
+ options.headers['X-BAPI-TIMESTAMP'] = signResult.timestamp;
114
+ options.headers['X-BAPI-SIGN'] = signResult.sign;
115
+ options.headers['X-BAPI-RECV-WINDOW'] = signResult.recvWindow;
116
+ if (method === 'GET') {
117
+ return Object.assign(Object.assign({}, options), { params: signResult.originalParams });
118
+ }
119
+ return Object.assign(Object.assign({}, options), { data: signResult.originalParams });
95
120
  }
96
- else {
97
- options.data = signResult.paramsWithSign;
121
+ const signResult = yield this.prepareSignParams(method, 'keyInBody', params, isPublicApi);
122
+ if (method === 'GET' || this.isSpotClient()) {
123
+ return Object.assign(Object.assign({}, options), { params: signResult.paramsWithSign });
98
124
  }
125
+ return Object.assign(Object.assign({}, options), { data: signResult.paramsWithSign });
126
+ });
127
+ }
128
+ /**
129
+ * @private Make a HTTP request to a specific endpoint. Private endpoints are automatically signed.
130
+ */
131
+ _call(method, endpoint, params, isPublicApi) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ // Sanity check to make sure it's only ever prefixed by one forward slash
134
+ const requestUrl = [this.baseUrl, endpoint].join(endpoint.startsWith('/') ? '' : '/');
135
+ // Build a request and handle signature process
136
+ const options = yield this.buildRequest(method, requestUrl, params, isPublicApi);
137
+ // Dispatch request
99
138
  return axios_1.default(options)
100
139
  .then((response) => {
101
140
  if (response.status == 200) {
@@ -135,25 +174,50 @@ class BaseRestClient {
135
174
  /**
136
175
  * @private sign request and set recv window
137
176
  */
138
- signRequest(data) {
177
+ signRequest(data, method, signMethod) {
139
178
  return __awaiter(this, void 0, void 0, function* () {
179
+ const timestamp = Date.now() + (this.timeOffset || 0);
140
180
  const res = {
141
- originalParams: Object.assign(Object.assign({}, data), { api_key: this.key, timestamp: Date.now() + (this.timeOffset || 0) }),
181
+ originalParams: Object.assign({}, data),
142
182
  sign: '',
183
+ timestamp,
184
+ recvWindow: 0,
185
+ serializedParams: '',
143
186
  };
144
- // Optional, set to 5000 by default. Increase if timestamp/recv_window errors are seen.
145
- if (this.options.recv_window && !res.originalParams.recv_window) {
146
- if (this.isSpotClient()) {
147
- res.originalParams.recvWindow = this.options.recv_window;
148
- }
149
- else {
150
- res.originalParams.recv_window = this.options.recv_window;
151
- }
187
+ if (!this.key || !this.secret) {
188
+ return res;
189
+ }
190
+ const key = this.key;
191
+ const recvWindow = res.originalParams.recv_window || this.options.recv_window || 5000;
192
+ const strictParamValidation = this.options.strict_param_validation;
193
+ // In case the parent function needs it (e.g. USDC uses a header)
194
+ res.recvWindow = recvWindow;
195
+ // usdc is different for some reason
196
+ if (signMethod === 'usdc') {
197
+ const signRequestParams = method === 'GET'
198
+ ? requestUtils_1.serializeParams(res.originalParams, strictParamValidation)
199
+ : JSON.stringify(res.originalParams);
200
+ const paramsStr = timestamp + key + recvWindow + signRequestParams;
201
+ res.sign = yield node_support_1.signMessage(paramsStr, this.secret);
202
+ return res;
152
203
  }
153
- if (this.key && this.secret) {
154
- const serializedParams = requestUtils_1.serializeParams(res.originalParams, this.options.strict_param_validation);
155
- res.sign = yield node_support_1.signMessage(serializedParams, this.secret);
204
+ // spot/v2 derivatives
205
+ if (signMethod === 'keyInBody') {
206
+ res.originalParams.api_key = key;
207
+ res.originalParams.timestamp = timestamp;
208
+ // Optional, set to 5000 by default. Increase if timestamp/recv_window errors are seen.
209
+ if (recvWindow) {
210
+ if (this.isSpotClient()) {
211
+ res.originalParams.recvWindow = recvWindow;
212
+ }
213
+ else {
214
+ res.originalParams.recv_window = recvWindow;
215
+ }
216
+ }
217
+ res.serializedParams = requestUtils_1.serializeParams(res.originalParams, strictParamValidation);
218
+ res.sign = yield node_support_1.signMessage(res.serializedParams, this.secret);
156
219
  res.paramsWithSign = Object.assign(Object.assign({}, res.originalParams), { sign: res.sign });
220
+ return res;
157
221
  }
158
222
  return res;
159
223
  });
@@ -1 +1 @@
1
- {"version":3,"file":"BaseRestClient.js","sourceRoot":"","sources":["../../src/util/BaseRestClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseRestClient.js","sourceRoot":"","sources":["../../src/util/BaseRestClient.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,50 @@
1
- import { WsConnectionState } from '../websocket-client';
2
- import { DefaultLogger } from '../logger';
3
1
  import WebSocket from 'isomorphic-ws';
2
+ import { DefaultLogger } from './logger';
3
+ export declare enum WsConnectionStateEnum {
4
+ INITIAL = 0,
5
+ CONNECTING = 1,
6
+ CONNECTED = 2,
7
+ CLOSING = 3,
8
+ RECONNECTING = 4
9
+ }
10
+ /** A "topic" is always a string */
4
11
  declare type WsTopic = string;
12
+ /**
13
+ * A "Set" is used to ensure we only subscribe to a topic once (tracking a list of unique topics we're expected to be connected to)
14
+ * TODO: do any WS topics allow parameters? If so, we need a way to track those (see FTX implementation)
15
+ */
5
16
  declare type WsTopicList = Set<WsTopic>;
6
17
  interface WsStoredState {
18
+ /** The currently active websocket connection */
7
19
  ws?: WebSocket;
8
- connectionState?: WsConnectionState;
20
+ /** The current lifecycle state of the connection (enum) */
21
+ connectionState?: WsConnectionStateEnum;
22
+ /** A timer that will send an upstream heartbeat (ping) when it expires */
9
23
  activePingTimer?: ReturnType<typeof setTimeout> | undefined;
24
+ /** A timer tracking that an upstream heartbeat was sent, expecting a reply before it expires */
10
25
  activePongTimer?: ReturnType<typeof setTimeout> | undefined;
26
+ /**
27
+ * All the topics we are expected to be subscribed to (and we automatically resubscribe to if the connection drops)
28
+ */
11
29
  subscribedTopics: WsTopicList;
12
30
  }
13
31
  export default class WsStore {
14
32
  private wsState;
15
33
  private logger;
16
34
  constructor(logger: typeof DefaultLogger);
17
- get(key: string, createIfMissing?: boolean): WsStoredState | undefined;
35
+ /** Get WS stored state for key, optionally create if missing */
36
+ get(key: string, createIfMissing?: true): WsStoredState;
37
+ get(key: string, createIfMissing?: false): WsStoredState | undefined;
18
38
  getKeys(): string[];
19
39
  create(key: string): WsStoredState | undefined;
20
40
  delete(key: string): void;
21
- hasExistingActiveConnection(key: string): boolean | undefined;
41
+ hasExistingActiveConnection(key: string): boolean;
22
42
  getWs(key: string): WebSocket | undefined;
23
43
  setWs(key: string, wsConnection: WebSocket): WebSocket;
24
44
  isWsOpen(key: string): boolean;
25
- getConnectionState(key: string): WsConnectionState;
26
- setConnectionState(key: string, state: WsConnectionState): void;
27
- isConnectionState(key: string, state: WsConnectionState): boolean;
45
+ getConnectionState(key: string): WsConnectionStateEnum;
46
+ setConnectionState(key: string, state: WsConnectionStateEnum): void;
47
+ isConnectionState(key: string, state: WsConnectionStateEnum): boolean;
28
48
  getTopics(key: string): WsTopicList;
29
49
  getTopicsByKey(): Record<string, WsTopicList>;
30
50
  addTopic(key: string, topic: WsTopic): WsTopicList;
@@ -1,7 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const websocket_client_1 = require("../websocket-client");
4
- const logger_1 = require("../logger");
3
+ exports.WsConnectionStateEnum = void 0;
4
+ const logger_1 = require("./logger");
5
+ var WsConnectionStateEnum;
6
+ (function (WsConnectionStateEnum) {
7
+ WsConnectionStateEnum[WsConnectionStateEnum["INITIAL"] = 0] = "INITIAL";
8
+ WsConnectionStateEnum[WsConnectionStateEnum["CONNECTING"] = 1] = "CONNECTING";
9
+ WsConnectionStateEnum[WsConnectionStateEnum["CONNECTED"] = 2] = "CONNECTED";
10
+ WsConnectionStateEnum[WsConnectionStateEnum["CLOSING"] = 3] = "CLOSING";
11
+ WsConnectionStateEnum[WsConnectionStateEnum["RECONNECTING"] = 4] = "RECONNECTING";
12
+ })(WsConnectionStateEnum = exports.WsConnectionStateEnum || (exports.WsConnectionStateEnum = {}));
5
13
  class WsStore {
6
14
  constructor(logger) {
7
15
  this.logger = logger || logger_1.DefaultLogger;
@@ -24,7 +32,7 @@ class WsStore {
24
32
  }
25
33
  this.wsState[key] = {
26
34
  subscribedTopics: new Set(),
27
- connectionState: websocket_client_1.WsConnectionState.READY_STATE_INITIAL,
35
+ connectionState: WsConnectionStateEnum.INITIAL,
28
36
  };
29
37
  return this.get(key);
30
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WsStore.js","sourceRoot":"","sources":["../../src/util/WsStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WsStore.js","sourceRoot":"","sources":["../../src/util/WsStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './BaseRestClient';
2
+ export * from './requestUtils';
3
+ export * from './WsStore';
4
+ export * from './logger';
5
+ export * from './websocket-util';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./BaseRestClient"), exports);
14
+ __exportStar(require("./requestUtils"), exports);
15
+ __exportStar(require("./WsStore"), exports);
16
+ __exportStar(require("./logger"), exports);
17
+ __exportStar(require("./websocket-util"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAiC;AACjC,iDAA+B;AAC/B,4CAA0B;AAC1B,2CAAyB;AACzB,mDAAiC"}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAG;IAC3B,KAAK,EAAE,CAAC,GAAG,MAAiB,EAAQ,EAAE;QACpC,uBAAuB;IACzB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,MAAiB,EAAQ,EAAE;QACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,EAAE,CAAC,GAAG,MAAiB,EAAQ,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,MAAiB,EAAQ,EAAE;QACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,MAAiB,EAAQ,EAAE;QACtC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,MAAiB,EAAQ,EAAE;QACpC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACF,CAAC"}
@@ -19,13 +19,17 @@ export interface RestClientOptions {
19
19
  }
20
20
  export declare function serializeParams(params?: object, strict_validation?: boolean): string;
21
21
  export declare function getRestBaseUrl(useLivenet: boolean, restInverseOptions: RestClientOptions): string;
22
- export declare function isPublicEndpoint(endpoint: string): boolean;
23
22
  export declare function isWsPong(response: any): any;
24
23
  export declare const agentSource = "bybitapinode";
24
+ /**
25
+ * Used to switch how authentication/requests work under the hood (primarily for SPOT since it's different there)
26
+ */
25
27
  export declare const REST_CLIENT_TYPE_ENUM: {
28
+ readonly accountAsset: "accountAsset";
26
29
  readonly inverse: "inverse";
27
30
  readonly inverseFutures: "inverseFutures";
28
31
  readonly linear: "linear";
29
32
  readonly spot: "spot";
33
+ readonly v3: "v3";
30
34
  };
31
35
  export declare type RestClientType = typeof REST_CLIENT_TYPE_ENUM[keyof typeof REST_CLIENT_TYPE_ENUM];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.REST_CLIENT_TYPE_ENUM = exports.agentSource = exports.isWsPong = exports.isPublicEndpoint = exports.getRestBaseUrl = exports.serializeParams = void 0;
3
+ exports.REST_CLIENT_TYPE_ENUM = exports.agentSource = exports.isWsPong = exports.getRestBaseUrl = exports.serializeParams = void 0;
4
4
  function serializeParams(params = {}, strict_validation = false) {
5
5
  return Object.keys(params)
6
6
  .sort()
@@ -15,7 +15,7 @@ function serializeParams(params = {}, strict_validation = false) {
15
15
  }
16
16
  exports.serializeParams = serializeParams;
17
17
  function getRestBaseUrl(useLivenet, restInverseOptions) {
18
- const baseUrlsInverse = {
18
+ const exchangeBaseUrls = {
19
19
  livenet: 'https://api.bybit.com',
20
20
  testnet: 'https://api-testnet.bybit.com',
21
21
  };
@@ -23,27 +23,11 @@ function getRestBaseUrl(useLivenet, restInverseOptions) {
23
23
  return restInverseOptions.baseUrl;
24
24
  }
25
25
  if (useLivenet === true) {
26
- return baseUrlsInverse.livenet;
26
+ return exchangeBaseUrls.livenet;
27
27
  }
28
- return baseUrlsInverse.testnet;
28
+ return exchangeBaseUrls.testnet;
29
29
  }
30
30
  exports.getRestBaseUrl = getRestBaseUrl;
31
- function isPublicEndpoint(endpoint) {
32
- const publicPrefixes = [
33
- 'v2/public',
34
- 'public/linear',
35
- 'spot/quote/v1',
36
- 'spot/v1/symbols',
37
- 'spot/v1/time',
38
- ];
39
- for (const prefix of publicPrefixes) {
40
- if (endpoint.startsWith(prefix)) {
41
- return true;
42
- }
43
- }
44
- return false;
45
- }
46
- exports.isPublicEndpoint = isPublicEndpoint;
47
31
  function isWsPong(response) {
48
32
  if (response.pong || response.ping) {
49
33
  return true;
@@ -55,10 +39,15 @@ function isWsPong(response) {
55
39
  }
56
40
  exports.isWsPong = isWsPong;
57
41
  exports.agentSource = 'bybitapinode';
42
+ /**
43
+ * Used to switch how authentication/requests work under the hood (primarily for SPOT since it's different there)
44
+ */
58
45
  exports.REST_CLIENT_TYPE_ENUM = {
46
+ accountAsset: 'accountAsset',
59
47
  inverse: 'inverse',
60
48
  inverseFutures: 'inverseFutures',
61
49
  linear: 'linear',
62
50
  spot: 'spot',
51
+ v3: 'v3',
63
52
  };
64
53
  //# sourceMappingURL=requestUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestUtils.js","sourceRoot":"","sources":["../../src/util/requestUtils.ts"],"names":[],"mappings":";;;AA0BA,SAAgB,eAAe,CAC7B,SAAiB,EAAE,EACnB,iBAAiB,GAAG,KAAK;IAEzB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,iBAAiB,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAC9D,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;SACH;QACD,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAC3B,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAhBD,0CAgBC;AAED,SAAgB,cAAc,CAC5B,UAAmB,EACnB,kBAAqC;IAErC,MAAM,eAAe,GAAG;QACtB,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,+BAA+B;KACzC,CAAC;IAEF,IAAI,kBAAkB,CAAC,OAAO,EAAE;QAC9B,OAAO,kBAAkB,CAAC,OAAO,CAAC;KACnC;IAED,IAAI,UAAU,KAAK,IAAI,EAAE;QACvB,OAAO,eAAe,CAAC,OAAO,CAAC;KAChC;IACD,OAAO,eAAe,CAAC,OAAO,CAAC;AACjC,CAAC;AAjBD,wCAiBC;AAED,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,cAAc,GAAG;QACrB,WAAW;QACX,eAAe;QACf,eAAe;QACf,iBAAiB;QACjB,cAAc;KACf,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE;QACnC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,4CAeC;AAED,SAAgB,QAAQ,CAAC,QAAa;IACpC,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;QAClC,OAAO,IAAI,CAAC;KACb;IACD,OAAO,CACL,QAAQ,CAAC,OAAO;QAChB,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM;QAC9B,QAAQ,CAAC,OAAO,KAAK,MAAM;QAC3B,QAAQ,CAAC,OAAO,KAAK,IAAI,CAC1B,CAAC;AACJ,CAAC;AAVD,4BAUC;AAEY,QAAA,WAAW,GAAG,cAAc,CAAC;AAE7B,QAAA,qBAAqB,GAAG;IACnC,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACJ,CAAC"}
1
+ {"version":3,"file":"requestUtils.js","sourceRoot":"","sources":["../../src/util/requestUtils.ts"],"names":[],"mappings":";;;AA0BA,SAAgB,eAAe,CAC7B,SAAiB,EAAE,EACnB,iBAAiB,GAAG,KAAK;IAEzB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,iBAAiB,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAC9D,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;SACH;QACD,OAAO,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAC3B,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAhBD,0CAgBC;AAED,SAAgB,cAAc,CAC5B,UAAmB,EACnB,kBAAqC;IAErC,MAAM,gBAAgB,GAAG;QACvB,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,+BAA+B;KACzC,CAAC;IAEF,IAAI,kBAAkB,CAAC,OAAO,EAAE;QAC9B,OAAO,kBAAkB,CAAC,OAAO,CAAC;KACnC;IAED,IAAI,UAAU,KAAK,IAAI,EAAE;QACvB,OAAO,gBAAgB,CAAC,OAAO,CAAC;KACjC;IACD,OAAO,gBAAgB,CAAC,OAAO,CAAC;AAClC,CAAC;AAjBD,wCAiBC;AAED,SAAgB,QAAQ,CAAC,QAAa;IACpC,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;QAClC,OAAO,IAAI,CAAC;KACb;IACD,OAAO,CACL,QAAQ,CAAC,OAAO;QAChB,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM;QAC9B,QAAQ,CAAC,OAAO,KAAK,MAAM;QAC3B,QAAQ,CAAC,OAAO,KAAK,IAAI,CAC1B,CAAC;AACJ,CAAC;AAVD,4BAUC;AAEY,QAAA,WAAW,GAAG,cAAc,CAAC;AAE1C;;GAEG;AACU,QAAA,qBAAqB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI;CACA,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { WsKey } from '../types';
2
+ export declare const wsKeyInverse = "inverse";
3
+ export declare const wsKeyLinearPrivate = "linearPrivate";
4
+ export declare const wsKeyLinearPublic = "linearPublic";
5
+ export declare const wsKeySpotPrivate = "spotPrivate";
6
+ export declare const wsKeySpotPublic = "spotPublic";
7
+ export declare function getLinearWsKeyForTopic(topic: string): WsKey;
8
+ export declare function getSpotWsKeyForTopic(topic: string): WsKey;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSpotWsKeyForTopic = exports.getLinearWsKeyForTopic = exports.wsKeySpotPublic = exports.wsKeySpotPrivate = exports.wsKeyLinearPublic = exports.wsKeyLinearPrivate = exports.wsKeyInverse = void 0;
4
+ exports.wsKeyInverse = 'inverse';
5
+ exports.wsKeyLinearPrivate = 'linearPrivate';
6
+ exports.wsKeyLinearPublic = 'linearPublic';
7
+ exports.wsKeySpotPrivate = 'spotPrivate';
8
+ exports.wsKeySpotPublic = 'spotPublic';
9
+ function getLinearWsKeyForTopic(topic) {
10
+ const privateLinearTopics = [
11
+ 'position',
12
+ 'execution',
13
+ 'order',
14
+ 'stop_order',
15
+ 'wallet',
16
+ ];
17
+ if (privateLinearTopics.includes(topic)) {
18
+ return exports.wsKeyLinearPrivate;
19
+ }
20
+ return exports.wsKeyLinearPublic;
21
+ }
22
+ exports.getLinearWsKeyForTopic = getLinearWsKeyForTopic;
23
+ function getSpotWsKeyForTopic(topic) {
24
+ const privateLinearTopics = [
25
+ 'position',
26
+ 'execution',
27
+ 'order',
28
+ 'stop_order',
29
+ 'outboundAccountInfo',
30
+ 'executionReport',
31
+ 'ticketInfo',
32
+ ];
33
+ if (privateLinearTopics.includes(topic)) {
34
+ return exports.wsKeySpotPrivate;
35
+ }
36
+ return exports.wsKeySpotPublic;
37
+ }
38
+ exports.getSpotWsKeyForTopic = getSpotWsKeyForTopic;
39
+ //# sourceMappingURL=websocket-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-util.js","sourceRoot":"","sources":["../../src/util/websocket-util.ts"],"names":[],"mappings":";;;AAEa,QAAA,YAAY,GAAG,SAAS,CAAC;AACzB,QAAA,kBAAkB,GAAG,eAAe,CAAC;AACrC,QAAA,iBAAiB,GAAG,cAAc,CAAC;AACnC,QAAA,gBAAgB,GAAG,aAAa,CAAC;AACjC,QAAA,eAAe,GAAG,YAAY,CAAC;AAE5C,SAAgB,sBAAsB,CAAC,KAAa;IAClD,MAAM,mBAAmB,GAAG;QAC1B,UAAU;QACV,WAAW;QACX,OAAO;QACP,YAAY;QACZ,QAAQ;KACT,CAAC;IACF,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACvC,OAAO,0BAAkB,CAAC;KAC3B;IAED,OAAO,yBAAiB,CAAC;AAC3B,CAAC;AAbD,wDAaC;AAED,SAAgB,oBAAoB,CAAC,KAAa;IAChD,MAAM,mBAAmB,GAAG;QAC1B,UAAU;QACV,WAAW;QACX,OAAO;QACP,YAAY;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,YAAY;KACb,CAAC;IAEF,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACvC,OAAO,wBAAgB,CAAC;KACzB;IAED,OAAO,uBAAe,CAAC;AACzB,CAAC;AAhBD,oDAgBC"}
@@ -1,62 +1,8 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
3
  import WebSocket from 'isomorphic-ws';
4
- import { DefaultLogger } from './logger';
5
- import { KlineInterval } from './types/shared';
6
- import { RestClientOptions } from './util/requestUtils';
7
- export declare enum WsConnectionState {
8
- READY_STATE_INITIAL = 0,
9
- READY_STATE_CONNECTING = 1,
10
- READY_STATE_CONNECTED = 2,
11
- READY_STATE_CLOSING = 3,
12
- READY_STATE_RECONNECTING = 4
13
- }
14
- export declare type APIMarket = 'inverse' | 'linear' | 'spot';
15
- export declare type WsPublicInverseTopic = 'orderBookL2_25' | 'orderBookL2_200' | 'trade' | 'insurance' | 'instrument_info' | 'klineV2';
16
- export declare type WsPublicUSDTPerpTopic = 'orderBookL2_25' | 'orderBookL2_200' | 'trade' | 'insurance' | 'instrument_info' | 'kline';
17
- export declare type WsPublicSpotV1Topic = 'trade' | 'realtimes' | 'kline' | 'depth' | 'mergedDepth' | 'diffDepth';
18
- export declare type WsPublicSpotV2Topic = 'depth' | 'kline' | 'trade' | 'bookTicker' | 'realtimes';
19
- export declare type WsPublicTopics = WsPublicInverseTopic | WsPublicUSDTPerpTopic | WsPublicSpotV1Topic | WsPublicSpotV2Topic | string;
20
- export declare type WsPrivateInverseTopic = 'position' | 'execution' | 'order' | 'stop_order';
21
- export declare type WsPrivateUSDTPerpTopic = 'position' | 'execution' | 'order' | 'stop_order' | 'wallet';
22
- export declare type WsPrivateSpotTopic = 'outboundAccountInfo' | 'executionReport' | 'ticketInfo';
23
- export declare type WsPrivateTopic = WsPrivateInverseTopic | WsPrivateUSDTPerpTopic | WsPrivateSpotTopic | string;
24
- export declare type WsTopic = WsPublicTopics | WsPrivateTopic;
25
- export interface WSClientConfigurableOptions {
26
- key?: string;
27
- secret?: string;
28
- livenet?: boolean;
29
- /**
30
- * @deprecated Use the property { market: 'linear' } instead
31
- */
32
- linear?: boolean;
33
- market?: APIMarket;
34
- pongTimeout?: number;
35
- pingInterval?: number;
36
- reconnectTimeout?: number;
37
- restOptions?: RestClientOptions;
38
- requestOptions?: any;
39
- wsUrl?: string;
40
- /** If true, fetch server time before trying to authenticate (disabled by default) */
41
- fetchTimeOffsetBeforeAuth?: boolean;
42
- }
43
- export interface WebsocketClientOptions extends WSClientConfigurableOptions {
44
- livenet: boolean;
45
- /**
46
- * @deprecated Use the property { market: 'linear' } instead
47
- */
48
- linear?: boolean;
49
- market?: APIMarket;
50
- pongTimeout: number;
51
- pingInterval: number;
52
- reconnectTimeout: number;
53
- }
54
- export declare const wsKeyInverse = "inverse";
55
- export declare const wsKeyLinearPrivate = "linearPrivate";
56
- export declare const wsKeyLinearPublic = "linearPublic";
57
- export declare const wsKeySpotPrivate = "spotPrivate";
58
- export declare const wsKeySpotPublic = "spotPublic";
59
- export declare type WsKey = 'inverse' | 'linearPrivate' | 'linearPublic' | 'spotPrivate' | 'spotPublic';
4
+ import { DefaultLogger } from './util/logger';
5
+ import { KlineInterval, WSClientConfigurableOptions, WsKey, WsTopic } from './types';
60
6
  export declare interface WebsocketClient {
61
7
  on(event: 'open' | 'reconnected', listener: ({ wsKey: WsKey, event: any }: {
62
8
  wsKey: any;
@@ -69,6 +15,7 @@ export declare interface WebsocketClient {
69
15
  }
70
16
  export declare class WebsocketClient extends EventEmitter {
71
17
  private logger;
18
+ /** Purely used */
72
19
  private restClient;
73
20
  private options;
74
21
  private wsStore;
@@ -77,6 +24,8 @@ export declare class WebsocketClient extends EventEmitter {
77
24
  isLinear(): boolean;
78
25
  isSpot(): boolean;
79
26
  isInverse(): boolean;
27
+ /** USDC, spot v3, unified margin, account asset */
28
+ isV3(): boolean;
80
29
  /**
81
30
  * Add topic/topics to WS subscription list
82
31
  */
@@ -87,7 +36,7 @@ export declare class WebsocketClient extends EventEmitter {
87
36
  unsubscribe(wsTopics: WsTopic[] | WsTopic): void;
88
37
  close(wsKey: WsKey): void;
89
38
  /**
90
- * Request connection of all dependent websockets, instead of waiting for automatic connection by library
39
+ * Request connection of all dependent (public & private) websockets, instead of waiting for automatic connection by library
91
40
  */
92
41
  connectAll(): Promise<WebSocket | undefined>[] | undefined;
93
42
  connectPublic(): Promise<WebSocket | undefined> | undefined;
@@ -118,7 +67,6 @@ export declare class WebsocketClient extends EventEmitter {
118
67
  private onWsError;
119
68
  private onWsClose;
120
69
  private onWsMessageResponse;
121
- private onWsMessageUpdate;
122
70
  private getWs;
123
71
  private setWsState;
124
72
  private getWsUrl;