@solncebro/exchange-engine 0.1.1 → 0.1.2

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 (125) hide show
  1. package/CHANGELOG.md +17 -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 +5 -1
  10. package/dist/constants/binance.d.ts.map +1 -1
  11. package/dist/constants/binance.js +7 -4
  12. package/dist/constants/binance.js.map +1 -1
  13. package/dist/constants/bybit.d.ts +3 -5
  14. package/dist/constants/bybit.d.ts.map +1 -1
  15. package/dist/constants/bybit.js +6 -9
  16. package/dist/constants/bybit.js.map +1 -1
  17. package/dist/exchanges/BaseExchangeClient.d.ts +36 -0
  18. package/dist/exchanges/BaseExchangeClient.d.ts.map +1 -0
  19. package/dist/exchanges/BaseExchangeClient.js +91 -0
  20. package/dist/exchanges/BaseExchangeClient.js.map +1 -0
  21. package/dist/exchanges/BinanceBaseClient.d.ts +21 -0
  22. package/dist/exchanges/BinanceBaseClient.d.ts.map +1 -0
  23. package/dist/exchanges/BinanceBaseClient.js +65 -0
  24. package/dist/exchanges/BinanceBaseClient.js.map +1 -0
  25. package/dist/exchanges/BinanceFutures.d.ts +7 -21
  26. package/dist/exchanges/BinanceFutures.d.ts.map +1 -1
  27. package/dist/exchanges/BinanceFutures.js +17 -94
  28. package/dist/exchanges/BinanceFutures.js.map +1 -1
  29. package/dist/exchanges/BinanceSpot.d.ts +7 -21
  30. package/dist/exchanges/BinanceSpot.d.ts.map +1 -1
  31. package/dist/exchanges/BinanceSpot.js +14 -95
  32. package/dist/exchanges/BinanceSpot.js.map +1 -1
  33. package/dist/exchanges/BybitLinear.d.ts +15 -18
  34. package/dist/exchanges/BybitLinear.d.ts.map +1 -1
  35. package/dist/exchanges/BybitLinear.js +58 -67
  36. package/dist/exchanges/BybitLinear.js.map +1 -1
  37. package/dist/exchanges/BybitSpot.d.ts +13 -17
  38. package/dist/exchanges/BybitSpot.d.ts.map +1 -1
  39. package/dist/exchanges/BybitSpot.js +36 -62
  40. package/dist/exchanges/BybitSpot.js.map +1 -1
  41. package/dist/http/BaseHttpClient.d.ts +10 -1
  42. package/dist/http/BaseHttpClient.d.ts.map +1 -1
  43. package/dist/http/BaseHttpClient.js +27 -5
  44. package/dist/http/BaseHttpClient.js.map +1 -1
  45. package/dist/http/BinanceBaseHttpClient.d.ts +49 -0
  46. package/dist/http/BinanceBaseHttpClient.d.ts.map +1 -0
  47. package/dist/http/BinanceBaseHttpClient.js +86 -0
  48. package/dist/http/BinanceBaseHttpClient.js.map +1 -0
  49. package/dist/http/BinanceFuturesHttpClient.d.ts +11 -40
  50. package/dist/http/BinanceFuturesHttpClient.d.ts.map +1 -1
  51. package/dist/http/BinanceFuturesHttpClient.js +36 -180
  52. package/dist/http/BinanceFuturesHttpClient.js.map +1 -1
  53. package/dist/http/BinanceSpotHttpClient.d.ts +5 -24
  54. package/dist/http/BinanceSpotHttpClient.d.ts.map +1 -1
  55. package/dist/http/BinanceSpotHttpClient.js +15 -90
  56. package/dist/http/BinanceSpotHttpClient.js.map +1 -1
  57. package/dist/http/BybitHttpClient.d.ts +81 -134
  58. package/dist/http/BybitHttpClient.d.ts.map +1 -1
  59. package/dist/http/BybitHttpClient.js +61 -94
  60. package/dist/http/BybitHttpClient.js.map +1 -1
  61. package/dist/index.d.ts +3 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +6 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/normalizers/binanceNormalizer.d.ts +2 -1
  66. package/dist/normalizers/binanceNormalizer.d.ts.map +1 -1
  67. package/dist/normalizers/binanceNormalizer.js +8 -5
  68. package/dist/normalizers/binanceNormalizer.js.map +1 -1
  69. package/dist/normalizers/bybitNormalizer.d.ts +7 -1
  70. package/dist/normalizers/bybitNormalizer.d.ts.map +1 -1
  71. package/dist/normalizers/bybitNormalizer.js +21 -5
  72. package/dist/normalizers/bybitNormalizer.js.map +1 -1
  73. package/dist/types/common.d.ts +4 -2
  74. package/dist/types/common.d.ts.map +1 -1
  75. package/dist/types/exchange.d.ts +6 -2
  76. package/dist/types/exchange.d.ts.map +1 -1
  77. package/dist/types/stream.d.ts +10 -0
  78. package/dist/types/stream.d.ts.map +1 -0
  79. package/dist/types/stream.js +3 -0
  80. package/dist/types/stream.js.map +1 -0
  81. package/dist/utils/crypto.d.ts +2 -0
  82. package/dist/utils/crypto.d.ts.map +1 -0
  83. package/dist/utils/crypto.js +11 -0
  84. package/dist/utils/crypto.js.map +1 -0
  85. package/dist/utils/httpParams.d.ts +3 -0
  86. package/dist/utils/httpParams.d.ts.map +1 -0
  87. package/dist/utils/httpParams.js +15 -0
  88. package/dist/utils/httpParams.js.map +1 -0
  89. package/dist/utils/klineLoader.d.ts +10 -0
  90. package/dist/utils/klineLoader.d.ts.map +1 -0
  91. package/dist/utils/klineLoader.js +19 -0
  92. package/dist/utils/klineLoader.js.map +1 -0
  93. package/dist/ws/BinanceFuturesPublicStream.d.ts +6 -5
  94. package/dist/ws/BinanceFuturesPublicStream.d.ts.map +1 -1
  95. package/dist/ws/BinanceFuturesPublicStream.js +27 -56
  96. package/dist/ws/BinanceFuturesPublicStream.js.map +1 -1
  97. package/dist/ws/BinanceSpotPublicStream.d.ts +7 -5
  98. package/dist/ws/BinanceSpotPublicStream.d.ts.map +1 -1
  99. package/dist/ws/BinanceSpotPublicStream.js +17 -22
  100. package/dist/ws/BinanceSpotPublicStream.js.map +1 -1
  101. package/dist/ws/BinanceUserDataStream.d.ts +1 -1
  102. package/dist/ws/BinanceUserDataStream.d.ts.map +1 -1
  103. package/dist/ws/BinanceUserDataStream.js +7 -7
  104. package/dist/ws/BinanceUserDataStream.js.map +1 -1
  105. package/dist/ws/BybitPrivateStream.d.ts +1 -1
  106. package/dist/ws/BybitPrivateStream.d.ts.map +1 -1
  107. package/dist/ws/BybitPrivateStream.js +11 -28
  108. package/dist/ws/BybitPrivateStream.js.map +1 -1
  109. package/dist/ws/BybitPublicStream.d.ts +5 -4
  110. package/dist/ws/BybitPublicStream.d.ts.map +1 -1
  111. package/dist/ws/BybitPublicStream.js +14 -19
  112. package/dist/ws/BybitPublicStream.js.map +1 -1
  113. package/dist/ws/BybitTradeStream.d.ts +4 -2
  114. package/dist/ws/BybitTradeStream.d.ts.map +1 -1
  115. package/dist/ws/BybitTradeStream.js +24 -40
  116. package/dist/ws/BybitTradeStream.js.map +1 -1
  117. package/dist/ws/binanceWsUtils.d.ts +4 -0
  118. package/dist/ws/binanceWsUtils.d.ts.map +1 -0
  119. package/dist/ws/binanceWsUtils.js +13 -0
  120. package/dist/ws/binanceWsUtils.js.map +1 -0
  121. package/dist/ws/bybitWsUtils.d.ts +29 -0
  122. package/dist/ws/bybitWsUtils.d.ts.map +1 -0
  123. package/dist/ws/bybitWsUtils.js +29 -0
  124. package/dist/ws/bybitWsUtils.js.map +1 -0
  125. package/package.json +17 -3
