@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
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BinanceBaseClient = void 0;
4
+ const common_1 = require("../types/common");
5
+ const binanceNormalizer_1 = require("../normalizers/binanceNormalizer");
6
+ const BaseExchangeClient_1 = require("./BaseExchangeClient");
7
+ class BinanceBaseClient extends BaseExchangeClient_1.BaseExchangeClient {
8
+ httpClient;
9
+ userDataStream = null;
10
+ publicStream;
11
+ constructor(args, httpClient, publicStream) {
12
+ super(args);
13
+ this.httpClient = httpClient;
14
+ this.publicStream = publicStream;
15
+ }
16
+ getPublicStream() {
17
+ return this.publicStream;
18
+ }
19
+ async fetchAndNormalizeTradeSymbols() {
20
+ const raw = await this.httpClient.fetchExchangeInfo();
21
+ return (0, binanceNormalizer_1.normalizeBinanceTradeSymbols)(raw);
22
+ }
23
+ async fetchAndNormalizeTickers() {
24
+ const rawTickerList = await this.httpClient.fetchTickers();
25
+ return (0, binanceNormalizer_1.normalizeBinanceTickers)(rawTickerList);
26
+ }
27
+ async fetchAndNormalizeKlines(symbol, interval, options) {
28
+ const rawKlineList = await this.httpClient.fetchKlines(symbol, interval, options);
29
+ return (0, binanceNormalizer_1.normalizeBinanceKlines)(rawKlineList);
30
+ }
31
+ async fetchAndNormalizeBalance() {
32
+ const raw = await this.httpClient.fetchAccount();
33
+ return (0, binanceNormalizer_1.normalizeBinanceBalance)(raw);
34
+ }
35
+ async createOrderWebSocket(args) {
36
+ this.logger.debug(`Creating order via REST: ${args.symbol}`);
37
+ const orderParams = {
38
+ symbol: args.symbol,
39
+ side: args.side.toUpperCase(),
40
+ type: args.type.toUpperCase(),
41
+ quantity: this.amountToPrecision(args.symbol, args.amount),
42
+ ...args.params,
43
+ };
44
+ if (args.type === common_1.OrderType.Limit) {
45
+ if (args.price > 0) {
46
+ orderParams.price = this.priceToPrecision(args.symbol, args.price);
47
+ }
48
+ if (orderParams.timeInForce === undefined) {
49
+ orderParams.timeInForce = common_1.TimeInForce.Gtc;
50
+ }
51
+ }
52
+ const raw = await this.httpClient.createOrder(orderParams);
53
+ return (0, binanceNormalizer_1.normalizeBinanceOrder)(raw);
54
+ }
55
+ async close() {
56
+ this.logger.info(`Closing Binance ${this.marketLabel} connection`);
57
+ if (this.userDataStream) {
58
+ this.userDataStream.close();
59
+ }
60
+ this.publicStream.close();
61
+ }
62
+ }
63
+ exports.BinanceBaseClient = BinanceBaseClient;
64
+ //# sourceMappingURL=BinanceBaseClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinanceBaseClient.js","sourceRoot":"","sources":["../../src/exchanges/BinanceBaseClient.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,16 @@
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 BinanceFutures 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, FetchPageWithLimitArgs } from '../types/exchange';
2
+ import type { Position, FundingRateHistory } from '../types/common';
3
+ import { MarginMode } from '../types/common';
4
+ import { BinanceFuturesHttpClient } from '../http/BinanceFuturesHttpClient';
5
+ import { BinanceBaseClient } from './BinanceBaseClient';
6
+ declare class BinanceFutures extends BinanceBaseClient<BinanceFuturesHttpClient> {
7
+ protected readonly marketLabel = "futures";
8
+ protected readonly klineLimit = 499;
11
9
  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>;
10
+ fetchFundingRateHistory(symbol: string, options?: FetchPageWithLimitArgs): Promise<FundingRateHistory[]>;
19
11
  fetchPosition(symbol: string): Promise<Position>;
20
12
  setLeverage(leverage: number, symbol: string): Promise<void>;
21
13
  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
14
  }
