tardis-dev 13.11.0 → 13.12.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.
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WooxBookTickerMapper = exports.WooxDerivativeTickerMapper = exports.WooxBookChangeMapper = exports.wooxTradesMapper = void 0;
4
+ const handy_1 = require("../handy");
5
+ const mapper_1 = require("./mapper");
6
+ exports.wooxTradesMapper = {
7
+ canHandle(message) {
8
+ return message.topic !== undefined && message.topic.endsWith('@trade');
9
+ },
10
+ getFilters(symbols) {
11
+ symbols = (0, handy_1.upperCaseSymbols)(symbols);
12
+ return [
13
+ {
14
+ channel: 'trade',
15
+ symbols
16
+ }
17
+ ];
18
+ },
19
+ *map(message, localTimestamp) {
20
+ const timestamp = new Date(message.ts);
21
+ yield {
22
+ type: 'trade',
23
+ symbol: message.data.symbol,
24
+ exchange: 'woo-x',
25
+ id: undefined,
26
+ price: message.data.price,
27
+ amount: message.data.size,
28
+ side: message.data.side === 'SELL' ? 'sell' : 'buy',
29
+ timestamp,
30
+ localTimestamp: localTimestamp
31
+ };
32
+ }
33
+ };
34
+ class WooxBookChangeMapper {
35
+ constructor() {
36
+ this._symbolToDepthInfoMapping = {};
37
+ }
38
+ canHandle(message) {
39
+ if ('id' in message) {
40
+ return message.id.endsWith('@orderbook');
41
+ }
42
+ if ('topic' in message) {
43
+ return message.topic.endsWith('@orderbookupdate');
44
+ }
45
+ return false;
46
+ }
47
+ getFilters(symbols) {
48
+ symbols = (0, handy_1.upperCaseSymbols)(symbols);
49
+ return [
50
+ {
51
+ channel: 'orderbook',
52
+ symbols
53
+ },
54
+ {
55
+ channel: 'orderbookupdate',
56
+ symbols
57
+ }
58
+ ];
59
+ }
60
+ *map(message, localTimestamp) {
61
+ const symbol = message.data.symbol;
62
+ if (this._symbolToDepthInfoMapping[symbol] === undefined) {
63
+ this._symbolToDepthInfoMapping[symbol] = {
64
+ bufferedUpdates: []
65
+ };
66
+ }
67
+ const symbolDepthInfo = this._symbolToDepthInfoMapping[symbol];
68
+ const snapshotAlreadyProcessed = symbolDepthInfo.snapshotProcessed;
69
+ // first check if received message is snapshot and process it as such if it is
70
+ if ('id' in message && message.success) {
71
+ yield {
72
+ type: 'book_change',
73
+ symbol,
74
+ exchange: 'woo-x',
75
+ isSnapshot: true,
76
+ bids: message.data.bids.map(this._mapBookLevel),
77
+ asks: message.data.asks.map(this._mapBookLevel),
78
+ timestamp: new Date(message.data.ts),
79
+ localTimestamp
80
+ };
81
+ // mark given symbol depth info that has snapshot processed
82
+ symbolDepthInfo.lastUpdateTimestamp = message.data.ts;
83
+ symbolDepthInfo.snapshotProcessed = true;
84
+ // if there were any depth updates buffered, let's proccess those
85
+ for (const update of symbolDepthInfo.bufferedUpdates) {
86
+ const bookChange = this._mapBookDepthUpdate(update, localTimestamp, symbolDepthInfo, symbol);
87
+ if (bookChange !== undefined) {
88
+ yield bookChange;
89
+ }
90
+ }
91
+ // remove all buffered updates
92
+ symbolDepthInfo.bufferedUpdates = [];
93
+ }
94
+ else if (snapshotAlreadyProcessed) {
95
+ // snapshot was already processed let's map the message as normal book_change
96
+ const bookChange = this._mapBookDepthUpdate(message, localTimestamp, symbolDepthInfo, symbol);
97
+ if (bookChange !== undefined) {
98
+ yield bookChange;
99
+ }
100
+ }
101
+ else {
102
+ // if snapshot hasn't been yet processed and we've got depthUpdate message, let's buffer it for later processing
103
+ symbolDepthInfo.bufferedUpdates.push(message);
104
+ }
105
+ }
106
+ _mapBookDepthUpdate(wooxBookUpdate, localTimestamp, depthInfo, symbol) {
107
+ if (wooxBookUpdate.data.prevTs < depthInfo.lastUpdateTimestamp) {
108
+ return;
109
+ }
110
+ return {
111
+ type: 'book_change',
112
+ symbol,
113
+ exchange: 'woo-x',
114
+ isSnapshot: false,
115
+ bids: wooxBookUpdate.data.bids.map(this._mapBookLevel),
116
+ asks: wooxBookUpdate.data.asks.map(this._mapBookLevel),
117
+ timestamp: new Date(wooxBookUpdate.ts),
118
+ localTimestamp
119
+ };
120
+ }
121
+ _mapBookLevel(level) {
122
+ const price = level[0];
123
+ const amount = level[1];
124
+ return { price, amount };
125
+ }
126
+ }
127
+ exports.WooxBookChangeMapper = WooxBookChangeMapper;
128
+ class WooxDerivativeTickerMapper {
129
+ constructor() {
130
+ this.pendingTickerInfoHelper = new mapper_1.PendingTickerInfoHelper();
131
+ this._indexPrices = new Map();
132
+ }
133
+ canHandle(message) {
134
+ if (message.topic === undefined) {
135
+ return false;
136
+ }
137
+ const symbol = (message.data && message.data.symbol) || '';
138
+ const isPerp = symbol.startsWith('PERP_');
139
+ return ((message.topic.endsWith('@trade') && isPerp) ||
140
+ (message.topic.endsWith('@markprice') && isPerp) ||
141
+ (message.topic.endsWith('@estfundingrate') && isPerp) ||
142
+ message.topic.endsWith('@indexprice') ||
143
+ (message.topic.endsWith('@openinterest') && isPerp));
144
+ }
145
+ getFilters(symbols) {
146
+ symbols = (0, handy_1.upperCaseSymbols)(symbols);
147
+ const spotSymbols = symbols !== undefined ? symbols.map((s) => s.replace('PERP_', 'SPOT_')) : [];
148
+ return [
149
+ {
150
+ channel: 'trade',
151
+ symbols
152
+ },
153
+ {
154
+ channel: 'markprice',
155
+ symbols
156
+ },
157
+ {
158
+ channel: 'estfundingrate',
159
+ symbols
160
+ },
161
+ {
162
+ channel: 'openinterest',
163
+ symbols
164
+ },
165
+ {
166
+ channel: 'indexprice',
167
+ symbols: spotSymbols
168
+ }
169
+ ];
170
+ }
171
+ *map(message, localTimestamp) {
172
+ if (message.topic.endsWith('@indexprice')) {
173
+ this._indexPrices.set(message.data.symbol.replace('SPOT_', 'PERP_'), message.data.price);
174
+ }
175
+ else {
176
+ const symbol = message.data.symbol;
177
+ const pendingTickerInfo = this.pendingTickerInfoHelper.getPendingTickerInfo(symbol, 'woo-x');
178
+ const lastIndexPrice = this._indexPrices.get(symbol);
179
+ if (lastIndexPrice !== undefined) {
180
+ pendingTickerInfo.updateIndexPrice(lastIndexPrice);
181
+ }
182
+ if (message.topic.endsWith('@markprice')) {
183
+ pendingTickerInfo.updateMarkPrice(message.data.price);
184
+ pendingTickerInfo.updateTimestamp(new Date(message.ts));
185
+ }
186
+ if (message.topic.endsWith('@trade')) {
187
+ pendingTickerInfo.updateLastPrice(message.data.price);
188
+ pendingTickerInfo.updateTimestamp(new Date(message.ts));
189
+ }
190
+ if (message.topic.endsWith('@estfundingrate')) {
191
+ pendingTickerInfo.updateFundingRate(message.data.fundingRate);
192
+ pendingTickerInfo.updateFundingTimestamp(new Date(message.data.fundingTs));
193
+ pendingTickerInfo.updateTimestamp(new Date(message.ts));
194
+ }
195
+ if (message.topic.endsWith('@openinterest')) {
196
+ pendingTickerInfo.updateOpenInterest(message.data.openInterest);
197
+ pendingTickerInfo.updateTimestamp(new Date(message.ts));
198
+ }
199
+ if (pendingTickerInfo.hasChanged()) {
200
+ yield pendingTickerInfo.getSnapshot(localTimestamp);
201
+ }
202
+ }
203
+ }
204
+ }
205
+ exports.WooxDerivativeTickerMapper = WooxDerivativeTickerMapper;
206
+ class WooxBookTickerMapper {
207
+ canHandle(message) {
208
+ return message.topic !== undefined && message.topic.endsWith('@bbo');
209
+ }
210
+ getFilters(symbols) {
211
+ symbols = (0, handy_1.upperCaseSymbols)(symbols);
212
+ return [
213
+ {
214
+ channel: 'bbo',
215
+ symbols
216
+ }
217
+ ];
218
+ }
219
+ *map(wooxBBOMessage, localTimestamp) {
220
+ const wooxBookTicker = wooxBBOMessage.data;
221
+ const ticker = {
222
+ type: 'book_ticker',
223
+ symbol: wooxBookTicker.symbol,
224
+ exchange: 'woo-x',
225
+ askAmount: wooxBookTicker.askSize !== undefined ? wooxBookTicker.askSize : undefined,
226
+ askPrice: wooxBookTicker.ask !== undefined ? wooxBookTicker.ask : undefined,
227
+ bidPrice: wooxBookTicker.bid !== undefined ? wooxBookTicker.bid : undefined,
228
+ bidAmount: wooxBookTicker.bidSize !== undefined ? wooxBookTicker.bidSize : undefined,
229
+ timestamp: new Date(wooxBBOMessage.ts),
230
+ localTimestamp: localTimestamp
231
+ };
232
+ yield ticker;
233
+ }
234
+ }
235
+ exports.WooxBookTickerMapper = WooxBookTickerMapper;
236
+ //# sourceMappingURL=woox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"woox.js","sourceRoot":"","sources":["../../src/mappers/woox.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AA6B3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAmB7C,cAAc,gBAAgB,CAAA;AAuD9B,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAMvE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACzB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,iDAKjC;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,QAEpF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AA6B3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAoB7C,cAAc,gBAAgB,CAAA;AAwD9B,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAMvE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EACzB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,iDAKjC;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,QAEpF"}
@@ -48,6 +48,7 @@ const bybitspot_1 = require("./bybitspot");
48
48
  const cryptocom_1 = require("./cryptocom");
