@solncebro/exchange-engine 0.1.1 → 0.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 (141) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +7 -7
  3. package/dist/auth/binanceAuth.js +3 -6
  4. package/dist/auth/binanceAuth.js.map +1 -1
  5. package/dist/auth/bybitAuth.d.ts +0 -1
  6. package/dist/auth/bybitAuth.d.ts.map +1 -1
  7. package/dist/auth/bybitAuth.js +2 -9
  8. package/dist/auth/bybitAuth.js.map +1 -1
  9. package/dist/constants/binance.d.ts +8 -5
  10. package/dist/constants/binance.d.ts.map +1 -1
  11. package/dist/constants/binance.js +10 -23
  12. package/dist/constants/binance.js.map +1 -1
  13. package/dist/constants/bybit.d.ts +7 -9
  14. package/dist/constants/bybit.d.ts.map +1 -1
  15. package/dist/constants/bybit.js +10 -13
  16. package/dist/constants/bybit.js.map +1 -1
  17. package/dist/constants/mappings.d.ts +9 -0
  18. package/dist/constants/mappings.d.ts.map +1 -0
  19. package/dist/constants/mappings.js +40 -0
  20. package/dist/constants/mappings.js.map +1 -0
  21. package/dist/exchanges/BaseExchangeClient.d.ts +37 -0
  22. package/dist/exchanges/BaseExchangeClient.d.ts.map +1 -0
  23. package/dist/exchanges/BaseExchangeClient.js +91 -0
  24. package/dist/exchanges/BaseExchangeClient.js.map +1 -0
  25. package/dist/exchanges/BinanceBaseClient.d.ts +21 -0
  26. package/dist/exchanges/BinanceBaseClient.d.ts.map +1 -0
  27. package/dist/exchanges/BinanceBaseClient.js +64 -0
  28. package/dist/exchanges/BinanceBaseClient.js.map +1 -0
  29. package/dist/exchanges/BinanceFutures.d.ts +9 -21
  30. package/dist/exchanges/BinanceFutures.d.ts.map +1 -1
  31. package/dist/exchanges/BinanceFutures.js +23 -94
  32. package/dist/exchanges/BinanceFutures.js.map +1 -1
  33. package/dist/exchanges/BinanceSpot.d.ts +9 -21
  34. package/dist/exchanges/BinanceSpot.d.ts.map +1 -1
  35. package/dist/exchanges/BinanceSpot.js +16 -94
  36. package/dist/exchanges/BinanceSpot.js.map +1 -1
  37. package/dist/exchanges/BybitLinear.d.ts +19 -20
  38. package/dist/exchanges/BybitLinear.d.ts.map +1 -1
  39. package/dist/exchanges/BybitLinear.js +66 -71
  40. package/dist/exchanges/BybitLinear.js.map +1 -1
  41. package/dist/exchanges/BybitSpot.d.ts +17 -19
  42. package/dist/exchanges/BybitSpot.d.ts.map +1 -1
  43. package/dist/exchanges/BybitSpot.js +42 -64
  44. package/dist/exchanges/BybitSpot.js.map +1 -1
  45. package/dist/exchanges/Exchange.d.ts +1 -1
  46. package/dist/exchanges/Exchange.d.ts.map +1 -1
  47. package/dist/exchanges/Exchange.js +3 -2
  48. package/dist/exchanges/Exchange.js.map +1 -1
  49. package/dist/http/BaseHttpClient.d.ts +10 -1
  50. package/dist/http/BaseHttpClient.d.ts.map +1 -1
  51. package/dist/http/BaseHttpClient.js +27 -5
  52. package/dist/http/BaseHttpClient.js.map +1 -1
  53. package/dist/http/BinanceBaseHttpClient.d.ts +49 -0
  54. package/dist/http/BinanceBaseHttpClient.d.ts.map +1 -0
  55. package/dist/http/BinanceBaseHttpClient.js +86 -0
  56. package/dist/http/BinanceBaseHttpClient.js.map +1 -0
  57. package/dist/http/BinanceFuturesHttpClient.d.ts +11 -40
  58. package/dist/http/BinanceFuturesHttpClient.d.ts.map +1 -1
  59. package/dist/http/BinanceFuturesHttpClient.js +38 -185
  60. package/dist/http/BinanceFuturesHttpClient.js.map +1 -1
  61. package/dist/http/BinanceSpotHttpClient.d.ts +5 -24
  62. package/dist/http/BinanceSpotHttpClient.d.ts.map +1 -1
  63. package/dist/http/BinanceSpotHttpClient.js +15 -90
  64. package/dist/http/BinanceSpotHttpClient.js.map +1 -1
  65. package/dist/http/BybitHttpClient.d.ts +82 -134
  66. package/dist/http/BybitHttpClient.d.ts.map +1 -1
  67. package/dist/http/BybitHttpClient.js +61 -94
  68. package/dist/http/BybitHttpClient.js.map +1 -1
  69. package/dist/index.d.ts +3 -2
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +9 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/normalizers/binanceNormalizer.d.ts +29 -19
  74. package/dist/normalizers/binanceNormalizer.d.ts.map +1 -1
  75. package/dist/normalizers/binanceNormalizer.js +55 -35
  76. package/dist/normalizers/binanceNormalizer.js.map +1 -1
  77. package/dist/normalizers/bybitNormalizer.d.ts +25 -19
  78. package/dist/normalizers/bybitNormalizer.d.ts.map +1 -1
  79. package/dist/normalizers/bybitNormalizer.js +60 -45
  80. package/dist/normalizers/bybitNormalizer.js.map +1 -1
  81. package/dist/precision/precision.d.ts +3 -3
  82. package/dist/precision/precision.d.ts.map +1 -1
  83. package/dist/precision/precision.js +4 -4
  84. package/dist/precision/precision.js.map +1 -1
  85. package/dist/types/common.d.ts +57 -22
  86. package/dist/types/common.d.ts.map +1 -1
  87. package/dist/types/common.js +40 -0
  88. package/dist/types/common.js.map +1 -1
  89. package/dist/types/exchange.d.ts +14 -8
  90. package/dist/types/exchange.d.ts.map +1 -1
  91. package/dist/types/index.d.ts +2 -2
  92. package/dist/types/index.d.ts.map +1 -1
  93. package/dist/types/stream.d.ts +9 -0
  94. package/dist/types/stream.d.ts.map +1 -0
  95. package/dist/types/stream.js +3 -0
  96. package/dist/types/stream.js.map +1 -0
  97. package/dist/utils/crypto.d.ts +2 -0
  98. package/dist/utils/crypto.d.ts.map +1 -0
  99. package/dist/utils/crypto.js +11 -0
  100. package/dist/utils/crypto.js.map +1 -0
  101. package/dist/utils/httpParams.d.ts +3 -0
  102. package/dist/utils/httpParams.d.ts.map +1 -0
  103. package/dist/utils/httpParams.js +15 -0
  104. package/dist/utils/httpParams.js.map +1 -0
  105. package/dist/utils/klineLoader.d.ts +10 -0
  106. package/dist/utils/klineLoader.d.ts.map +1 -0
  107. package/dist/utils/klineLoader.js +19 -0
  108. package/dist/utils/klineLoader.js.map +1 -0
  109. package/dist/ws/BinanceFuturesPublicStream.d.ts +8 -7
  110. package/dist/ws/BinanceFuturesPublicStream.d.ts.map +1 -1
  111. package/dist/ws/BinanceFuturesPublicStream.js +49 -79
  112. package/dist/ws/BinanceFuturesPublicStream.js.map +1 -1
  113. package/dist/ws/BinanceSpotPublicStream.d.ts +7 -5
  114. package/dist/ws/BinanceSpotPublicStream.d.ts.map +1 -1
  115. package/dist/ws/BinanceSpotPublicStream.js +24 -31
  116. package/dist/ws/BinanceSpotPublicStream.js.map +1 -1
  117. package/dist/ws/BinanceUserDataStream.d.ts +3 -3
  118. package/dist/ws/BinanceUserDataStream.d.ts.map +1 -1
  119. package/dist/ws/BinanceUserDataStream.js +10 -10
  120. package/dist/ws/BinanceUserDataStream.js.map +1 -1
  121. package/dist/ws/BybitPrivateStream.d.ts +1 -1
  122. package/dist/ws/BybitPrivateStream.d.ts.map +1 -1
  123. package/dist/ws/BybitPrivateStream.js +12 -29
  124. package/dist/ws/BybitPrivateStream.js.map +1 -1
  125. package/dist/ws/BybitPublicStream.d.ts +5 -4
  126. package/dist/ws/BybitPublicStream.d.ts.map +1 -1
  127. package/dist/ws/BybitPublicStream.js +18 -24
  128. package/dist/ws/BybitPublicStream.js.map +1 -1
  129. package/dist/ws/BybitTradeStream.d.ts +4 -2
  130. package/dist/ws/BybitTradeStream.d.ts.map +1 -1
  131. package/dist/ws/BybitTradeStream.js +32 -44
  132. package/dist/ws/BybitTradeStream.js.map +1 -1
  133. package/dist/ws/binanceWebSocketUtils.d.ts +4 -0
  134. package/dist/ws/binanceWebSocketUtils.d.ts.map +1 -0
  135. package/dist/ws/binanceWebSocketUtils.js +7 -0
  136. package/dist/ws/binanceWebSocketUtils.js.map +1 -0
  137. package/dist/ws/bybitWebSocketUtils.d.ts +28 -0
  138. package/dist/ws/bybitWebSocketUtils.d.ts.map +1 -0
  139. package/dist/ws/bybitWebSocketUtils.js +29 -0
  140. package/dist/ws/bybitWebSocketUtils.js.map +1 -0
  141. package/package.json +21 -3