27
15
  export { BinanceFutures };
28
16
  //# sourceMappingURL=BinanceFutures.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BinanceFutures.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceFutures.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,cAAe,YAAW,cAAc;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAa;IAE7C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,YAAY,CAA6B;IACjD,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,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAchD,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;IAMpE,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,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"BinanceFutures.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceFutures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAU5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAM,cAAe,SAAQ,iBAAiB,CAAC,wBAAwB,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,WAAW,aAAa;IAC3C,SAAS,CAAC,QAAQ,CAAC,UAAU,OAA+B;gBAEhD,IAAI,EAAE,YAAY;IAqBxB,uBAAuB,CAC3B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO1B,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;CAK3E;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,78 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BinanceFutures = void 0;
4
+ const common_1 = require("../types/common");
4
5
  const BinanceFuturesHttpClient_1 = require("../http/BinanceFuturesHttpClient");
5
6
  const binanceNormalizer_1 = require("../normalizers/binanceNormalizer");
6
7
  const BinanceFuturesPublicStream_1 = require("../ws/BinanceFuturesPublicStream");
7
8
  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;
9
+ const BinanceBaseClient_1 = require("./BinanceBaseClient");
10
+ class BinanceFutures extends BinanceBaseClient_1.BinanceBaseClient {
11
+ marketLabel = 'futures';
12
+ klineLimit = binance_1.BINANCE_KLINE_LIMIT_FUTURES;
17
13
  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,
14
+ const baseUrl = args.config.isDemoMode === true
15
+ ? binance_1.BINANCE_DEMO_FUTURES_BASE_URL
16
+ : binance_1.BINANCE_FUTURES_BASE_URL;
17
+ const webSocketCombinedUrl = args.config.isDemoMode === true
18
+ ? binance_1.BINANCE_DEMO_FUTURES_WEBSOCKET_COMBINED_URL
19
+ : binance_1.BINANCE_FUTURES_WEBSOCKET_COMBINED_URL;
20
+ const httpClient = new BinanceFuturesHttpClient_1.BinanceFuturesHttpClient({
21
+ baseUrl,
22
+ apiKey: args.config.apiKey,
23
+ secret: args.config.secret,
24
+ logger: args.logger,
49
25
  });
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);
26
+ const publicStream = new BinanceFuturesPublicStream_1.BinanceFuturesPublicStream(webSocketCombinedUrl, args.logger, args.onNotify);
27
+ super(args, httpClient, publicStream);
61
28
  }
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);
29
+ async fetchFundingRateHistory(symbol, options) {
30
+ this.logger.debug(`Fetching funding rate history for ${symbol}`);
31
+ const raw = await this.httpClient.fetchFundingRateHistory(symbol, options);
32
+ return (0, binanceNormalizer_1.normalizeBinanceFundingRateHistory)(raw);
76
33
  }
77
34
  async fetchPosition(symbol) {
78
35
  this.logger.debug(`Fetching position for ${symbol}`);
@@ -89,37 +46,9 @@ class BinanceFutures {
89
46
  }
90
47
  async setMarginMode(marginMode, symbol) {
91
48
  this.logger.info(`Setting margin mode to ${marginMode} for ${symbol}`);
92
- const marginType = marginMode === 'isolated' ? 'ISOLATED' : 'CROSSED';
49
+ const marginType = marginMode === common_1.MarginMode.Isolated ? 'ISOLATED' : 'CROSSED';
93
50
  await this.httpClient.setMarginType(symbol, marginType);
94
51
  }
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
52
  }
124
53
  exports.BinanceFutures = BinanceFutures;
125
54
  //# 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,4CAA6C;AAC7C,+EAA4E;AAC5E,wEAAgH;AAChH,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,UAAU,KAAK,IAAI;YAC7C,CAAC,CAAC,uCAA6B;YAC/B,CAAC,CAAC,kCAAwB,CAAC;QAE7B,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI;YAC1D,CAAC,CAAC,qDAA2C;YAC7C,CAAC,CAAC,gDAAsC,CAAC;QAE3C,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,oBAAoB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtG,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,MAAc,EACd,OAAgC;QAEhC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,OAAO,IAAA,sDAAkC,EAAC,GAAG,CAAC,CAAC;IACjD,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,mBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;CACF;AAEQ,wCAAc"}