49
49
  const kucoin_1 = require("./kucoin");
50
50
  const bitnomial_1 = require("./bitnomial");
51
+ const woox_1 = require("./woox");
51
52
  __exportStar(require("./realtimefeed"), exports);
52
53
  const realTimeFeedsMap = {
53
54
  bitmex: bitmex_1.BitmexRealTimeFeed,
@@ -97,7 +98,8 @@ const realTimeFeedsMap = {
97
98
  'crypto-com': cryptocom_1.CryptoComRealTimeFeed,
98
99
  'crypto-com-derivatives': cryptocom_1.CryptoComRealTimeFeed,
99
100
  kucoin: kucoin_1.KucoinRealTimeFeed,
100
- bitnomial: bitnomial_1.BitnomialRealTimeFeed
101
+ bitnomial: bitnomial_1.BitnomialRealTimeFeed,
102
+ 'woo-x': woox_1.WooxRealTimeFeed
101
103
  };
102
104
  function getRealTimeFeedFactory(exchange) {
103
105
  if (realTimeFeedsMap[exchange]) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/realtimefeeds/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/realtimefeeds/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Filter } from '../types';
2
+ import { RealTimeFeedBase } from './realtimefeed';
3
+ export declare class WooxRealTimeFeed extends RealTimeFeedBase {
4
+ protected wssURL: string;
5
+ protected mapToSubscribeMessages(filters: Filter<string>[]): any[];
6
+ protected provideManualSnapshots(filters: Filter<string>[], shouldCancel: () => boolean): Promise<void>;
7
+ protected messageIsError(message: any): boolean;
8
+ protected messageIsHeartbeat(message: any): boolean;
9
+ protected onMessage(msg: any): void;
10
+ }
11
+ //# sourceMappingURL=woox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"woox.d.ts","sourceRoot":"","sources":["../../src/realtimefeeds/woox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,SAAS,CAAC,MAAM,SAAyE;IAEzF,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE;cAmBlD,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO;IA4B7F,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAI/C,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO;IAInD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG;CAO7B"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WooxRealTimeFeed = void 0;
4
+ const handy_1 = require("../handy");
5
+ const realtimefeed_1 = require("./realtimefeed");
6
+ class WooxRealTimeFeed extends realtimefeed_1.RealTimeFeedBase {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.wssURL = 'wss://wss.woo.org/ws/stream/OqdphuyCtYWxwzhxyLLjOWNdFP7sQt8RPWzmb5xY';
10
+ }
11
+ mapToSubscribeMessages(filters) {
12
+ return filters
13
+ .filter((filter) => filter.channel !== 'orderbook')
14
+ .map((filter) => {
15
+ if (!filter.symbols || filter.symbols.length === 0) {
16
+ throw new Error('WooxRealTimeFeed requires explicitly specified symbols when subscribing to live feed');
17
+ }
18
+ return filter.symbols.map((symbol) => {
19
+ return {
20
+ id: `${symbol}@${filter.channel}`,
21
+ topic: `${symbol}@${filter.channel}`,
22
+ event: 'subscribe'
23
+ };
24
+ });
25
+ })
26
+ .flatMap((f) => f);
27
+ }
28
+ async provideManualSnapshots(filters, shouldCancel) {
29
+ const orderbookFilter = filters.find((f) => f.channel === 'orderbook');
30
+ if (!orderbookFilter) {
31
+ return;
32
+ }
33
+ await (0, handy_1.wait)(200);
34
+ for (let symbol of orderbookFilter.symbols) {
35
+ if (shouldCancel()) {
36
+ return;
37
+ }
38
+ this.send({
39
+ id: `${symbol}@orderbook`,
40
+ event: 'request',
41
+ params: {
42
+ type: 'orderbook',
43
+ symbol
44
+ }
45
+ });
46
+ await (0, handy_1.wait)(1);
47
+ }
48
+ this.debug('sent orderbook requests for: %s', orderbookFilter.symbols);
49
+ }
50
+ messageIsError(message) {
51
+ return message.success === false || message.errorMsg !== undefined;
52
+ }
53
+ messageIsHeartbeat(message) {
54
+ return message.event === 'ping';
55
+ }
56
+ onMessage(msg) {
57
+ if (msg.event === 'ping') {
58
+ this.send({
59
+ event: 'ping'
60
+ });
61
+ }
62
+ }
63
+ }
64
+ exports.WooxRealTimeFeed = WooxRealTimeFeed;
65
+ //# sourceMappingURL=woox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"woox.js","sourceRoot":"","sources":["../../src/realtimefeeds/woox.ts"],"names":[],"mappings":";;;AAAA,oCAA+B;AAE/B,iDAAiD;AAEjD,MAAa,gBAAiB,SAAQ,+BAAgB;IAAtD;;QACY,WAAM,GAAG,sEAAsE,CAAA;IAgE3F,CAAC;IA9DW,sBAAsB,CAAC,OAAyB;QACxD,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,WAAW,CAAC;aAClD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClD,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAA;aACxG;YAED,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnC,OAAO;oBACL,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;oBACjC,KAAK,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;oBACpC,KAAK,EAAE,WAAW;iBACnB,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAES,KAAK,CAAC,sBAAsB,CAAC,OAAyB,EAAE,YAA2B;QAC3F,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAA;QACtE,IAAI,CAAC,eAAe,EAAE;YACpB,OAAM;SACP;QAED,MAAM,IAAA,YAAI,EAAC,GAAG,CAAC,CAAA;QAEf,KAAK,IAAI,MAAM,IAAI,eAAe,CAAC,OAAQ,EAAE;YAC3C,IAAI,YAAY,EAAE,EAAE;gBAClB,OAAM;aACP;YAED,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,EAAE,GAAG,MAAM,YAAY;gBACzB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE;oBACN,IAAI,EAAE,WAAW;oBACjB,MAAM;iBACP;aACF,CAAC,CAAA;YAEF,MAAM,IAAA,YAAI,EAAC,CAAC,CAAC,CAAA;SACd;QAED,IAAI,CAAC,KAAK,CAAC,iCAAiC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;IACxE,CAAC;IAES,cAAc,CAAC,OAAY;QACnC,OAAO,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAA;IACpE,CAAC;IAES,kBAAkB,CAAC,OAAY;QACvC,OAAO,OAAO,CAAC,KAAK,KAAK,MAAM,CAAA;IACjC,CAAC;IAES,SAAS,CAAC,GAAQ;QAC1B,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,MAAM;aACd,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAjED,4CAiEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tardis-dev",
3
- "version": "13.11.0",
3
+ "version": "13.12.0",
4
4
  "engines": {
5
5
  "node": ">=12"
6
6
  },