package/CHANGELOG.md CHANGED
@@ -5,6 +5,46 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.2.0] - 2026-03-06
9
+
10
+ ### Breaking Changes
11
+ - Renamed `Market` → `TradeSymbol`, `MarketBySymbol` → `TradeSymbolBySymbol`, `MarketFilter` → `TradeSymbolFilter`, `MarketType` → `TradeSymbolType`
12
+ - Renamed `loadMarkets()` → `loadTradeSymbols()`, property `markets` → `tradeSymbols`
13
+ - Renamed `FetchKlinesArgs` → `FetchPageWithLimitArgs`
14
+ - Renamed Kline fields: `open` → `openPrice`, `high` → `highPrice`, `low` → `lowPrice`, `close` → `closePrice`, `quoteVolume` → `quoteAssetVolume`, `trades` → `numberOfTrades`
15
+ - Added Kline fields: `takerBuyBaseAssetVolume`, `takerBuyQuoteAssetVolume`
16
+
17
+ ### Added
18
+ - `FundingRateHistory` type and `fetchFundingRateHistory()` method (Binance Futures)
19
+ - `BinanceFundingRateHistoryRaw` type and `normalizeBinanceFundingRateHistory()` normalizer
20
+ - ESLint integration with TypeScript support (`eslint.config.mjs`)
21
+ - `yarn lint` script — runs ESLint on `src/` and `test/`
22
+ - ESLint check added to `prepublishOnly` pipeline
23
+
24
+ ### Fixed
25
+ - Unused imports in WebSocket streams (`Kline`, `isBybitPongResponse`)
26
+ - `test/tsconfig.json`: added `"node"` to `types` for `console` support in smoke tests
27
+
28
+ ### Internal
29
+ - Code style alignment across all source and test files
30
+ - All abbreviations expanded (`opts` → `options`, etc.)
31
+
32
+ ## [0.1.2] - 2026-03-03
33
+
34
+ ### Added
35
+ - Test suite: 204 tests (Jest + ts-jest) covering auth, HTTP clients, normalizers, WebSocket utils, exchange clients, precision formatting, and public exports
36
+ - HTTP retry for GET requests with exponential backoff
37
+ - `package.json` exports map and `sideEffects: false` for tree-shaking support
38
+ - Test gate in `prepublishOnly` script
39
+
40
+ ### Fixed
41
+ - README: corrected Kline field names (`openTimestamp`/`closeTimestamp`), Map API for markets, `FetchKlinesArgs` parameter type
42
+
43
+ ### Internal
44
+ - Utility modules: `crypto.ts`, `httpParams.ts`, `klineLoader.ts`
45
+ - WebSocket helpers: `binanceWsUtils.ts`, `bybitWsUtils.ts`
46
+ - Base classes: `BaseExchangeClient`, `BinanceBaseClient`, `BinanceBaseHttpClient`
47
+
8
48
  ## [0.1.0] - 2026-02-25
9
49
 
10
50
  ### Added
@@ -51,4 +91,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
51
91
  - Private endpoints (balance, position, orders) require valid credentials
52
92
  - WebSocket subscriptions are stateless and can be re-established on reconnect
53
93
 
94
+ [0.2.0]: https://github.com/solncebro/exchange-engine/releases/tag/v0.2.0
95
+ [0.1.2]: https://github.com/solncebro/exchange-engine/releases/tag/v0.1.2
54
96
  [0.1.0]: https://github.com/solncebro/exchange-engine/releases/tag/v0.1.0
package/README.md CHANGED
@@ -37,7 +37,7 @@ await exchange.futures.loadMarkets();
37
37
 
38
38
  // Fetch historical klines
39
39
  const klines = await exchange.futures.fetchKlines('BTCUSDT', '1h', { limit: 100 });
40
- console.log(klines[0]); // { openTime, open, high, low, close, volume, ... }
40
+ console.log(klines[0]); // { openTimestamp, open, high, low, close, volume, ... }
41
41
 
42
42
  // Get current tickers
43
43
  const tickers = await exchange.futures.fetchTickers();