@@ -1,28 +1,16 @@
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, FundingRateHistory } from '../types/common';
3
+ import { MarginMode } from '../types/common';
4
+ import { BinanceSpotHttpClient } from '../http/BinanceSpotHttpClient';
5
+ import { BinanceBaseClient } from './BinanceBaseClient';
6
+ declare class BinanceSpot extends BinanceBaseClient<BinanceSpotHttpClient> {
7
+ protected readonly marketLabel = "spot";
8
+ protected readonly klineLimit = 1000;
11
9
  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>;
10
+ fetchFundingRateHistory(): Promise<FundingRateHistory[]>;
19
11
  fetchPosition(_symbol: string): Promise<Position>;
20
12
  setLeverage(_leverage: number, _symbol: string): Promise<void>;
21
13
  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
14
  }
27
15
  export { BinanceSpot };
28
16
  //# 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,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,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,uBAAuB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIxD,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,27 @@
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.isDemoMode === 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);
21
+ const publicStream = new BinanceSpotPublicStream_1.BinanceSpotPublicStream(binance_1.BINANCE_SPOT_WEBSOCKET_STREAM_URL, args.logger, args.onNotify);
22
+ super(args, httpClient, publicStream);
61
23
  }
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);
24
+ async fetchFundingRateHistory() {
25
+ throw new Error('Not supported for spot market');
76
26
  }
77
27
  async fetchPosition(_symbol) {
78
28
  throw new Error('Not supported for spot market');
@@ -83,34 +33,6 @@ class BinanceSpot {
83
33
  async setMarginMode(_marginMode, _symbol) {
84
34
  throw new Error('Not supported for spot market');
85
35
  }
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
36
  }
115
37
  exports.BinanceSpot = BinanceSpot;
116
38
  //# 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":";;;AAGA,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,UAAU,KAAK,IAAI;YAC7C,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,2CAAiC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhH,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,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,26 @@
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 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?;
1
+ import type { CreateOrderWebSocketArgs, ExchangeArgs, FetchPageWithLimitArgs } from '../types/exchange';
2
+ import type { Kline, KlineInterval, TradeSymbolBySymbol, TickerBySymbol, BalanceByAsset, Position, Order, FundingRateHistory } from '../types/common';
3
+ import { MarginMode } from '../types/common';
4
+ import type { PublicStreamLike } from '../types/stream';
5
+ import { BaseExchangeClient } from './BaseExchangeClient';
6
+ declare class BybitLinear extends BaseExchangeClient {
7
+ protected readonly marketLabel = "linear";
8
+ protected readonly klineLimit = 200;
9
+ private readonly isDemoMode;
10
+ private readonly httpClient;
11
+ private readonly publicStream;
12
+ private readonly tradeStream;
11
13
  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>;
14
+ protected getPublicStream(): PublicStreamLike;
15
+ protected fetchAndNormalizeTradeSymbols(): Promise<TradeSymbolBySymbol>;
16
+ protected fetchAndNormalizeTickers(): Promise<TickerBySymbol>;
17
+ protected fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?: FetchPageWithLimitArgs): Promise<Kline[]>;
18
+ protected fetchAndNormalizeBalance(): Promise<BalanceByAsset>;
19
+ createOrderWebSocket(args: CreateOrderWebSocketArgs): Promise<Order>;
20
+ fetchFundingRateHistory(): Promise<FundingRateHistory[]>;
19
21
  fetchPosition(symbol: string): Promise<Position>;
20
22
  setLeverage(leverage: number, symbol: string): Promise<void>;
21
23
  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
24
  close(): Promise<void>;
26
25
  }
27
26
  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,wBAAwB,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,QAAQ,EACR,KAAK,EACL,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,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,UAAU,CAAU;IACrC,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,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;cAYH,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;IAM7D,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,CAAC;IA0BpE,uBAAuB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIxD,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"}