@@ -5,74 +5,25 @@ const BinanceFuturesHttpClient_1 = require("../http/BinanceFuturesHttpClient");
5
5
  const binanceNormalizer_1 = require("../normalizers/binanceNormalizer");
6
6
  const BinanceFuturesPublicStream_1 = require("../ws/BinanceFuturesPublicStream");
7
7
  const binance_1 = require("../constants/binance");
8
- const precision_1 = require("../precision/precision");
9
- class BinanceFutures {
10
- apiKey;
11
- markets = new Map();
12
- httpClient;
13
- publicStream;
14
- userDataStream = null;
15
- logger;
16
- onNotify;
8
+ const BinanceBaseClient_1 = require("./BinanceBaseClient");
9
+ class BinanceFutures extends BinanceBaseClient_1.BinanceBaseClient {
10
+ marketLabel = 'futures';
11
+ klineLimit = binance_1.BINANCE_KLINE_LIMIT_FUTURES;
17
12
  constructor(args) {
18
- this.apiKey = args.config.apiKey;
19
- this.logger = args.logger;
20
- this.onNotify = args.onNotify;
21
- this.httpClient = new BinanceFuturesHttpClient_1.BinanceFuturesHttpClient(args.config.apiKey, args.config.secret, args.logger);
22
- this.publicStream = new BinanceFuturesPublicStream_1.BinanceFuturesPublicStream(args.logger, args.onNotify);
23
- }
24
- async loadMarkets(reload = false) {
25
- if (!reload && this.markets.size > 0) {
26
- return this.markets;
27
- }
28
- this.logger.info('Loading futures markets');
29
- const raw = await this.httpClient.fetchExchangeInfo();
30
- const normalized = (0, binanceNormalizer_1.normalizeBinanceMarkets)(raw);
31
- for (const [symbol, market] of normalized) {
32
- this.markets.set(symbol, market);
33
- }
34
- this.logger.info(`Loaded ${this.markets.size} futures markets`);
35
- return this.markets;
36
- }
37
- async fetchTickers() {
38
- this.logger.debug('Fetching futures tickers');
39
- const rawTickerList = await this.httpClient.fetchTickers();
40
- return (0, binanceNormalizer_1.normalizeBinanceTickers)(rawTickerList);
41
- }
42
- async fetchKlines(symbol, interval, options) {
43
- this.logger.debug(`Fetching klines for ${symbol} ${interval}`);
44
- const binanceInterval = binance_1.BINANCE_KLINE_INTERVAL[interval];
45
- const rawKlineList = await this.httpClient.fetchKlines(symbol, binanceInterval, {
46
- startTime: options?.startTime,
47
- endTime: options?.endTime,
48
- limit: options?.limit,
13
+ const baseUrl = args.config.demoMode === true
14
+ ? binance_1.BINANCE_DEMO_FUTURES_BASE_URL
15
+ : binance_1.BINANCE_FUTURES_BASE_URL;
16
+ const wsCombinedUrl = args.config.demoMode === true
17
+ ? binance_1.BINANCE_DEMO_FUTURES_WS_COMBINED_URL
18
+ : binance_1.BINANCE_FUTURES_WS_COMBINED_URL;
19
+ const httpClient = new BinanceFuturesHttpClient_1.BinanceFuturesHttpClient({
20
+ baseUrl,
21
+ apiKey: args.config.apiKey,
22
+ secret: args.config.secret,
23
+ logger: args.logger,
49
24
  });
50
- return (0, binanceNormalizer_1.normalizeBinanceKlines)(rawKlineList);
51
- }
52
- async *watchTickers() {
53
- this.publicStream.subscribeAllTickers(() => { });
54
- yield await this.fetchTickers();
55
- }
56
- subscribeKlines(args) {
57
- this.publicStream.subscribeKlines(args.symbol, args.interval, args.handler);
58
- }
59
- unsubscribeKlines(args) {
60
- this.publicStream.unsubscribeKlines(args.symbol, args.interval, args.handler);
61
- }
62
- async createOrderWs(args) {
63
- this.logger.debug(`Creating order via REST: ${args.symbol}`);
64
- const orderParams = {
65
- symbol: args.symbol,
66
- side: args.side.toUpperCase(),
67
- type: args.type.toUpperCase(),
68
- quantity: this.amountToPrecision(args.symbol, args.amount),
69
- ...args.params,
70
- };
71
- if (args.price > 0) {
72
- orderParams.price = this.priceToPrecision(args.symbol, args.price);
73
- }
74
- const raw = await this.httpClient.createOrder(orderParams);
75
- return (0, binanceNormalizer_1.normalizeBinanceOrder)(raw);
25
+ const publicStream = new BinanceFuturesPublicStream_1.BinanceFuturesPublicStream(wsCombinedUrl, args.logger, args.onNotify);
26
+ super(args, httpClient, publicStream);
76
27
  }
77
28
  async fetchPosition(symbol) {
78
29
  this.logger.debug(`Fetching position for ${symbol}`);
@@ -92,34 +43,6 @@ class BinanceFutures {
92
43
  const marginType = marginMode === 'isolated' ? 'ISOLATED' : 'CROSSED';
93
44
  await this.httpClient.setMarginType(symbol, marginType);
94
45
  }
95
- async fetchBalance() {
96
- this.logger.debug('Fetching balance');
97
- const raw = await this.httpClient.fetchAccount();
98
- return (0, binanceNormalizer_1.normalizeBinanceBalance)(raw);
99
- }
100
- amountToPrecision(symbol, amount) {
101
- const market = this.markets.get(symbol);
102
- if (!market) {
103
- this.logger.warn(`Market ${symbol} not found, using raw amount`);
104
- return String(amount);
105
- }
106
- return (0, precision_1.amountToPrecision)(market, amount);
107
- }
108
- priceToPrecision(symbol, price) {
109
- const market = this.markets.get(symbol);
110
- if (!market) {
111
- this.logger.warn(`Market ${symbol} not found, using raw price`);
112
- return String(price);
113
- }
114
- return (0, precision_1.priceToPrecision)(market, price);
115
- }
116
- async close() {
117
- this.logger.info('Closing Binance Futures connection');
118
- if (this.userDataStream) {
119
- this.userDataStream.close();
120
- }
121
- this.publicStream.close();
122
- }
123
46
  }
124
47
  exports.BinanceFutures = BinanceFutures;
125
48
  //# sourceMappingURL=BinanceFutures.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BinanceFutures.js","sourceRoot":"","sources":["../../src/exchanges/BinanceFutures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BinanceFutures.js","sourceRoot":"","sources":["../../src/exchanges/BinanceFutures.ts"],"names":[],"mappings":";;;AAEA,+EAA4E;AAC5E,wEAA4E;AAC5E,iFAA8E;AAC9E,kDAM8B;AAC9B,2DAAwD;AAExD,MAAM,cAAe,SAAQ,qCAA2C;IACnD,WAAW,GAAG,SAAS,CAAC;IACxB,UAAU,GAAG,qCAA2B,CAAC;IAE5D,YAAY,IAAkB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI;YAC3C,CAAC,CAAC,uCAA6B;YAC/B,CAAC,CAAC,kCAAwB,CAAC;QAE7B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI;YACjD,CAAC,CAAC,8CAAoC;YACtC,CAAC,CAAC,yCAA+B,CAAC;QAEpC,MAAM,UAAU,GAAG,IAAI,mDAAwB,CAAC;YAC9C,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,uDAA0B,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE/F,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,IAAA,4CAAwB,EAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,MAAc;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,QAAQ,SAAS,MAAM,EAAE,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,UAAsB,EAAE,MAAc;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,UAAU,QAAQ,MAAM,EAAE,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;CACF;AAEQ,wCAAc"}
@@ -1,28 +1,14 @@
1
- import type { ExchangeClient, ExchangeArgs, CreateOrderWsArgs, FetchKlinesArgs, SubscribeKlinesArgs } from '../types/exchange';
2
- import type { Kline, KlineInterval, MarketBySymbol, TickerBySymbol, BalanceByAsset, Position, Order, MarginMode } from '../types/common';
3
- declare class BinanceSpot implements ExchangeClient {
4
- readonly apiKey: string;
5
- readonly markets: MarketBySymbol;
6
- private httpClient;
7
- private publicStream;
8
- private userDataStream;
9
- private logger;
10
- private onNotify?;
1
+ import type { ExchangeArgs } from '../types/exchange';
2
+ import type { Position, MarginMode } from '../types/common';
3
+ import { BinanceSpotHttpClient } from '../http/BinanceSpotHttpClient';
4
+ import { BinanceBaseClient } from './BinanceBaseClient';
5
+ declare class BinanceSpot extends BinanceBaseClient<BinanceSpotHttpClient> {
6
+ protected readonly marketLabel = "spot";
7
+ protected readonly klineLimit = 1000;
11
8
  constructor(args: ExchangeArgs);
12
- loadMarkets(reload?: boolean): Promise<MarketBySymbol>;
13
- fetchTickers(): Promise<TickerBySymbol>;
14
- fetchKlines(symbol: string, interval: KlineInterval, options?: FetchKlinesArgs): Promise<Kline[]>;
15
- watchTickers(): AsyncGenerator<TickerBySymbol>;
16
- subscribeKlines(args: SubscribeKlinesArgs): void;
17
- unsubscribeKlines(args: SubscribeKlinesArgs): void;
18
- createOrderWs(args: CreateOrderWsArgs): Promise<Order>;
19
9
  fetchPosition(_symbol: string): Promise<Position>;
20
10
  setLeverage(_leverage: number, _symbol: string): Promise<void>;
21
11
  setMarginMode(_marginMode: MarginMode, _symbol: string): Promise<void>;
22
- fetchBalance(): Promise<BalanceByAsset>;
23
- amountToPrecision(symbol: string, amount: number): string;
24
- priceToPrecision(symbol: string, price: number): string;
25
- close(): Promise<void>;
26
12
  }
27
13
  export { BinanceSpot };
28
14
  //# sourceMappingURL=BinanceSpot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BinanceSpot.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceSpot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAEV,KAAK,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,QAAQ,EACR,KAAK,EACL,UAAU,EACX,MAAM,iBAAiB,CAAC;AAoBzB,cAAM,WAAY,YAAW,cAAc;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAa;IAE7C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAA4C;gBAEjD,IAAI,EAAE,YAAY;IAcxB,WAAW,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAmB7D,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAOvC,WAAW,CACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,KAAK,EAAE,CAAC;IAYZ,YAAY,IAAI,cAAc,CAAC,cAAc,CAAC;IAMrD,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAIhD,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAI5C,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAoBtD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIjD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAO7C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAYzD,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAYjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"BinanceSpot.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceSpot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAQtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAM,WAAY,SAAQ,iBAAiB,CAAC,qBAAqB,CAAC;IAChE,SAAS,CAAC,QAAQ,CAAC,WAAW,UAAU;IACxC,SAAS,CAAC,QAAQ,CAAC,UAAU,QAA4B;gBAE7C,IAAI,EAAE,YAAY;IAiBxB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIjD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7E;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -2,77 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BinanceSpot = void 0;
4
4
  const BinanceSpotHttpClient_1 = require("../http/BinanceSpotHttpClient");
5
- const binanceNormalizer_1 = require("../normalizers/binanceNormalizer");
6
5
  const BinanceSpotPublicStream_1 = require("../ws/BinanceSpotPublicStream");
7
6
  const binance_1 = require("../constants/binance");
8
- const precision_1 = require("../precision/precision");
9
- class BinanceSpot {
10
- apiKey;
11
- markets = new Map();
12
- httpClient;
13
- publicStream;
14
- userDataStream = null;
15
- logger;
16
- onNotify;
7
+ const BinanceBaseClient_1 = require("./BinanceBaseClient");
8
+ class BinanceSpot extends BinanceBaseClient_1.BinanceBaseClient {
9
+ marketLabel = 'spot';
10
+ klineLimit = binance_1.BINANCE_KLINE_LIMIT_SPOT;
17
11
  constructor(args) {
18
- this.apiKey = args.config.apiKey;
19
- this.logger = args.logger;
20
- this.onNotify = args.onNotify;
21
- this.httpClient = new BinanceSpotHttpClient_1.BinanceSpotHttpClient(args.config.apiKey, args.config.secret, args.logger);
22
- this.publicStream = new BinanceSpotPublicStream_1.BinanceSpotPublicStream(args.logger, args.onNotify);
23
- }
24
- async loadMarkets(reload = false) {
25
- if (!reload && this.markets.size > 0) {
26
- return this.markets;
27
- }
28
- this.logger.info('Loading spot markets');
29
- const raw = await this.httpClient.fetchExchangeInfo();
30
- const normalized = (0, binanceNormalizer_1.normalizeBinanceMarkets)(raw);
31
- for (const [symbol, market] of normalized) {
32
- this.markets.set(symbol, market);
33
- }
34
- this.logger.info(`Loaded ${this.markets.size} spot markets`);
35
- return this.markets;
36
- }
37
- async fetchTickers() {
38
- this.logger.debug('Fetching spot tickers');
39
- const rawTickerList = await this.httpClient.fetchTickers();
40
- return (0, binanceNormalizer_1.normalizeBinanceTickers)(rawTickerList);
41
- }
42
- async fetchKlines(symbol, interval, options) {
43
- this.logger.debug(`Fetching klines for ${symbol} ${interval}`);
44
- const binanceInterval = binance_1.BINANCE_KLINE_INTERVAL[interval];
45
- const rawKlineList = await this.httpClient.fetchKlines(symbol, binanceInterval, {
46
- startTime: options?.startTime,
47
- endTime: options?.endTime,
48
- limit: options?.limit,
12
+ const baseUrl = args.config.demoMode === true
13
+ ? binance_1.BINANCE_DEMO_SPOT_BASE_URL
14
+ : binance_1.BINANCE_SPOT_BASE_URL;
15
+ const httpClient = new BinanceSpotHttpClient_1.BinanceSpotHttpClient({
16
+ baseUrl,
17
+ apiKey: args.config.apiKey,
18
+ secret: args.config.secret,
19
+ logger: args.logger,
49
20
  });
50
- return (0, binanceNormalizer_1.normalizeBinanceKlines)(rawKlineList);
51
- }
52
- async *watchTickers() {
53
- this.publicStream.subscribeAllTickers(() => { });
54
- yield await this.fetchTickers();
55
- }
56
- subscribeKlines(args) {
57
- this.publicStream.subscribeKlines(args.symbol, args.interval, args.handler);
58
- }
59
- unsubscribeKlines(args) {
60
- this.publicStream.unsubscribeKlines(args.symbol, args.interval, args.handler);
61
- }
62
- async createOrderWs(args) {
63
- this.logger.debug(`Creating order via REST: ${args.symbol}`);
64
- const orderParams = {
65
- symbol: args.symbol,
66
- side: args.side.toUpperCase(),
67
- type: args.type.toUpperCase(),
68
- quantity: this.amountToPrecision(args.symbol, args.amount),
69
- ...args.params,
70
- };
71
- if (args.price > 0) {
72
- orderParams.price = this.priceToPrecision(args.symbol, args.price);
73
- }
74
- const raw = await this.httpClient.createOrder(orderParams);
75
- return (0, binanceNormalizer_1.normalizeBinanceOrder)(raw);
21
+ const publicStream = new BinanceSpotPublicStream_1.BinanceSpotPublicStream(binance_1.BINANCE_SPOT_WS_STREAM_URL, args.logger, args.onNotify);
22
+ super(args, httpClient, publicStream);
76
23
  }
77
24
  async fetchPosition(_symbol) {
78
25
  throw new Error('Not supported for spot market');
@@ -83,34 +30,6 @@ class BinanceSpot {
83
30
  async setMarginMode(_marginMode, _symbol) {
84
31
  throw new Error('Not supported for spot market');
85
32
  }
86
- async fetchBalance() {
87
- this.logger.debug('Fetching balance');
88
- const raw = await this.httpClient.fetchAccount();
89
- return (0, binanceNormalizer_1.normalizeBinanceBalance)(raw);
90
- }
91
- amountToPrecision(symbol, amount) {
92
- const market = this.markets.get(symbol);
93
- if (!market) {
94
- this.logger.warn(`Market ${symbol} not found, using raw amount`);
95
- return String(amount);
96
- }
97
- return (0, precision_1.amountToPrecision)(market, amount);
98
- }
99
- priceToPrecision(symbol, price) {
100
- const market = this.markets.get(symbol);
101
- if (!market) {
102
- this.logger.warn(`Market ${symbol} not found, using raw price`);
103
- return String(price);
104
- }
105
- return (0, precision_1.priceToPrecision)(market, price);
106
- }
107
- async close() {
108
- this.logger.info('Closing Binance Spot connection');
109
- if (this.userDataStream) {
110
- this.userDataStream.close();
111
- }
112
- this.publicStream.close();
113
- }
114
33
  }
115
34
  exports.BinanceSpot = BinanceSpot;
116
35
  //# sourceMappingURL=BinanceSpot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BinanceSpot.js","sourceRoot":"","sources":["../../src/exchanges/BinanceSpot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BinanceSpot.js","sourceRoot":"","sources":["../../src/exchanges/BinanceSpot.ts"],"names":[],"mappings":";;;AAEA,yEAAsE;AACtE,2EAAwE;AACxE,kDAK8B;AAC9B,2DAAwD;AAExD,MAAM,WAAY,SAAQ,qCAAwC;IAC7C,WAAW,GAAG,MAAM,CAAC;IACrB,UAAU,GAAG,kCAAwB,CAAC;IAEzD,YAAY,IAAkB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI;YAC3C,CAAC,CAAC,oCAA0B;YAC5B,CAAC,CAAC,+BAAqB,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,6CAAqB,CAAC;YAC3C,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,iDAAuB,CAAC,oCAA0B,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe;QAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAuB,EAAE,OAAe;QAC1D,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;CACF;AAEQ,kCAAW"}
@@ -1,27 +1,24 @@
1
- import type { ExchangeClient, ExchangeArgs, CreateOrderWsArgs, FetchKlinesArgs, SubscribeKlinesArgs } from '../types/exchange';
1
+ import type { CreateOrderWsArgs, ExchangeArgs, FetchKlinesArgs } from '../types/exchange';
2
2
  import type { Kline, KlineInterval, MarketBySymbol, TickerBySymbol, BalanceByAsset, Position, Order, MarginMode } from '../types/common';
3
- declare class BybitLinear implements ExchangeClient {
4
- readonly apiKey: string;
5
- readonly markets: MarketBySymbol;
6
- private httpClient;
7
- private publicStream;
8
- private tradeStream;
9
- private logger;
10
- private onNotify?;
3
+ import type { PublicStreamLike } from '../types/stream';
4
+ import { BaseExchangeClient } from './BaseExchangeClient';
5
+ declare class BybitLinear extends BaseExchangeClient {
6
+ protected readonly marketLabel = "linear";
7
+ protected readonly klineLimit = 200;
8
+ private readonly demoMode;
9
+ private readonly httpClient;
10
+ private readonly publicStream;
11
+ private readonly tradeStream;
11
12
  constructor(args: ExchangeArgs);
12
- loadMarkets(reload?: boolean): Promise<MarketBySymbol>;
13
- fetchTickers(): Promise<TickerBySymbol>;
14
- fetchKlines(symbol: string, interval: KlineInterval, options?: FetchKlinesArgs): Promise<Kline[]>;
15
- watchTickers(): AsyncGenerator<TickerBySymbol>;
16
- subscribeKlines(args: SubscribeKlinesArgs): void;
17
- unsubscribeKlines(args: SubscribeKlinesArgs): void;
13
+ protected getPublicStream(): PublicStreamLike;
14
+ protected fetchAndNormalizeMarkets(): Promise<MarketBySymbol>;
15
+ protected fetchAndNormalizeTickers(): Promise<TickerBySymbol>;
16
+ protected fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?: FetchKlinesArgs): Promise<Kline[]>;
17
+ protected fetchAndNormalizeBalance(): Promise<BalanceByAsset>;
18
18
  createOrderWs(args: CreateOrderWsArgs): Promise<Order>;
19
19
  fetchPosition(symbol: string): Promise<Position>;
20
20
  setLeverage(leverage: number, symbol: string): Promise<void>;
21
21
  setMarginMode(marginMode: MarginMode, symbol: string): Promise<void>;
22
- fetchBalance(): Promise<BalanceByAsset>;
23
- amountToPrecision(symbol: string, amount: number): string;
24
- priceToPrecision(symbol: string, price: number): string;
25
22
  close(): Promise<void>;
26
23
  }
27
24
  export { BybitLinear };
@@ -1 +1 @@
1
- {"version":3,"file":"BybitLinear.d.ts","sourceRoot":"","sources":["../../src/exchanges/BybitLinear.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAEV,KAAK,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,QAAQ,EACR,KAAK,EACL,UAAU,EACX,MAAM,iBAAiB,CAAC;AAsBzB,cAAM,WAAY,YAAW,cAAc;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAa;IAE7C,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAA4C;gBAEjD,IAAI,EAAE,YAAY;IAyBxB,WAAW,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAqB7D,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAOvC,WAAW,CACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,KAAK,EAAE,CAAC;IAYZ,YAAY,IAAI,cAAc,CAAC,cAAc,CAAC;IAMrD,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAIhD,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAI5C,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAmBtD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAYhD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpE,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAO7C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAYzD,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAYjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"BybitLinear.d.ts","sourceRoot":"","sources":["../../src/exchanges/BybitLinear.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,QAAQ,EACR,KAAK,EACL,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAoBxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,cAAM,WAAY,SAAQ,kBAAkB;IAC1C,SAAS,CAAC,QAAQ,CAAC,WAAW,YAAY;IAC1C,SAAS,CAAC,QAAQ,CAAC,UAAU,OAAO;IAEpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;gBAE1C,IAAI,EAAE,YAAY;IAkC9B,SAAS,CAAC,eAAe,IAAI,gBAAgB;cAI7B,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;cAMnD,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;cAMnD,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,KAAK,EAAE,CAAC;cAYH,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;IAM7D,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAyBtD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAYhD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -6,68 +6,66 @@ const bybitNormalizer_1 = require("../normalizers/bybitNormalizer");
6
6
  const BybitPublicStream_1 = require("../ws/BybitPublicStream");
7
7
  const BybitTradeStream_1 = require("../ws/BybitTradeStream");
8
8
  const bybit_1 = require("../constants/bybit");
9
- const precision_1 = require("../precision/precision");
10
- class BybitLinear {
11
- apiKey;
12
- markets = new Map();
9
+ const BaseExchangeClient_1 = require("./BaseExchangeClient");
10
+ class BybitLinear extends BaseExchangeClient_1.BaseExchangeClient {
11
+ marketLabel = 'linear';
12
+ klineLimit = 200;
13
+ demoMode;
13
14
  httpClient;
14
15
  publicStream;
15
16
  tradeStream;
16
- logger;
17
- onNotify;
18
17
  constructor(args) {
19
- this.apiKey = args.config.apiKey;
20
- this.logger = args.logger;
21
- this.onNotify = args.onNotify;
22
- this.httpClient = new BybitHttpClient_1.BybitHttpClient(args.config.apiKey, args.config.secret, args.logger);
23
- this.publicStream = new BybitPublicStream_1.BybitPublicStream(bybit_1.BYBIT_PUBLIC_LINEAR_WS_URL, args.logger, args.onNotify);
24
- this.tradeStream = new BybitTradeStream_1.BybitTradeStream({
18
+ super(args);
19
+ const demo = args.config.demoMode === true;
20
+ this.demoMode = demo;
21
+ const baseUrl = demo ? bybit_1.BYBIT_DEMO_BASE_URL : bybit_1.BYBIT_BASE_URL;
22
+ const publicWsUrl = demo ? bybit_1.BYBIT_DEMO_PUBLIC_LINEAR_WS_URL : bybit_1.BYBIT_PUBLIC_LINEAR_WS_URL;
23
+ this.httpClient = new BybitHttpClient_1.BybitHttpClient({
24
+ baseUrl,
25
25
  apiKey: args.config.apiKey,
26
26
  secret: args.config.secret,
27
27
  logger: args.logger,
28
- onNotify: args.onNotify,
29
28
  });
30
- }
31
- async loadMarkets(reload = false) {
32
- if (!reload && this.markets.size > 0) {
33
- return this.markets;
29
+ this.publicStream = new BybitPublicStream_1.BybitPublicStream(publicWsUrl, args.logger, args.onNotify);
30
+ if (demo) {
31
+ this.tradeStream = null;
34
32
  }
35
- this.logger.info('Loading linear markets');
36
- const raw = await this.httpClient.fetchInstrumentsInfo('linear');
37
- const normalized = (0, bybitNormalizer_1.normalizeBybitMarkets)(raw.result.list);
38
- for (const [symbol, market] of normalized) {
39
- this.markets.set(symbol, market);
33
+ else {
34
+ this.tradeStream = new BybitTradeStream_1.BybitTradeStream({
35
+ url: bybit_1.BYBIT_TRADE_WS_URL,
36
+ apiKey: args.config.apiKey,
37
+ secret: args.config.secret,
38
+ logger: args.logger,
39
+ onNotify: args.onNotify,
40
+ });
40
41
  }
41
- this.logger.info(`Loaded ${this.markets.size} linear markets`);
42
- return this.markets;
43
42
  }
44
- async fetchTickers() {
45
- this.logger.debug('Fetching linear tickers');
43
+ getPublicStream() {
44
+ return this.publicStream;
45
+ }
46
+ async fetchAndNormalizeMarkets() {
47
+ const raw = await this.httpClient.fetchInstrumentsInfo('linear');
48
+ return (0, bybitNormalizer_1.normalizeBybitMarkets)(raw.result.list);
49
+ }
50
+ async fetchAndNormalizeTickers() {
46
51
  const raw = await this.httpClient.fetchTickers('linear');
47
52
  return (0, bybitNormalizer_1.normalizeBybitTickers)(raw.result.list);
48
53
  }
49
- async fetchKlines(symbol, interval, options) {
50
- this.logger.debug(`Fetching klines for ${symbol} ${interval}`);
54
+ async fetchAndNormalizeKlines(symbol, interval, options) {
51
55
  const bybitInterval = bybit_1.BYBIT_KLINE_INTERVAL[interval];
52
- const raw = await this.httpClient.fetchKline('linear', symbol, bybitInterval, {
53
- startTime: options?.startTime,
54
- endTime: options?.endTime,
55
- limit: options?.limit,
56
+ const raw = await this.httpClient.fetchKline({
57
+ category: 'linear',
58
+ symbol,
59
+ interval: bybitInterval,
60
+ options,
56
61
  });
57
62
  return (0, bybitNormalizer_1.normalizeBybitKlines)(raw.result.list);
58
63
  }
59
- async *watchTickers() {
60
- this.publicStream.subscribeAllTickers(() => { });
61
- yield await this.fetchTickers();
62
- }
63
- subscribeKlines(args) {
64
- this.publicStream.subscribeKlines(args.symbol, args.interval, args.handler);
65
- }
66
- unsubscribeKlines(args) {
67
- this.publicStream.unsubscribeKlines(args.symbol, args.interval, args.handler);
64
+ async fetchAndNormalizeBalance() {
65
+ const raw = await this.httpClient.fetchWalletBalance('UNIFIED');
66
+ return (0, bybitNormalizer_1.normalizeBybitBalance)(raw.result);
68
67
  }
69
68
  async createOrderWs(args) {
70
- this.logger.debug(`Creating order via WS: ${args.symbol}`);
71
69
  const orderParams = {
72
70
  category: 'linear',
73
71
  symbol: args.symbol,
@@ -79,7 +77,13 @@ class BybitLinear {
79
77
  if (args.price > 0) {
80
78
  orderParams.price = this.priceToPrecision(args.symbol, args.price);
81
79
  }
82
- return this.tradeStream.createOrder(orderParams);
80
+ if (this.tradeStream !== null) {
81
+ this.logger.debug(`Creating order via WS: ${args.symbol}`);
82
+ return this.tradeStream.createOrder(orderParams);
83
+ }
84
+ this.logger.debug(`Creating order via REST: ${args.symbol}`);
85
+ const raw = await this.httpClient.createOrder(orderParams);
86
+ return (0, bybitNormalizer_1.buildBybitOrderFromCreateResponse)(args, raw.result.orderId);
83
87
  }
84
88
  async fetchPosition(symbol) {
85
89
  this.logger.debug(`Fetching position for ${symbol}`);
@@ -92,38 +96,25 @@ class BybitLinear {
92
96
  }
93
97
  async setLeverage(leverage, symbol) {
94
98
  this.logger.info(`Setting leverage to ${leverage}x for ${symbol}`);
95
- await this.httpClient.setLeverage('linear', symbol, leverage, leverage);
99
+ await this.httpClient.setLeverage({ category: 'linear', symbol, buyLeverage: leverage, sellLeverage: leverage });
96
100
  }
97
101
  async setMarginMode(marginMode, symbol) {
98
102
  this.logger.info(`Setting margin mode to ${marginMode} for ${symbol}`);
99
103
  const tradeMode = marginMode === 'isolated' ? 1 : 0;
100
104
  const defaultLeverage = 10;
101
- await this.httpClient.switchIsolated('linear', symbol, tradeMode, defaultLeverage, defaultLeverage);
102
- }
103
- async fetchBalance() {
104
- this.logger.debug('Fetching balance');
105
- const raw = await this.httpClient.fetchWalletBalance('UNIFIED');
106
- return (0, bybitNormalizer_1.normalizeBybitBalance)(raw.result);
107
- }
108
- amountToPrecision(symbol, amount) {
109
- const market = this.markets.get(symbol);
110
- if (!market) {
111
- this.logger.warn(`Market ${symbol} not found, using raw amount`);
112
- return String(amount);
113
- }
114
- return (0, precision_1.amountToPrecision)(market, amount);
115
- }
116
- priceToPrecision(symbol, price) {
117
- const market = this.markets.get(symbol);
118
- if (!market) {
119
- this.logger.warn(`Market ${symbol} not found, using raw price`);
120
- return String(price);
121
- }
122
- return (0, precision_1.priceToPrecision)(market, price);
105
+ await this.httpClient.switchIsolated({
106
+ category: 'linear',
107
+ symbol,
108
+ tradeMode,
109
+ buyLeverage: defaultLeverage,
110
+ sellLeverage: defaultLeverage,
111
+ });
123
112
  }
124
113
  async close() {
125
114
  this.logger.info('Closing Bybit Linear connection');
126
- this.tradeStream.disconnect();
115
+ if (this.tradeStream !== null) {
116
+ this.tradeStream.disconnect();
117
+ }
127
118
  this.publicStream.close();
128
119
  }
129
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BybitLinear.js","sourceRoot":"","sources":["../../src/exchanges/BybitLinear.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BybitLinear.js","sourceRoot":"","sources":["../../src/exchanges/BybitLinear.ts"],"names":[],"mappings":"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"}