@@ -47,7 +47,7 @@ exchange.futures.subscribeKlines({
47
47
  symbol: 'BTCUSDT',
48
48
  interval: '1m',
49
49
  handler: (kline) => {
50
- console.log(`[${kline.openTime}] ${kline.close}`);
50
+ console.log(`[${kline.openTimestamp}] ${kline.close}`);
51
51
  },
52
52
  });
53
53
 
@@ -102,7 +102,7 @@ All four classes (BinanceFutures, BinanceSpot, BybitLinear, BybitSpot) implement
102
102
  await client.loadMarkets(reload?: boolean): Promise<MarketBySymbol>;
103
103
 
104
104
  // Get all markets (already loaded)
105
- const markets = client.markets; // Record<string, Market>
105
+ const markets = client.markets; // Map<string, Market>
106
106
 
107
107
  // Fetch current ticker prices
108
108
  await client.fetchTickers(): Promise<TickerBySymbol>;
@@ -111,7 +111,7 @@ await client.fetchTickers(): Promise<TickerBySymbol>;
111
111
  await client.fetchKlines(
112
112
  symbol: string,
113
113
  interval: KlineInterval,
114
- opts?: { limit?: number; startTime?: number; endTime?: number }
114
+ options?: FetchKlinesArgs
115
115
  ): Promise<Kline[]>;
116
116
 
117
117
  // Get account balance
@@ -176,13 +176,13 @@ All types are normalized across exchanges. No raw exchange formats leak out.
176
176
  ```typescript
177
177
  // Candlestick
178
178
  interface Kline {
179
- openTime: number;
179
+ openTimestamp: number;
180
180
  open: number;
181
181
  high: number;
182
182
  low: number;
183
183
  close: number;
184
184
  volume: number;
185
- closeTime: number;
185
+ closeTimestamp: number;
186
186
  quoteVolume: number;
187
187
  trades: number;
188
188
  }
@@ -314,7 +314,7 @@ These differences are transparent — the same code works for both.
314
314
  2. **Reuse markets** — call `loadMarkets()` once at startup
315
315
  ```typescript
316
316
  await client.loadMarkets();