package/src/consts.ts CHANGED
@@ -46,7 +46,8 @@ export const EXCHANGES = [
46
46
  'crypto-com',
47
47
  'crypto-com-derivatives',
48
48
  'kucoin',
49
- 'bitnomial'
49
+ 'bitnomial',
50
+ 'woo-x'
50
51
  ] as const
51
52
 
52
53
  const BINANCE_CHANNELS = ['trade', 'aggTrade', 'ticker', 'depth', 'depthSnapshot', 'bookTicker', 'recentTrades', 'borrowInterest'] as const
@@ -386,6 +387,18 @@ const KUCOIN_CHANNELS = ['market/ticker', 'market/snapshot', 'market/level2', 'm
386
387
 
387
388
  const BITNOMIAL_CHANNELS = ['trade', 'level', 'book', 'block', 'status']
388
389
 
390
+ const WOOX_CHANNELS = [
391
+ 'trade',
392
+ 'orderbook',
393
+ 'orderbookupdate',
394
+ 'ticker',
395
+ 'bbo',
396
+ 'indexprice',
397
+ 'markprice',
398
+ 'openinterest',
399
+ 'estfundingrate'
400
+ ]
401
+
389
402
  export const EXCHANGE_CHANNELS_INFO = {
390
403
  bitmex: BITMEX_CHANNELS,
391
404
  coinbase: COINBASE_CHANNELS,
@@ -434,5 +447,6 @@ export const EXCHANGE_CHANNELS_INFO = {
434
447
  'crypto-com': CRYPTO_COM_CHANNELS,
435
448
  'crypto-com-derivatives': CRYPTO_COM_DERIVATIVES,
436
449
  kucoin: KUCOIN_CHANNELS,
437
- bitnomial: BITNOMIAL_CHANNELS
450
+ bitnomial: BITNOMIAL_CHANNELS,
451
+ 'woo-x': WOOX_CHANNELS
438
452
  }
@@ -395,7 +395,7 @@ export class BinanceLiquidationsMapper implements Mapper<'binance-futures' | 'bi
395
395
  symbol: binanceLiquidation.s,
396
396
  exchange: this._exchange,
397
397
  id: undefined,
398
- price: Number(binanceLiquidation.ap), // use Average Price that matches trade
398
+ price: Number(binanceLiquidation.p),
399
399
  amount: Number(binanceLiquidation.z), // use Order Filled Accumulated Quantity
400
400
  side: binanceLiquidation.S === 'SELL' ? 'sell' : 'buy',
401
401
  timestamp: new Date(binanceLiquidation.T),
@@ -90,6 +90,7 @@ import { phemexBookChangeMapper, PhemexDerivativeTickerMapper, phemexTradesMappe
90
90
  import { PoloniexBookChangeMapper, PoloniexTradesMapper, PoloniexV2BookChangeMapper, PoloniexV2TradesMapper } from './poloniex'
91
91
  import { SerumBookChangeMapper, SerumBookTickerMapper, SerumTradesMapper } from './serum'
92
92
  import { UpbitBookChangeMapper, UpbitTradesMapper } from './upbit'
93
+ import { WooxBookChangeMapper, WooxBookTickerMapper, WooxDerivativeTickerMapper, wooxTradesMapper } from './woox'
93
94
 
94
95
  export * from './mapper'
95
96
 
@@ -183,7 +184,8 @@ const tradesMappers = {
183
184
  'crypto-com': () => new CryptoComTradesMapper('crypto-com'),
184
185
  'crypto-com-derivatives': () => new CryptoComTradesMapper('crypto-com-derivatives'),
185
186
  kucoin: () => new KucoinTradesMapper('kucoin'),
186
- bitnomial: () => bitnomialTradesMapper
187
+ bitnomial: () => bitnomialTradesMapper,
188
+ 'woo-x': () => wooxTradesMapper
187
189
  }
188
190
 
189
191
  const bookChangeMappers = {
@@ -257,7 +259,8 @@ const bookChangeMappers = {
257
259
  'crypto-com': () => new CryptoComBookChangeMapper('crypto-com'),
258
260
  'crypto-com-derivatives': () => new CryptoComBookChangeMapper('crypto-com-derivatives'),
259
261
  kucoin: (localTimestamp: Date) => new KucoinBookChangeMapper('kucoin', isRealTime(localTimestamp) === false),
260
- bitnomial: () => new BitnomialBookChangMapper()
262
+ bitnomial: () => new BitnomialBookChangMapper(),
263
+ 'woo-x': () => new WooxBookChangeMapper()
261
264
  }
262
265
 
263
266
  const derivativeTickersMappers = {
@@ -287,7 +290,8 @@ const derivativeTickersMappers = {
287
290
  ascendex: () => new AscendexDerivativeTickerMapper(),
288
291
  dydx: () => new DydxDerivativeTickerMapper(),
289
292
  'crypto-com-derivatives': () => new CryptoComDerivativeTickerMapper('crypto-com-derivatives'),
290
- 'crypto-com': () => new CryptoComDerivativeTickerMapper('crypto-com')
293
+ 'crypto-com': () => new CryptoComDerivativeTickerMapper('crypto-com'),
294
+ 'woo-x': () => new WooxDerivativeTickerMapper()
291
295
  }
292
296
 
293
297
  const optionsSummaryMappers = {
@@ -367,7 +371,8 @@ const bookTickersMappers = {
367
371
  'bybit-spot': () => new BybitSpotBookTickerMapper('bybit-spot'),
368
372
  'crypto-com': () => new CryptoComBookTickerMapper('crypto-com'),
369
373
  'crypto-com-derivatives': () => new CryptoComBookTickerMapper('crypto-com-derivatives'),
370
- kucoin: () => new KucoinBookTickerMapper('kucoin')
374
+ kucoin: () => new KucoinBookTickerMapper('kucoin'),
375
+ 'woo-x': () => new WooxBookTickerMapper()
371
376
  }
372
377
 
373
378
  export const normalizeTrades = <T extends keyof typeof tradesMappers>(exchange: T, localTimestamp: Date): Mapper<T, Trade> => {