@solncebro/exchange-engine 0.1.2 → 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.
- package/CHANGELOG.md +25 -0
- package/dist/constants/binance.d.ts +4 -5
- package/dist/constants/binance.d.ts.map +1 -1
- package/dist/constants/binance.js +5 -21
- package/dist/constants/binance.js.map +1 -1
- package/dist/constants/bybit.d.ts +6 -6
- package/dist/constants/bybit.d.ts.map +1 -1
- package/dist/constants/bybit.js +7 -7
- package/dist/constants/bybit.js.map +1 -1
- package/dist/constants/mappings.d.ts +9 -0
- package/dist/constants/mappings.d.ts.map +1 -0
- package/dist/constants/mappings.js +40 -0
- package/dist/constants/mappings.js.map +1 -0
- package/dist/exchanges/BaseExchangeClient.d.ts +9 -8
- package/dist/exchanges/BaseExchangeClient.d.ts.map +1 -1
- package/dist/exchanges/BaseExchangeClient.js +26 -26
- package/dist/exchanges/BaseExchangeClient.js.map +1 -1
- package/dist/exchanges/BinanceBaseClient.d.ts +5 -5
- package/dist/exchanges/BinanceBaseClient.d.ts.map +1 -1
- package/dist/exchanges/BinanceBaseClient.js +7 -8
- package/dist/exchanges/BinanceBaseClient.js.map +1 -1
- package/dist/exchanges/BinanceFutures.d.ts +4 -2
- package/dist/exchanges/BinanceFutures.d.ts.map +1 -1
- package/dist/exchanges/BinanceFutures.js +12 -6
- package/dist/exchanges/BinanceFutures.js.map +1 -1
- package/dist/exchanges/BinanceSpot.d.ts +3 -1
- package/dist/exchanges/BinanceSpot.d.ts.map +1 -1
- package/dist/exchanges/BinanceSpot.js +5 -2
- package/dist/exchanges/BinanceSpot.js.map +1 -1
- package/dist/exchanges/BybitLinear.d.ts +8 -6
- package/dist/exchanges/BybitLinear.d.ts.map +1 -1
- package/dist/exchanges/BybitLinear.js +19 -15
- package/dist/exchanges/BybitLinear.js.map +1 -1
- package/dist/exchanges/BybitSpot.d.ts +7 -5
- package/dist/exchanges/BybitSpot.d.ts.map +1 -1
- package/dist/exchanges/BybitSpot.js +13 -9
- package/dist/exchanges/BybitSpot.js.map +1 -1
- package/dist/exchanges/Exchange.d.ts +1 -1
- package/dist/exchanges/Exchange.d.ts.map +1 -1
- package/dist/exchanges/Exchange.js +3 -2
- package/dist/exchanges/Exchange.js.map +1 -1
- package/dist/http/BaseHttpClient.d.ts.map +1 -1
- package/dist/http/BaseHttpClient.js.map +1 -1
- package/dist/http/BinanceBaseHttpClient.d.ts +7 -7
- package/dist/http/BinanceBaseHttpClient.d.ts.map +1 -1
- package/dist/http/BinanceBaseHttpClient.js.map +1 -1
- package/dist/http/BinanceFuturesHttpClient.d.ts +6 -6
- package/dist/http/BinanceFuturesHttpClient.d.ts.map +1 -1
- package/dist/http/BinanceFuturesHttpClient.js +2 -5
- package/dist/http/BinanceFuturesHttpClient.js.map +1 -1
- package/dist/http/BybitHttpClient.d.ts +14 -13
- package/dist/http/BybitHttpClient.d.ts.map +1 -1
- package/dist/http/BybitHttpClient.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/normalizers/binanceNormalizer.d.ts +28 -19
- package/dist/normalizers/binanceNormalizer.d.ts.map +1 -1
- package/dist/normalizers/binanceNormalizer.js +47 -30
- package/dist/normalizers/binanceNormalizer.js.map +1 -1
- package/dist/normalizers/bybitNormalizer.d.ts +21 -21
- package/dist/normalizers/bybitNormalizer.d.ts.map +1 -1
- package/dist/normalizers/bybitNormalizer.js +39 -40
- package/dist/normalizers/bybitNormalizer.js.map +1 -1
- package/dist/precision/precision.d.ts +3 -3
- package/dist/precision/precision.d.ts.map +1 -1
- package/dist/precision/precision.js +4 -4
- package/dist/precision/precision.js.map +1 -1
- package/dist/types/common.d.ts +54 -21
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +40 -0
- package/dist/types/common.js.map +1 -1
- package/dist/types/exchange.d.ts +9 -7
- package/dist/types/exchange.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/stream.d.ts +1 -2
- package/dist/types/stream.d.ts.map +1 -1
- package/dist/utils/httpParams.d.ts +2 -2
- package/dist/utils/httpParams.d.ts.map +1 -1
- package/dist/utils/httpParams.js.map +1 -1
- package/dist/ws/BinanceFuturesPublicStream.d.ts +4 -4
- package/dist/ws/BinanceFuturesPublicStream.d.ts.map +1 -1
- package/dist/ws/BinanceFuturesPublicStream.js +40 -41
- package/dist/ws/BinanceFuturesPublicStream.js.map +1 -1
- package/dist/ws/BinanceSpotPublicStream.d.ts +2 -2
- package/dist/ws/BinanceSpotPublicStream.d.ts.map +1 -1
- package/dist/ws/BinanceSpotPublicStream.js +15 -17
- package/dist/ws/BinanceSpotPublicStream.js.map +1 -1
- package/dist/ws/BinanceUserDataStream.d.ts +2 -2
- package/dist/ws/BinanceUserDataStream.d.ts.map +1 -1
- package/dist/ws/BinanceUserDataStream.js +3 -3
- package/dist/ws/BinanceUserDataStream.js.map +1 -1
- package/dist/ws/BybitPrivateStream.js +5 -5
- package/dist/ws/BybitPrivateStream.js.map +1 -1
- package/dist/ws/BybitPublicStream.d.ts.map +1 -1
- package/dist/ws/BybitPublicStream.js +9 -10
- package/dist/ws/BybitPublicStream.js.map +1 -1
- package/dist/ws/BybitTradeStream.d.ts.map +1 -1
- package/dist/ws/BybitTradeStream.js +12 -8
- package/dist/ws/BybitTradeStream.js.map +1 -1
- package/dist/ws/{binanceWsUtils.d.ts → binanceWebSocketUtils.d.ts} +1 -1
- package/dist/ws/binanceWebSocketUtils.d.ts.map +1 -0
- package/dist/ws/binanceWebSocketUtils.js +7 -0
- package/dist/ws/binanceWebSocketUtils.js.map +1 -0
- package/dist/ws/bybitWebSocketUtils.d.ts +28 -0
- package/dist/ws/bybitWebSocketUtils.d.ts.map +1 -0
- package/dist/ws/{bybitWsUtils.js → bybitWebSocketUtils.js} +3 -3
- package/dist/ws/bybitWebSocketUtils.js.map +1 -0
- package/package.json +6 -2
- package/dist/ws/binanceWsUtils.d.ts.map +0 -1
- package/dist/ws/binanceWsUtils.js +0 -13
- package/dist/ws/binanceWsUtils.js.map +0 -1
- package/dist/ws/bybitWsUtils.d.ts +0 -29
- package/dist/ws/bybitWsUtils.d.ts.map +0 -1
- package/dist/ws/bybitWsUtils.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,30 @@ 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
|
+
|
|
8
32
|
## [0.1.2] - 2026-03-03
|
|
9
33
|
|
|
10
34
|
### Added
|
|
@@ -67,5 +91,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
67
91
|
- Private endpoints (balance, position, orders) require valid credentials
|
|
68
92
|
- WebSocket subscriptions are stateless and can be re-established on reconnect
|
|
69
93
|
|
|
94
|
+
[0.2.0]: https://github.com/solncebro/exchange-engine/releases/tag/v0.2.0
|
|
70
95
|
[0.1.2]: https://github.com/solncebro/exchange-engine/releases/tag/v0.1.2
|
|
71
96
|
[0.1.0]: https://github.com/solncebro/exchange-engine/releases/tag/v0.1.0
|
|
@@ -2,12 +2,11 @@ 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
3
|
export declare const BINANCE_DEMO_SPOT_BASE_URL = "https://demo-api.binance.com";
|
|
4
4
|
export declare const BINANCE_DEMO_FUTURES_BASE_URL = "https://demo-fapi.binance.com";
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
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";
|
|
9
9
|
export declare const BINANCE_REQUEST_TIMEOUT = 30000;
|
|
10
10
|
export declare const BINANCE_KLINE_LIMIT_SPOT = 1000;
|
|
11
11
|
export declare const BINANCE_KLINE_LIMIT_FUTURES = 499;
|
|
12
|
-
export declare const BINANCE_KLINE_INTERVAL: Record<string, string>;
|
|
13
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;AAEnE,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AACzE,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E,eAAO,MAAM,
|
|
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,31 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
6
|
exports.BINANCE_DEMO_SPOT_BASE_URL = 'https://demo-api.binance.com';
|
|
7
7
|
exports.BINANCE_DEMO_FUTURES_BASE_URL = 'https://demo-fapi.binance.com';
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
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
12
|
exports.BINANCE_REQUEST_TIMEOUT = 30000;
|
|
13
13
|
exports.BINANCE_KLINE_LIMIT_SPOT = 1000;
|
|
14
14
|
exports.BINANCE_KLINE_LIMIT_FUTURES = 499;
|
|
15
|
-
exports.BINANCE_KLINE_INTERVAL = {
|
|
16
|
-
'1m': '1m',
|
|
17
|
-
'3m': '3m',
|
|
18
|
-
'5m': '5m',
|
|
19
|
-
'15m': '15m',
|
|
20
|
-
'30m': '30m',
|
|
21
|
-
'1h': '1h',
|
|
22
|
-
'2h': '2h',
|
|
23
|
-
'4h': '4h',
|
|
24
|
-
'6h': '6h',
|
|
25
|
-
'12h': '12h',
|
|
26
|
-
'1d': '1d',
|
|
27
|
-
'3d': '3d',
|
|
28
|
-
'1w': '1w',
|
|
29
|
-
'1M': '1M',
|
|
30
|
-
};
|
|
31
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;AAEtD,QAAA,0BAA0B,GAAG,8BAA8B,CAAC;AAC5D,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAEhE,QAAA,
|
|
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,11 +1,11 @@
|
|
|
1
1
|
export declare const BYBIT_BASE_URL = "https://api.bybit.com";
|
|
2
2
|
export declare const BYBIT_DEMO_BASE_URL = "https://api-demo.bybit.com";
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
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";
|
|
9
9
|
export declare const BYBIT_RECV_WINDOW = 7000;
|
|
10
10
|
export declare const BYBIT_REQUEST_TIMEOUT = 30000;
|
|
11
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;AAEtD,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,eAAO,MAAM,
|
|
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"}
|
package/dist/constants/bybit.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
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.
|
|
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
5
|
exports.BYBIT_DEMO_BASE_URL = 'https://api-demo.bybit.com';
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
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
12
|
exports.BYBIT_RECV_WINDOW = 7000;
|
|
13
13
|
exports.BYBIT_REQUEST_TIMEOUT = 30000;
|
|
14
14
|
exports.BYBIT_KLINE_INTERVAL = {
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import type { ExchangeClient, ExchangeArgs,
|
|
2
|
-
import type { ExchangeLogger, Kline, KlineInterval,
|
|
1
|
+
import type { ExchangeClient, ExchangeArgs, FetchPageWithLimitArgs, SubscribeKlinesArgs } from '../types/exchange';
|
|
2
|
+
import type { ExchangeLogger, Kline, KlineInterval, TradeSymbolBySymbol, TickerBySymbol, BalanceByAsset } from '../types/common';
|
|
3
3
|
import type { PublicStreamLike } from '../types/stream';
|
|
4
4
|
declare abstract class BaseExchangeClient implements ExchangeClient {
|
|
5
5
|
readonly apiKey: string;
|
|
6
|
-
readonly
|
|
6
|
+
readonly tradeSymbols: TradeSymbolBySymbol;
|
|
7
7
|
protected readonly logger: ExchangeLogger;
|
|
8
8
|
protected readonly onNotify?: (message: string) => void | Promise<void>;
|
|
9
9
|
protected abstract readonly marketLabel: string;
|
|
10
10
|
protected abstract readonly klineLimit: number;
|
|
11
11
|
constructor(args: ExchangeArgs);
|
|
12
12
|
protected abstract getPublicStream(): PublicStreamLike;
|
|
13
|
-
protected abstract
|
|
13
|
+
protected abstract fetchAndNormalizeTradeSymbols(): Promise<TradeSymbolBySymbol>;
|
|
14
14
|
protected abstract fetchAndNormalizeTickers(): Promise<TickerBySymbol>;
|
|
15
|
-
protected abstract fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?:
|
|
15
|
+
protected abstract fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?: FetchPageWithLimitArgs): Promise<Kline[]>;
|
|
16
16
|
protected abstract fetchAndNormalizeBalance(): Promise<BalanceByAsset>;
|
|
17
|
-
|
|
17
|
+
loadTradeSymbols(shouldReload?: boolean): Promise<TradeSymbolBySymbol>;
|
|
18
18
|
fetchTickers(): Promise<TickerBySymbol>;
|
|
19
|
-
fetchKlines(symbol: string, interval: KlineInterval, options?:
|
|
19
|
+
fetchKlines(symbol: string, interval: KlineInterval, options?: FetchPageWithLimitArgs): Promise<Kline[]>;
|
|
20
20
|
fetchAllKlines(symbolList: string[], interval: KlineInterval): Promise<Map<string, Kline[]>>;
|
|
21
21
|
fetchBalance(): Promise<BalanceByAsset>;
|
|
22
22
|
watchTickers(): AsyncGenerator<TickerBySymbol>;
|
|
@@ -26,7 +26,8 @@ declare abstract class BaseExchangeClient implements ExchangeClient {
|
|
|
26
26
|
priceToPrecision(symbol: string, price: number): string;
|
|
27
27
|
getMinOrderQty(symbol: string): number;
|
|
28
28
|
getMinNotional(symbol: string): number;
|
|
29
|
-
abstract
|
|
29
|
+
abstract createOrderWebSocket(...args: Parameters<ExchangeClient['createOrderWebSocket']>): ReturnType<ExchangeClient['createOrderWebSocket']>;
|
|
30
|
+
abstract fetchFundingRateHistory(...args: Parameters<ExchangeClient['fetchFundingRateHistory']>): ReturnType<ExchangeClient['fetchFundingRateHistory']>;
|
|
30
31
|
abstract fetchPosition(...args: Parameters<ExchangeClient['fetchPosition']>): ReturnType<ExchangeClient['fetchPosition']>;
|
|
31
32
|
abstract setLeverage(...args: Parameters<ExchangeClient['setLeverage']>): ReturnType<ExchangeClient['setLeverage']>;
|
|
32
33
|
abstract setMarginMode(...args: Parameters<ExchangeClient['setMarginMode']>): ReturnType<ExchangeClient['setMarginMode']>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseExchangeClient.d.ts","sourceRoot":"","sources":["../../src/exchanges/BaseExchangeClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"BaseExchangeClient.d.ts","sourceRoot":"","sources":["../../src/exchanges/BaseExchangeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ const klineLoader_1 = require("../utils/klineLoader");
|
|
|
5
5
|
const precision_1 = require("../precision/precision");
|
|
6
6
|
class BaseExchangeClient {
|
|
7
7
|
apiKey;
|
|
8
|
-
|
|
8
|
+
tradeSymbols = new Map();
|
|
9
9
|
logger;
|
|
10
10
|
onNotify;
|
|
11
11
|
constructor(args) {
|
|
@@ -13,17 +13,17 @@ class BaseExchangeClient {
|
|
|
13
13
|
this.logger = args.logger;
|
|
14
14
|
this.onNotify = args.onNotify;
|
|
15
15
|
}
|
|
16
|
-
async
|
|
17
|
-
if (!
|
|
18
|
-
return this.
|
|
16
|
+
async loadTradeSymbols(shouldReload = false) {
|
|
17
|
+
if (!shouldReload && this.tradeSymbols.size > 0) {
|
|
18
|
+
return this.tradeSymbols;
|
|
19
19
|
}
|
|
20
|
-
this.logger.info(`Loading ${this.marketLabel}
|
|
21
|
-
const normalized = await this.
|
|
22
|
-
for (const [symbol,
|
|
23
|
-
this.
|
|
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
24
|
}
|
|
25
|
-
this.logger.info(`Loaded ${this.
|
|
26
|
-
return this.
|
|
25
|
+
this.logger.info(`Loaded ${this.tradeSymbols.size} ${this.marketLabel} trade symbols`);
|
|
26
|
+
return this.tradeSymbols;
|
|
27
27
|
}
|
|
28
28
|
async fetchTickers() {
|
|
29
29
|
this.logger.debug(`Fetching ${this.marketLabel} tickers`);
|
|
@@ -55,36 +55,36 @@ class BaseExchangeClient {
|
|
|
55
55
|
this.getPublicStream().unsubscribeKlines(args.symbol, args.interval, args.handler);
|
|
56
56
|
}
|
|
57
57
|
amountToPrecision(symbol, amount) {
|
|
58
|
-
const
|
|
59
|
-
if (!
|
|
60
|
-
this.logger.warn(`
|
|
58
|
+
const tradeSymbol = this.tradeSymbols.get(symbol);
|
|
59
|
+
if (!tradeSymbol) {
|
|
60
|
+
this.logger.warn(`TradeSymbol ${symbol} not found, using raw amount`);
|
|
61
61
|
return String(amount);
|
|
62
62
|
}
|
|
63
|
-
return (0, precision_1.amountToPrecision)(
|
|
63
|
+
return (0, precision_1.amountToPrecision)(tradeSymbol, amount);
|
|
64
64
|
}
|
|
65
65
|
priceToPrecision(symbol, price) {
|
|
66
|
-
const
|
|
67
|
-
if (!
|
|
68
|
-
this.logger.warn(`
|
|
66
|
+
const tradeSymbol = this.tradeSymbols.get(symbol);
|
|
67
|
+
if (!tradeSymbol) {
|
|
68
|
+
this.logger.warn(`TradeSymbol ${symbol} not found, using raw price`);
|
|
69
69
|
return String(price);
|
|
70
70
|
}
|
|
71
|
-
return (0, precision_1.priceToPrecision)(
|
|
71
|
+
return (0, precision_1.priceToPrecision)(tradeSymbol, price);
|
|
72
72
|
}
|
|
73
73
|
getMinOrderQty(symbol) {
|
|
74
|
-
const
|
|
75
|
-
if (!
|
|
76
|
-
this.logger.warn(`
|
|
74
|
+
const tradeSymbol = this.tradeSymbols.get(symbol);
|
|
75
|
+
if (!tradeSymbol) {
|
|
76
|
+
this.logger.warn(`TradeSymbol ${symbol} not found, returning 0 for minOrderQty`);
|
|
77
77
|
return 0;
|
|
78
78
|
}
|
|
79
|
-
return parseFloat(
|
|
79
|
+
return parseFloat(tradeSymbol.filter.minQty);
|
|
80
80
|
}
|
|
81
81
|
getMinNotional(symbol) {
|
|
82
|
-
const
|
|
83
|
-
if (!
|
|
84
|
-
this.logger.warn(`
|
|
82
|
+
const tradeSymbol = this.tradeSymbols.get(symbol);
|
|
83
|
+
if (!tradeSymbol) {
|
|
84
|
+
this.logger.warn(`TradeSymbol ${symbol} not found, returning 0 for minNotional`);
|
|
85
85
|
return 0;
|
|
86
86
|
}
|
|
87
|
-
return parseFloat(
|
|
87
|
+
return parseFloat(tradeSymbol.filter.minNotional);
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
exports.BaseExchangeClient = BaseExchangeClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseExchangeClient.js","sourceRoot":"","sources":["../../src/exchanges/BaseExchangeClient.ts"],"names":[],"mappings":";;;AAeA,sDAA0D;AAC1D,sDAA6E;AAE7E,MAAe,kBAAkB;IACtB,MAAM,CAAS;IACf,
|
|
1
|
+
{"version":3,"file":"BaseExchangeClient.js","sourceRoot":"","sources":["../../src/exchanges/BaseExchangeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Kline, KlineInterval,
|
|
1
|
+
import type { CreateOrderWebSocketArgs, ExchangeArgs, FetchPageWithLimitArgs } from '../types/exchange';
|
|
2
|
+
import type { Kline, KlineInterval, TradeSymbolBySymbol, TickerBySymbol, BalanceByAsset, Order } from '../types/common';
|
|
3
3
|
import type { PublicStreamLike } from '../types/stream';
|
|
4
4
|
import type { BinanceBaseHttpClient } from '../http/BinanceBaseHttpClient';
|
|
5
5
|
import { BinanceUserDataStream } from '../ws/BinanceUserDataStream';
|
|
@@ -10,11 +10,11 @@ declare abstract class BinanceBaseClient<T extends BinanceBaseHttpClient> extend
|
|
|
10
10
|
private readonly publicStream;
|
|
11
11
|
constructor(args: ExchangeArgs, httpClient: T, publicStream: PublicStreamLike);
|
|
12
12
|
protected getPublicStream(): PublicStreamLike;
|
|
13
|
-
protected
|
|
13
|
+
protected fetchAndNormalizeTradeSymbols(): Promise<TradeSymbolBySymbol>;
|
|
14
14
|
protected fetchAndNormalizeTickers(): Promise<TickerBySymbol>;
|
|
15
|
-
protected fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?:
|
|
15
|
+
protected fetchAndNormalizeKlines(symbol: string, interval: KlineInterval, options?: FetchPageWithLimitArgs): Promise<Kline[]>;
|
|
16
16
|
protected fetchAndNormalizeBalance(): Promise<BalanceByAsset>;
|
|
17
|
-
|
|
17
|
+
createOrderWebSocket(args: CreateOrderWebSocketArgs): Promise<Order>;
|
|
18
18
|
close(): Promise<void>;
|
|
19
19
|
}
|
|
20
20
|
export { BinanceBaseClient };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinanceBaseClient.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceBaseClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BinanceBaseClient = void 0;
|
|
4
|
+
const common_1 = require("../types/common");
|
|
4
5
|
const binanceNormalizer_1 = require("../normalizers/binanceNormalizer");
|
|
5
|
-
const binance_1 = require("../constants/binance");
|
|
6
6
|
const BaseExchangeClient_1 = require("./BaseExchangeClient");
|
|
7
7
|
class BinanceBaseClient extends BaseExchangeClient_1.BaseExchangeClient {
|
|
8
8
|
httpClient;
|
|
@@ -16,24 +16,23 @@ class BinanceBaseClient extends BaseExchangeClient_1.BaseExchangeClient {
|
|
|
16
16
|
getPublicStream() {
|
|
17
17
|
return this.publicStream;
|
|
18
18
|
}
|
|
19
|
-
async
|
|
19
|
+
async fetchAndNormalizeTradeSymbols() {
|
|
20
20
|
const raw = await this.httpClient.fetchExchangeInfo();
|
|
21
|
-
return (0, binanceNormalizer_1.
|
|
21
|
+
return (0, binanceNormalizer_1.normalizeBinanceTradeSymbols)(raw);
|
|
22
22
|
}
|
|
23
23
|
async fetchAndNormalizeTickers() {
|
|
24
24
|
const rawTickerList = await this.httpClient.fetchTickers();
|
|
25
25
|
return (0, binanceNormalizer_1.normalizeBinanceTickers)(rawTickerList);
|
|
26
26
|
}
|
|
27
27
|
async fetchAndNormalizeKlines(symbol, interval, options) {
|
|
28
|
-
const
|
|
29
|
-
const rawKlineList = await this.httpClient.fetchKlines(symbol, binanceInterval, options);
|
|
28
|
+
const rawKlineList = await this.httpClient.fetchKlines(symbol, interval, options);
|
|
30
29
|
return (0, binanceNormalizer_1.normalizeBinanceKlines)(rawKlineList);
|
|
31
30
|
}
|
|
32
31
|
async fetchAndNormalizeBalance() {
|
|
33
32
|
const raw = await this.httpClient.fetchAccount();
|
|
34
33
|
return (0, binanceNormalizer_1.normalizeBinanceBalance)(raw);
|
|
35
34
|
}
|
|
36
|
-
async
|
|
35
|
+
async createOrderWebSocket(args) {
|
|
37
36
|
this.logger.debug(`Creating order via REST: ${args.symbol}`);
|
|
38
37
|
const orderParams = {
|
|
39
38
|
symbol: args.symbol,
|
|
@@ -42,12 +41,12 @@ class BinanceBaseClient extends BaseExchangeClient_1.BaseExchangeClient {
|
|
|
42
41
|
quantity: this.amountToPrecision(args.symbol, args.amount),
|
|
43
42
|
...args.params,
|
|
44
43
|
};
|
|
45
|
-
if (args.type ===
|
|
44
|
+
if (args.type === common_1.OrderType.Limit) {
|
|
46
45
|
if (args.price > 0) {
|
|
47
46
|
orderParams.price = this.priceToPrecision(args.symbol, args.price);
|
|
48
47
|
}
|
|
49
48
|
if (orderParams.timeInForce === undefined) {
|
|
50
|
-
orderParams.timeInForce =
|
|
49
|
+
orderParams.timeInForce = common_1.TimeInForce.Gtc;
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
const raw = await this.httpClient.createOrder(orderParams);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinanceBaseClient.js","sourceRoot":"","sources":["../../src/exchanges/BinanceBaseClient.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BinanceBaseClient.js","sourceRoot":"","sources":["../../src/exchanges/BinanceBaseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import type { ExchangeArgs } from '../types/exchange';
|
|
2
|
-
import type { Position,
|
|
1
|
+
import type { ExchangeArgs, FetchPageWithLimitArgs } from '../types/exchange';
|
|
2
|
+
import type { Position, FundingRateHistory } from '../types/common';
|
|
3
|
+
import { MarginMode } from '../types/common';
|
|
3
4
|
import { BinanceFuturesHttpClient } from '../http/BinanceFuturesHttpClient';
|
|
4
5
|
import { BinanceBaseClient } from './BinanceBaseClient';
|
|
5
6
|
declare class BinanceFutures extends BinanceBaseClient<BinanceFuturesHttpClient> {
|
|
6
7
|
protected readonly marketLabel = "futures";
|
|
7
8
|
protected readonly klineLimit = 499;
|
|
8
9
|
constructor(args: ExchangeArgs);
|
|
10
|
+
fetchFundingRateHistory(symbol: string, options?: FetchPageWithLimitArgs): Promise<FundingRateHistory[]>;
|
|
9
11
|
fetchPosition(symbol: string): Promise<Position>;
|
|
10
12
|
setLeverage(leverage: number, symbol: string): Promise<void>;
|
|
11
13
|
setMarginMode(marginMode: MarginMode, symbol: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinanceFutures.d.ts","sourceRoot":"","sources":["../../src/exchanges/BinanceFutures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,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,6 +1,7 @@
|
|
|
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");
|
|
@@ -10,21 +11,26 @@ class BinanceFutures extends BinanceBaseClient_1.BinanceBaseClient {
|
|
|
10
11
|
marketLabel = 'futures';
|
|
11
12
|
klineLimit = binance_1.BINANCE_KLINE_LIMIT_FUTURES;
|
|
12
13
|
constructor(args) {
|
|
13
|
-
const baseUrl = args.config.
|
|
14
|
+
const baseUrl = args.config.isDemoMode === true
|
|
14
15
|
? binance_1.BINANCE_DEMO_FUTURES_BASE_URL
|
|
15
16
|
: binance_1.BINANCE_FUTURES_BASE_URL;
|
|
16
|
-
const
|
|
17
|
-
? binance_1.
|
|
18
|
-
: binance_1.
|
|
17
|
+
const webSocketCombinedUrl = args.config.isDemoMode === true
|
|
18
|
+
? binance_1.BINANCE_DEMO_FUTURES_WEBSOCKET_COMBINED_URL
|
|
19
|
+
: binance_1.BINANCE_FUTURES_WEBSOCKET_COMBINED_URL;
|
|
19
20
|
const httpClient = new BinanceFuturesHttpClient_1.BinanceFuturesHttpClient({
|
|
20
21
|
baseUrl,
|
|
21
22
|
apiKey: args.config.apiKey,
|
|
22
23
|
secret: args.config.secret,
|
|
23
24
|
logger: args.logger,
|
|
24
25
|
});
|
|
25
|
-
const publicStream = new BinanceFuturesPublicStream_1.BinanceFuturesPublicStream(
|
|
26
|
+
const publicStream = new BinanceFuturesPublicStream_1.BinanceFuturesPublicStream(webSocketCombinedUrl, args.logger, args.onNotify);
|
|
26
27
|
super(args, httpClient, publicStream);
|
|
27
28
|
}
|
|
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);
|
|
33
|
+
}
|
|
28
34
|
async fetchPosition(symbol) {
|
|
29
35
|
this.logger.debug(`Fetching position for ${symbol}`);
|
|
30
36
|
const rawPositionList = await this.httpClient.fetchPositionRisk(symbol);
|
|
@@ -40,7 +46,7 @@ class BinanceFutures extends BinanceBaseClient_1.BinanceBaseClient {
|
|
|
40
46
|
}
|
|
41
47
|
async setMarginMode(marginMode, symbol) {
|
|
42
48
|
this.logger.info(`Setting margin mode to ${marginMode} for ${symbol}`);
|
|
43
|
-
const marginType = marginMode ===
|
|
49
|
+
const marginType = marginMode === common_1.MarginMode.Isolated ? 'ISOLATED' : 'CROSSED';
|
|
44
50
|
await this.httpClient.setMarginType(symbol, marginType);
|
|
45
51
|
}
|
|
46
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinanceFutures.js","sourceRoot":"","sources":["../../src/exchanges/BinanceFutures.ts"],"names":[],"mappings":";;;AAEA,+EAA4E;AAC5E,
|
|
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,11 +1,13 @@
|
|
|
1
1
|
import type { ExchangeArgs } from '../types/exchange';
|
|
2
|
-
import type { Position,
|
|
2
|
+
import type { Position, FundingRateHistory } from '../types/common';
|
|
3
|
+
import { MarginMode } from '../types/common';
|
|
3
4
|
import { BinanceSpotHttpClient } from '../http/BinanceSpotHttpClient';
|
|
4
5
|
import { BinanceBaseClient } from './BinanceBaseClient';
|
|
5
6
|
declare class BinanceSpot extends BinanceBaseClient<BinanceSpotHttpClient> {
|
|
6
7
|
protected readonly marketLabel = "spot";
|
|
7
8
|
protected readonly klineLimit = 1000;
|
|
8
9
|
constructor(args: ExchangeArgs);
|
|
10
|
+
fetchFundingRateHistory(): Promise<FundingRateHistory[]>;
|
|
9
11
|
fetchPosition(_symbol: string): Promise<Position>;
|
|
10
12
|
setLeverage(_leverage: number, _symbol: string): Promise<void>;
|
|
11
13
|
setMarginMode(_marginMode: MarginMode, _symbol: string): Promise<void>;
|