317
- const symbols = Object.keys(client.markets);
317
+ const symbols = [...client.markets.keys()];
318
318
  ```
319
319
 
320
320
  3. **Limit historical data** — fetch only needed range
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.buildBinanceSignature = buildBinanceSignature;
7
4
  exports.buildBinanceSignedParams = buildBinanceSignedParams;
8
5
  exports.buildBinanceAuthHeaders = buildBinanceAuthHeaders;
9
- const crypto_1 = __importDefault(require("crypto"));
6
+ const crypto_1 = require("../utils/crypto");
10
7
  function buildBinanceSignature(queryString, secret) {
11
- return crypto_1.default.createHmac('sha256', secret).update(queryString).digest('hex');
8
+ return (0, crypto_1.hmacSha256)(queryString, secret);
12
9
  }
13
10
  function buildBinanceSignedParams(args) {
14
11
  const { params, secret, recvWindow = 5000 } = args;
@@ -18,7 +15,7 @@ function buildBinanceSignedParams(args) {
18
15
  timestamp,
19
16
  recvWindow,
20
17
  };
21
- const queryString = new URLSearchParams(Object.entries(signedParams).map(([k, v]) => [k, String(v)])).toString();
18
+ const queryString = new URLSearchParams(Object.entries(signedParams).map(([key, value]) => [key, String(value)])).toString();
22
19
  const signature = buildBinanceSignature(queryString, secret);
23
20
  signedParams.signature = signature;
24
21
  return signedParams;
@@ -1 +1 @@
1
- {"version":3,"file":"binanceAuth.js","sourceRoot":"","sources":["../../src/auth/binanceAuth.ts"],"names":[],"mappings":";;;;;AAEA,sDAEC;AAQD,4DAkBC;AAED,0DAIC;AApCD,oDAA4B;AAE5B,SAAgB,qBAAqB,CAAC,WAAmB,EAAE,MAAc;IACvE,OAAO,gBAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAQD,SAAgB,wBAAwB,CAAC,IAAkC;IACzE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAoC;QACpD,GAAG,MAAM;QACT,SAAS;QACT,UAAU;KACX,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,eAAe,CACrC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAuB,CACnF,CAAC,QAAQ,EAAE,CAAC;IAEb,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAE7D,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAAc;IACpD,OAAO;QACL,cAAc,EAAE,MAAM;KACvB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"binanceAuth.js","sourceRoot":"","sources":["../../src/auth/binanceAuth.ts"],"names":[],"mappings":";;AAEA,sDAEC;AAQD,4DAkBC;AAED,0DAIC;AApCD,4CAA6C;AAE7C,SAAgB,qBAAqB,CAAC,WAAmB,EAAE,MAAc;IACvE,OAAO,IAAA,mBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAQD,SAAgB,wBAAwB,CAAC,IAAkC;IACzE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAoC;QACpD,GAAG,MAAM;QACT,SAAS;QACT,UAAU;KACX,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,eAAe,CACrC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAuB,CAC/F,CAAC,QAAQ,EAAE,CAAC;IAEb,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAE7D,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;IAEnC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAAc;IACpD,OAAO;QACL,cAAc,EAAE,MAAM;KACvB,CAAC;AACJ,CAAC"}
@@ -6,5 +6,4 @@ export interface BuildBybitAuthHeadersArgs {
6
6
  payload: string;
7
7
  }
8
8
  export declare function buildBybitAuthHeaders(args: BuildBybitAuthHeadersArgs): Record<string, string>;
9
- export declare function getCurrentTimestamp(): number;
10
9
  //# sourceMappingURL=bybitAuth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bybitAuth.d.ts","sourceRoot":"","sources":["../../src/auth/bybitAuth.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW7F;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
1
+ {"version":3,"file":"bybitAuth.d.ts","sourceRoot":"","sources":["../../src/auth/bybitAuth.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW7F"}
@@ -1,15 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.buildBybitAuthHeaders = buildBybitAuthHeaders;
7
- exports.getCurrentTimestamp = getCurrentTimestamp;
8
- const crypto_1 = __importDefault(require("crypto"));
4
+ const crypto_1 = require("../utils/crypto");
9
5
  function buildBybitAuthHeaders(args) {
10
6
  const { apiKey, secret, timestamp, recvWindow = 5000, payload } = args;
11
7
  const signPayload = `${timestamp}${apiKey}${recvWindow}${payload}`;
12
- const signature = crypto_1.default.createHmac('sha256', secret).update(signPayload).digest('hex');
8
+ const signature = (0, crypto_1.hmacSha256)(signPayload, secret);
13
9
  return {
14
10
  'X-BAPI-API-KEY': apiKey,
15
11
  'X-BAPI-TIMESTAMP': String(timestamp),
@@ -17,7 +13,4 @@ function buildBybitAuthHeaders(args) {
17
13
  'X-BAPI-RECV-WINDOW': String(recvWindow),
18
14
  };
19
15
  }
20
- function getCurrentTimestamp() {
21
- return Date.now();
22
- }
23
16
  //# sourceMappingURL=bybitAuth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bybitAuth.js","sourceRoot":"","sources":["../../src/auth/bybitAuth.ts"],"names":[],"mappings":";;;;;AAUA,sDAWC;AAED,kDAEC;AAzBD,oDAA4B;AAU5B,SAAgB,qBAAqB,CAAC,IAA+B;IACnE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvE,MAAM,WAAW,GAAG,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,EAAE,CAAC;IACnE,MAAM,SAAS,GAAG,gBAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAExF,OAAO;QACL,gBAAgB,EAAE,MAAM;QACxB,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC;QACrC,aAAa,EAAE,SAAS;QACxB,oBAAoB,EAAE,MAAM,CAAC,UAAU,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"bybitAuth.js","sourceRoot":"","sources":["../../src/auth/bybitAuth.ts"],"names":[],"mappings":";;AAUA,sDAWC;AArBD,4CAA6C;AAU7C,SAAgB,qBAAqB,CAAC,IAA+B;IACnE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvE,MAAM,WAAW,GAAG,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,EAAE,CAAC;IACnE,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAElD,OAAO;QACL,gBAAgB,EAAE,MAAM;QACxB,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC;QACrC,aAAa,EAAE,SAAS;QACxB,oBAAoB,EAAE,MAAM,CAAC,UAAU,CAAC;KACzC,CAAC;AACJ,CAAC"}
@@ -1,9 +1,12 @@
1
1
  export declare const BINANCE_SPOT_BASE_URL = "https://api.binance.com";
2
2
  export declare const BINANCE_FUTURES_BASE_URL = "https://fapi.binance.com";
3
- export declare const BINANCE_FUTURES_TESTNET_BASE_URL = "https://testnet.binancefuture.com";
4
- export declare const BINANCE_FUTURES_WS_STREAM_URL = "wss://fstream.binance.com/ws";
5
- export declare const BINANCE_FUTURES_WS_COMBINED_URL = "wss://fstream.binance.com/stream";
6
- export declare const BINANCE_SPOT_WS_STREAM_URL = "wss://stream.binance.com:9443/ws";
3
+ export declare const BINANCE_DEMO_SPOT_BASE_URL = "https://demo-api.binance.com";
4
+ export declare const BINANCE_DEMO_FUTURES_BASE_URL = "https://demo-fapi.binance.com";
5
+ export declare const BINANCE_FUTURES_WEBSOCKET_STREAM_URL = "wss://fstream.binance.com/ws";
6
+ export declare const BINANCE_FUTURES_WEBSOCKET_COMBINED_URL = "wss://fstream.binance.com/stream";
7
+ export declare const BINANCE_SPOT_WEBSOCKET_STREAM_URL = "wss://stream.binance.com:9443/ws";
8
+ export declare const BINANCE_DEMO_FUTURES_WEBSOCKET_COMBINED_URL = "wss://fstream.binancefuture.com/stream";
7
9
  export declare const BINANCE_REQUEST_TIMEOUT = 30000;
8
- export declare const BINANCE_KLINE_INTERVAL: Record<string, string>;
10
+ export declare const BINANCE_KLINE_LIMIT_SPOT = 1000;
11
+ export declare const BINANCE_KLINE_LIMIT_FUTURES = 499;
9
12
  //# sourceMappingURL=binance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"binance.d.ts","sourceRoot":"","sources":["../../src/constants/binance.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,gCAAgC,sCAAsC,CAAC;AAEpF,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,eAAO,MAAM,+BAA+B,qCAAqC,CAAC;AAClF,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAE7E,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAG7C,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAezD,CAAC"}
1
+ {"version":3,"file":"binance.d.ts","sourceRoot":"","sources":["../../src/constants/binance.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAC/D,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AACzE,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E,eAAO,MAAM,oCAAoC,iCAAiC,CAAC;AACnF,eAAO,MAAM,sCAAsC,qCAAqC,CAAC;AACzF,eAAO,MAAM,iCAAiC,qCAAqC,CAAC;AAEpF,eAAO,MAAM,2CAA2C,2CAA2C,CAAC;AAEpG,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,2BAA2B,MAAM,CAAC"}
@@ -1,28 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BINANCE_KLINE_INTERVAL = exports.BINANCE_REQUEST_TIMEOUT = exports.BINANCE_SPOT_WS_STREAM_URL = exports.BINANCE_FUTURES_WS_COMBINED_URL = exports.BINANCE_FUTURES_WS_STREAM_URL = exports.BINANCE_FUTURES_TESTNET_BASE_URL = exports.BINANCE_FUTURES_BASE_URL = exports.BINANCE_SPOT_BASE_URL = void 0;
3
+ exports.BINANCE_KLINE_LIMIT_FUTURES = exports.BINANCE_KLINE_LIMIT_SPOT = exports.BINANCE_REQUEST_TIMEOUT = exports.BINANCE_DEMO_FUTURES_WEBSOCKET_COMBINED_URL = exports.BINANCE_SPOT_WEBSOCKET_STREAM_URL = exports.BINANCE_FUTURES_WEBSOCKET_COMBINED_URL = exports.BINANCE_FUTURES_WEBSOCKET_STREAM_URL = exports.BINANCE_DEMO_FUTURES_BASE_URL = exports.BINANCE_DEMO_SPOT_BASE_URL = exports.BINANCE_FUTURES_BASE_URL = exports.BINANCE_SPOT_BASE_URL = void 0;
4
4
  exports.BINANCE_SPOT_BASE_URL = 'https://api.binance.com';
5
5
  exports.BINANCE_FUTURES_BASE_URL = 'https://fapi.binance.com';
6
- exports.BINANCE_FUTURES_TESTNET_BASE_URL = 'https://testnet.binancefuture.com';
7
- exports.BINANCE_FUTURES_WS_STREAM_URL = 'wss://fstream.binance.com/ws';
8
- exports.BINANCE_FUTURES_WS_COMBINED_URL = 'wss://fstream.binance.com/stream';
9
- exports.BINANCE_SPOT_WS_STREAM_URL = 'wss://stream.binance.com:9443/ws';
10
- exports.BINANCE_REQUEST_TIMEOUT = 30000; // 30 seconds
11
- // Маппинг унифицированного KlineInterval -> формат Binance (совпадает 1:1)
12
- exports.BINANCE_KLINE_INTERVAL = {
13
- '1m': '1m',
14
- '3m': '3m',
15
- '5m': '5m',
16
- '15m': '15m',
17
- '30m': '30m',
18
- '1h': '1h',
19
- '2h': '2h',
20
- '4h': '4h',
21
- '6h': '6h',
22
- '12h': '12h',
23
- '1d': '1d',
24
- '3d': '3d',
25
- '1w': '1w',
26
- '1M': '1M',
27
- };
6
+ exports.BINANCE_DEMO_SPOT_BASE_URL = 'https://demo-api.binance.com';
7
+ exports.BINANCE_DEMO_FUTURES_BASE_URL = 'https://demo-fapi.binance.com';
8
+ exports.BINANCE_FUTURES_WEBSOCKET_STREAM_URL = 'wss://fstream.binance.com/ws';
9
+ exports.BINANCE_FUTURES_WEBSOCKET_COMBINED_URL = 'wss://fstream.binance.com/stream';
10
+ exports.BINANCE_SPOT_WEBSOCKET_STREAM_URL = 'wss://stream.binance.com:9443/ws';
11
+ exports.BINANCE_DEMO_FUTURES_WEBSOCKET_COMBINED_URL = 'wss://fstream.binancefuture.com/stream';
12
+ exports.BINANCE_REQUEST_TIMEOUT = 30000;
13
+ exports.BINANCE_KLINE_LIMIT_SPOT = 1000;
14
+ exports.BINANCE_KLINE_LIMIT_FUTURES = 499;
28
15
  //# sourceMappingURL=binance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binance.js","sourceRoot":"","sources":["../../src/constants/binance.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,yBAAyB,CAAC;AAClD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,gCAAgC,GAAG,mCAAmC,CAAC;AAEvE,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAC/D,QAAA,+BAA+B,GAAG,kCAAkC,CAAC;AACrE,QAAA,0BAA0B,GAAG,kCAAkC,CAAC;AAEhE,QAAA,uBAAuB,GAAG,KAAK,CAAC,CAAC,aAAa;AAE3D,2EAA2E;AAC9D,QAAA,sBAAsB,GAA2B;IAC5D,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC"}
1
+ {"version":3,"file":"binance.js","sourceRoot":"","sources":["../../src/constants/binance.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,yBAAyB,CAAC;AAClD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AAEtD,QAAA,0BAA0B,GAAG,8BAA8B,CAAC;AAC5D,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAEhE,QAAA,oCAAoC,GAAG,8BAA8B,CAAC;AACtE,QAAA,sCAAsC,GAAG,kCAAkC,CAAC;AAC5E,QAAA,iCAAiC,GAAG,kCAAkC,CAAC;AAEvE,QAAA,2CAA2C,GAAG,wCAAwC,CAAC;AAEvF,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAEhC,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAChC,QAAA,2BAA2B,GAAG,GAAG,CAAC"}
@@ -1,13 +1,11 @@
1
1
  export declare const BYBIT_BASE_URL = "https://api.bybit.com";
2
- export declare const BYBIT_TESTNET_BASE_URL = "https://api-testnet.bybit.com";
3
- export declare const BYBIT_PUBLIC_LINEAR_WS_URL = "wss://stream.bybit.com/v5/public/linear";
4
- export declare const BYBIT_PUBLIC_SPOT_WS_URL = "wss://stream.bybit.com/v5/public/spot";
5
- export declare const BYBIT_PRIVATE_WS_URL = "wss://stream.bybit.com/v5/private";
6
- export declare const BYBIT_TRADE_WS_URL = "wss://stream.bybit.com/v5/trade";
7
- export declare const BYBIT_PUBLIC_LINEAR_WS_TESTNET_URL = "wss://stream-testnet.bybit.com/v5/public/linear";
8
- export declare const BYBIT_PUBLIC_SPOT_WS_TESTNET_URL = "wss://stream-testnet.bybit.com/v5/public/spot";
9
- export declare const BYBIT_PRIVATE_WS_TESTNET_URL = "wss://stream-testnet.bybit.com/v5/private";
10
- export declare const BYBIT_TRADE_WS_TESTNET_URL = "wss://stream-testnet.bybit.com/v5/trade";
2
+ export declare const BYBIT_DEMO_BASE_URL = "https://api-demo.bybit.com";
3
+ export declare const BYBIT_PUBLIC_LINEAR_WEBSOCKET_URL = "wss://stream.bybit.com/v5/public/linear";
4
+ export declare const BYBIT_PUBLIC_SPOT_WEBSOCKET_URL = "wss://stream.bybit.com/v5/public/spot";
5
+ export declare const BYBIT_PRIVATE_WEBSOCKET_URL = "wss://stream.bybit.com/v5/private";
6
+ export declare const BYBIT_TRADE_WEBSOCKET_URL = "wss://stream.bybit.com/v5/trade";
7
+ export declare const BYBIT_DEMO_PUBLIC_LINEAR_WEBSOCKET_URL = "wss://stream-demo.bybit.com/v5/public/linear";
8
+ export declare const BYBIT_DEMO_PUBLIC_SPOT_WEBSOCKET_URL = "wss://stream-demo.bybit.com/v5/public/spot";
11
9
  export declare const BYBIT_RECV_WINDOW = 7000;
12
10
  export declare const BYBIT_REQUEST_TIMEOUT = 30000;
13
11
  export declare const BYBIT_KLINE_INTERVAL: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"bybit.d.ts","sourceRoot":"","sources":["../../src/constants/bybit.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,0BAA0B,CAAC;AACtD,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AAEtE,eAAO,MAAM,0BAA0B,4CAA4C,CAAC;AACpF,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAChF,eAAO,MAAM,oBAAoB,sCAAsC,CAAC;AACxE,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AAEpE,eAAO,MAAM,kCAAkC,oDAAoD,CAAC;AACpG,eAAO,MAAM,gCAAgC,kDAAkD,CAAC;AAChG,eAAO,MAAM,4BAA4B,8CAA8C,CAAC;AACxF,eAAO,MAAM,0BAA0B,4CAA4C,CAAC;AAEpF,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAG3C,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAevD,CAAC"}
1
+ {"version":3,"file":"bybit.d.ts","sourceRoot":"","sources":["../../src/constants/bybit.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,0BAA0B,CAAC;AAEtD,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,eAAO,MAAM,iCAAiC,4CAA4C,CAAC;AAC3F,eAAO,MAAM,+BAA+B,0CAA0C,CAAC;AACvF,eAAO,MAAM,2BAA2B,sCAAsC,CAAC;AAC/E,eAAO,MAAM,yBAAyB,oCAAoC,CAAC;AAE3E,eAAO,MAAM,sCAAsC,iDAAiD,CAAC;AACrG,eAAO,MAAM,oCAAoC,+CAA+C,CAAC;AAEjG,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAevD,CAAC"}
@@ -1,19 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BYBIT_KLINE_INTERVAL = exports.BYBIT_REQUEST_TIMEOUT = exports.BYBIT_RECV_WINDOW = exports.BYBIT_TRADE_WS_TESTNET_URL = exports.BYBIT_PRIVATE_WS_TESTNET_URL = exports.BYBIT_PUBLIC_SPOT_WS_TESTNET_URL = exports.BYBIT_PUBLIC_LINEAR_WS_TESTNET_URL = exports.BYBIT_TRADE_WS_URL = exports.BYBIT_PRIVATE_WS_URL = exports.BYBIT_PUBLIC_SPOT_WS_URL = exports.BYBIT_PUBLIC_LINEAR_WS_URL = exports.BYBIT_TESTNET_BASE_URL = exports.BYBIT_BASE_URL = void 0;
3
+ exports.BYBIT_KLINE_INTERVAL = exports.BYBIT_REQUEST_TIMEOUT = exports.BYBIT_RECV_WINDOW = exports.BYBIT_DEMO_PUBLIC_SPOT_WEBSOCKET_URL = exports.BYBIT_DEMO_PUBLIC_LINEAR_WEBSOCKET_URL = exports.BYBIT_TRADE_WEBSOCKET_URL = exports.BYBIT_PRIVATE_WEBSOCKET_URL = exports.BYBIT_PUBLIC_SPOT_WEBSOCKET_URL = exports.BYBIT_PUBLIC_LINEAR_WEBSOCKET_URL = exports.BYBIT_DEMO_BASE_URL = exports.BYBIT_BASE_URL = void 0;
4
4
  exports.BYBIT_BASE_URL = 'https://api.bybit.com';
5
- exports.BYBIT_TESTNET_BASE_URL = 'https://api-testnet.bybit.com';
6
- exports.BYBIT_PUBLIC_LINEAR_WS_URL = 'wss://stream.bybit.com/v5/public/linear';
7
- exports.BYBIT_PUBLIC_SPOT_WS_URL = 'wss://stream.bybit.com/v5/public/spot';
8
- exports.BYBIT_PRIVATE_WS_URL = 'wss://stream.bybit.com/v5/private';
9
- exports.BYBIT_TRADE_WS_URL = 'wss://stream.bybit.com/v5/trade';
10
- exports.BYBIT_PUBLIC_LINEAR_WS_TESTNET_URL = 'wss://stream-testnet.bybit.com/v5/public/linear';
11
- exports.BYBIT_PUBLIC_SPOT_WS_TESTNET_URL = 'wss://stream-testnet.bybit.com/v5/public/spot';
12
- exports.BYBIT_PRIVATE_WS_TESTNET_URL = 'wss://stream-testnet.bybit.com/v5/private';
13
- exports.BYBIT_TRADE_WS_TESTNET_URL = 'wss://stream-testnet.bybit.com/v5/trade';
14
- exports.BYBIT_RECV_WINDOW = 7000; // milliseconds
15
- exports.BYBIT_REQUEST_TIMEOUT = 30000; // 30 seconds
16
- // Маппинг KlineInterval -> формат Bybit (числа минут или D/W/M)
5
+ exports.BYBIT_DEMO_BASE_URL = 'https://api-demo.bybit.com';
6
+ exports.BYBIT_PUBLIC_LINEAR_WEBSOCKET_URL = 'wss://stream.bybit.com/v5/public/linear';
7
+ exports.BYBIT_PUBLIC_SPOT_WEBSOCKET_URL = 'wss://stream.bybit.com/v5/public/spot';
8
+ exports.BYBIT_PRIVATE_WEBSOCKET_URL = 'wss://stream.bybit.com/v5/private';
9
+ exports.BYBIT_TRADE_WEBSOCKET_URL = 'wss://stream.bybit.com/v5/trade';
10
+ exports.BYBIT_DEMO_PUBLIC_LINEAR_WEBSOCKET_URL = 'wss://stream-demo.bybit.com/v5/public/linear';
11
+ exports.BYBIT_DEMO_PUBLIC_SPOT_WEBSOCKET_URL = 'wss://stream-demo.bybit.com/v5/public/spot';
12
+ exports.BYBIT_RECV_WINDOW = 7000;
13
+ exports.BYBIT_REQUEST_TIMEOUT = 30000;
17
14
  exports.BYBIT_KLINE_INTERVAL = {
18
15
  '1m': '1',
19
16
  '3m': '3',
@@ -1 +1 @@
1
- {"version":3,"file":"bybit.js","sourceRoot":"","sources":["../../src/constants/bybit.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,uBAAuB,CAAC;AACzC,QAAA,sBAAsB,GAAG,+BAA+B,CAAC;AAEzD,QAAA,0BAA0B,GAAG,yCAAyC,CAAC;AACvE,QAAA,wBAAwB,GAAG,uCAAuC,CAAC;AACnE,QAAA,oBAAoB,GAAG,mCAAmC,CAAC;AAC3D,QAAA,kBAAkB,GAAG,iCAAiC,CAAC;AAEvD,QAAA,kCAAkC,GAAG,iDAAiD,CAAC;AACvF,QAAA,gCAAgC,GAAG,+CAA+C,CAAC;AACnF,QAAA,4BAA4B,GAAG,2CAA2C,CAAC;AAC3E,QAAA,0BAA0B,GAAG,yCAAyC,CAAC;AAEvE,QAAA,iBAAiB,GAAG,IAAI,CAAC,CAAC,eAAe;AACzC,QAAA,qBAAqB,GAAG,KAAK,CAAC,CAAC,aAAa;AAEzD,gEAAgE;AACnD,QAAA,oBAAoB,GAA2B;IAC1D,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACV,CAAC"}
1
+ {"version":3,"file":"bybit.js","sourceRoot":"","sources":["../../src/constants/bybit.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,uBAAuB,CAAC;AAEzC,QAAA,mBAAmB,GAAG,4BAA4B,CAAC;AAEnD,QAAA,iCAAiC,GAAG,yCAAyC,CAAC;AAC9E,QAAA,+BAA+B,GAAG,uCAAuC,CAAC;AAC1E,QAAA,2BAA2B,GAAG,mCAAmC,CAAC;AAClE,QAAA,yBAAyB,GAAG,iCAAiC,CAAC;AAE9D,QAAA,sCAAsC,GAAG,8CAA8C,CAAC;AACxF,QAAA,oCAAoC,GAAG,4CAA4C,CAAC;AAEpF,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACzB,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAE9B,QAAA,oBAAoB,GAA2B;IAC1D,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACV,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { PositionSide, OrderSide, OrderType } from '../types/common';
2
+ export declare const BINANCE_POSITION_SIDE: Record<string, PositionSide>;
3
+ export declare const BYBIT_POSITION_SIDE: Record<string, PositionSide>;
4
+ export declare const BYBIT_ORDER_STATUS: Record<string, string>;
5
+ export declare const BINANCE_ORDER_SIDE: Record<string, OrderSide>;
6
+ export declare const BINANCE_ORDER_TYPE: Record<string, OrderType>;
7
+ export declare const BYBIT_ORDER_SIDE: Record<string, OrderSide>;
8
+ export declare const BYBIT_ORDER_TYPE: Record<string, OrderType>;
9
+ //# sourceMappingURL=mappings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mappings.d.ts","sourceRoot":"","sources":["../../src/constants/mappings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAErE,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAI9D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAG5D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASrD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAGxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAGxD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAGtD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAGtD,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BYBIT_ORDER_TYPE = exports.BYBIT_ORDER_SIDE = exports.BINANCE_ORDER_TYPE = exports.BINANCE_ORDER_SIDE = exports.BYBIT_ORDER_STATUS = exports.BYBIT_POSITION_SIDE = exports.BINANCE_POSITION_SIDE = void 0;
4
+ const common_1 = require("../types/common");
5
+ exports.BINANCE_POSITION_SIDE = {
6
+ LONG: common_1.PositionSide.Long,
7
+ SHORT: common_1.PositionSide.Short,
8
+ BOTH: common_1.PositionSide.Both,
9
+ };
10
+ exports.BYBIT_POSITION_SIDE = {
11
+ Buy: common_1.PositionSide.Long,
12
+ Sell: common_1.PositionSide.Short,
13
+ };
14
+ exports.BYBIT_ORDER_STATUS = {
15
+ New: 'open',
16
+ PartiallyFilled: 'open',
17
+ Untriggered: 'open',
18
+ Filled: 'closed',
19
+ Cancelled: 'canceled',
20
+ PartiallyFilledCanceled: 'canceled',
21
+ Rejected: 'rejected',
22
+ Deactivated: 'canceled',
23
+ };
24
+ exports.BINANCE_ORDER_SIDE = {
25
+ BUY: common_1.OrderSide.Buy,
26
+ SELL: common_1.OrderSide.Sell,
27
+ };
28
+ exports.BINANCE_ORDER_TYPE = {
29
+ MARKET: common_1.OrderType.Market,
30
+ LIMIT: common_1.OrderType.Limit,
31
+ };
32
+ exports.BYBIT_ORDER_SIDE = {
33
+ Buy: common_1.OrderSide.Buy,
34
+ Sell: common_1.OrderSide.Sell,
35
+ };
36
+ exports.BYBIT_ORDER_TYPE = {
37
+ Market: common_1.OrderType.Market,
38
+ Limit: common_1.OrderType.Limit,
39
+ };
40
+ //# sourceMappingURL=mappings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mappings.js","sourceRoot":"","sources":["../../src/constants/mappings.ts"],"names":[],"mappings":";;;AAAA,4CAAqE;AAExD,QAAA,qBAAqB,GAAiC;IACjE,IAAI,EAAE,qBAAY,CAAC,IAAI;IACvB,KAAK,EAAE,qBAAY,CAAC,KAAK;IACzB,IAAI,EAAE,qBAAY,CAAC,IAAI;CACxB,CAAC;AAEW,QAAA,mBAAmB,GAAiC;IAC/D,GAAG,EAAE,qBAAY,CAAC,IAAI;IACtB,IAAI,EAAE,qBAAY,CAAC,KAAK;CACzB,CAAC;AAEW,QAAA,kBAAkB,GAA2B;IACxD,GAAG,EAAE,MAAM;IACX,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,UAAU;IACrB,uBAAuB,EAAE,UAAU;IACnC,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,UAAU;CACxB,CAAC;AAEW,QAAA,kBAAkB,GAA8B;IAC3D,GAAG,EAAE,kBAAS,CAAC,GAAG;IAClB,IAAI,EAAE,kBAAS,CAAC,IAAI;CACrB,CAAC;AAEW,QAAA,kBAAkB,GAA8B;IAC3D,MAAM,EAAE,kBAAS,CAAC,MAAM;IACxB,KAAK,EAAE,kBAAS,CAAC,KAAK;CACvB,CAAC;AAEW,QAAA,gBAAgB,GAA8B;IACzD,GAAG,EAAE,kBAAS,CAAC,GAAG;IAClB,IAAI,EAAE,kBAAS,CAAC,IAAI;CACrB,CAAC;AAEW,QAAA,gBAAgB,GAA8B;IACzD,MAAM,EAAE,kBAAS,CAAC,MAAM;IACxB,KAAK,EAAE,kBAAS,CAAC,KAAK;CACvB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { ExchangeClient, ExchangeArgs, FetchPageWithLimitArgs, SubscribeKlinesArgs } from '../types/exchange';
2
+ import type { ExchangeLogger, Kline, KlineInterval, TradeSymbolBySymbol, TickerBySymbol, BalanceByAsset } from '../types/common';
3
+ import type { PublicStreamLike } from '../types/stream';
4
+ declare abstract class BaseExchangeClient implements ExchangeClient {
5
+ readonly apiKey: string;
6
+ readonly tradeSymbols: TradeSymbolBySymbol;
7
+ protected readonly logger: ExchangeLogger;
8
+ protected readonly onNotify?: (message: string) => void | Promise<void>;
9
+ protected abstract readonly marketLabel: string;
10
+ protected abstract readonly klineLimit: number;
11
+ constructor(args: ExchangeArgs);
12
+ protected abstract getPublicStream(): PublicStreamLike;
13
+ protected abstract fetchAndNormalizeTradeSymbols(): Promise<TradeSymbolBySymbol>;
14
+ protected abstract fetchAndNormalizeTickers(): Promise<TickerBySymbol>;
15
+ protected abstract fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?: FetchPageWithLimitArgs): Promise<Kline[]>;
16
+ protected abstract fetchAndNormalizeBalance(): Promise<BalanceByAsset>;
17
+ loadTradeSymbols(shouldReload?: boolean): Promise<TradeSymbolBySymbol>;
18
+ fetchTickers(): Promise<TickerBySymbol>;
19
+ fetchKlines(symbol: string, interval: KlineInterval, options?: FetchPageWithLimitArgs): Promise<Kline[]>;
20
+ fetchAllKlines(symbolList: string[], interval: KlineInterval): Promise<Map<string, Kline[]>>;
21
+ fetchBalance(): Promise<BalanceByAsset>;
22
+ watchTickers(): AsyncGenerator<TickerBySymbol>;
23
+ subscribeKlines(args: SubscribeKlinesArgs): void;
24
+ unsubscribeKlines(args: SubscribeKlinesArgs): void;
25
+ amountToPrecision(symbol: string, amount: number): string;
26
+ priceToPrecision(symbol: string, price: number): string;
27
+ getMinOrderQty(symbol: string): number;
28
+ getMinNotional(symbol: string): number;
29
+ abstract createOrderWebSocket(...args: Parameters<ExchangeClient['createOrderWebSocket']>): ReturnType<ExchangeClient['createOrderWebSocket']>;
30
+ abstract fetchFundingRateHistory(...args: Parameters<ExchangeClient['fetchFundingRateHistory']>): ReturnType<ExchangeClient['fetchFundingRateHistory']>;
31
+ abstract fetchPosition(...args: Parameters<ExchangeClient['fetchPosition']>): ReturnType<ExchangeClient['fetchPosition']>;
32
+ abstract setLeverage(...args: Parameters<ExchangeClient['setLeverage']>): ReturnType<ExchangeClient['setLeverage']>;
33
+ abstract setMarginMode(...args: Parameters<ExchangeClient['setMarginMode']>): ReturnType<ExchangeClient['setMarginMode']>;
34
+ abstract close(): Promise<void>;
35
+ }
36
+ export { BaseExchangeClient };
37
+ //# sourceMappingURL=BaseExchangeClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseExchangeClient.d.ts","sourceRoot":"","sources":["../../src/exchanges/BaseExchangeClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseExchangeClient = void 0;
4
+ const klineLoader_1 = require("../utils/klineLoader");
5
+ const precision_1 = require("../precision/precision");
6
+ class BaseExchangeClient {
7
+ apiKey;
8
+ tradeSymbols = new Map();
9
+ logger;
10
+ onNotify;
11
+ constructor(args) {
12
+ this.apiKey = args.config.apiKey;
13
+ this.logger = args.logger;
14
+ this.onNotify = args.onNotify;
15
+ }
16
+ async loadTradeSymbols(shouldReload = false) {
17
+ if (!shouldReload && this.tradeSymbols.size > 0) {
18
+ return this.tradeSymbols;
19
+ }
20
+ this.logger.info(`Loading ${this.marketLabel} trade symbols`);
21
+ const normalized = await this.fetchAndNormalizeTradeSymbols();
22
+ for (const [symbol, tradeSymbol] of normalized) {
23
+ this.tradeSymbols.set(symbol, tradeSymbol);
24
+ }
25
+ this.logger.info(`Loaded ${this.tradeSymbols.size} ${this.marketLabel} trade symbols`);
26
+ return this.tradeSymbols;
27
+ }
28
+ async fetchTickers() {
29
+ this.logger.debug(`Fetching ${this.marketLabel} tickers`);
30
+ return this.fetchAndNormalizeTickers();
31
+ }
32
+ async fetchKlines(symbol, interval, options) {
33
+ this.logger.debug(`Fetching klines for ${symbol} ${interval}`);
34
+ return this.fetchAndNormalizeKlines(symbol, interval, options);
35
+ }
36
+ async fetchAllKlines(symbolList, interval) {
37
+ return (0, klineLoader_1.loadKlinesInChunks)({
38
+ fetchKlines: (symbol) => this.fetchKlines(symbol, interval, { limit: this.klineLimit }),
39
+ symbolList,
40
+ logger: this.logger,
41
+ });
42
+ }
43
+ async fetchBalance() {
44
+ this.logger.debug('Fetching balance');
45
+ return this.fetchAndNormalizeBalance();
46
+ }
47
+ async *watchTickers() {
48
+ this.getPublicStream().subscribeAllTickers(() => { });
49
+ yield await this.fetchTickers();
50
+ }
51
+ subscribeKlines(args) {
52
+ this.getPublicStream().subscribeKlines(args.symbol, args.interval, args.handler);
53
+ }
54
+ unsubscribeKlines(args) {
55
+ this.getPublicStream().unsubscribeKlines(args.symbol, args.interval, args.handler);
56
+ }
57
+ amountToPrecision(symbol, amount) {
58
+ const tradeSymbol = this.tradeSymbols.get(symbol);
59
+ if (!tradeSymbol) {
60
+ this.logger.warn(`TradeSymbol ${symbol} not found, using raw amount`);
61
+ return String(amount);
62
+ }
63
+ return (0, precision_1.amountToPrecision)(tradeSymbol, amount);
64
+ }
65
+ priceToPrecision(symbol, price) {
66
+ const tradeSymbol = this.tradeSymbols.get(symbol);
67
+ if (!tradeSymbol) {
68
+ this.logger.warn(`TradeSymbol ${symbol} not found, using raw price`);
69
+ return String(price);
70
+ }
71
+ return (0, precision_1.priceToPrecision)(tradeSymbol, price);
72
+ }
73
+ getMinOrderQty(symbol) {
74
+ const tradeSymbol = this.tradeSymbols.get(symbol);
75
+ if (!tradeSymbol) {
76
+ this.logger.warn(`TradeSymbol ${symbol} not found, returning 0 for minOrderQty`);
77
+ return 0;
78
+ }
79
+ return parseFloat(tradeSymbol.filter.minQty);
80
+ }
81
+ getMinNotional(symbol) {
82
+ const tradeSymbol = this.tradeSymbols.get(symbol);
83
+ if (!tradeSymbol) {
84
+ this.logger.warn(`TradeSymbol ${symbol} not found, returning 0 for minNotional`);
85
+ return 0;
86
+ }
87
+ return parseFloat(tradeSymbol.filter.minNotional);
88
+ }
89
+ }
90
+ exports.BaseExchangeClient = BaseExchangeClient;
91
+ //# sourceMappingURL=BaseExchangeClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseExchangeClient.js","sourceRoot":"","sources":["../../src/exchanges/BaseExchangeClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { CreateOrderWebSocketArgs, ExchangeArgs, FetchPageWithLimitArgs } from '../types/exchange';
2
+ import type { Kline, KlineInterval, TradeSymbolBySymbol, TickerBySymbol, BalanceByAsset, Order } from '../types/common';
3
+ import type { PublicStreamLike } from '../types/stream';
4
+ import type { BinanceBaseHttpClient } from '../http/BinanceBaseHttpClient';
5
+ import { BinanceUserDataStream } from '../ws/BinanceUserDataStream';
6
+ import { BaseExchangeClient } from './BaseExchangeClient';
7
+ declare abstract class BinanceBaseClient<T extends BinanceBaseHttpClient> extends BaseExchangeClient {
8
+ protected readonly httpClient: T;
9
+ protected userDataStream: BinanceUserDataStream | null;
10
+ private readonly publicStream;
11
+ constructor(args: ExchangeArgs, httpClient: T, publicStream: PublicStreamLike);
12
+ protected getPublicStream(): PublicStreamLike;
13
+ protected fetchAndNormalizeTradeSymbols(): Promise<TradeSymbolBySymbol>;
14
+ protected fetchAndNormalizeTickers(): Promise<TickerBySymbol>;
15
+ protected fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?: FetchPageWithLimitArgs): Promise<Kline[]>;
16
+ protected fetchAndNormalizeBalance(): Promise<BalanceByAsset>;
17
+ createOrderWebSocket(args: CreateOrderWebSocketArgs): Promise<Order>;
18
+ close(): Promise<void>;
19
+ }
20
+ export { BinanceBaseClient };
21
+ //# sourceMappingURL=BinanceBaseClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinanceBaseClient.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceBaseClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,KAAK,EACN,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAQ3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,uBAAe,iBAAiB,CAAC,CAAC,SAAS,qBAAqB,CAAE,SAAQ,kBAAkB;IAC1F,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACjC,SAAS,CAAC,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IAE9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;gBAEpC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,gBAAgB;IAM7E,SAAS,CAAC,eAAe,IAAI,gBAAgB;cAI7B,6BAA6B,IAAI,OAAO,CAAC,mBAAmB,CAAC;cAM7D,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;cAMnD,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;cAMH,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;IAM7D,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,CAAC;IA0BpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}