tardis-dev 12.7.7 → 13.1.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.
@@ -1,5 +1,249 @@
1
1
  import { BookChange, DerivativeTicker, Exchange, Trade, OptionSummary, Liquidation, BookTicker } from '../types';
2
2
  import { Mapper } from './mapper';
3
+ export declare class OkexV5TradesMapper implements Mapper<OKEX_EXCHANGES, Trade> {
4
+ private readonly _exchange;
5
+ constructor(_exchange: Exchange);
6
+ canHandle(message: any): boolean;
7
+ getFilters(symbols?: string[]): {
8
+ channel: "trades";
9
+ symbols: string[] | undefined;
10
+ }[];
11
+ map(okexTradesMessage: OkexV5TradeMessage, localTimestamp: Date): IterableIterator<Trade>;
12
+ }
13
+ export declare class OkexV5BookChangeMapper implements Mapper<OKEX_EXCHANGES, BookChange> {
14
+ private readonly _exchange;
15
+ constructor(_exchange: Exchange);
16
+ canHandle(message: any): boolean;
17
+ getFilters(symbols?: string[]): {
18
+ channel: "books-l2-tbt";
19
+ symbols: string[] | undefined;
20
+ }[];
21
+ map(okexDepthDataMessage: OkexV5BookMessage, localTimestamp: Date): IterableIterator<BookChange>;
22
+ }
23
+ export declare class OkexV5BookTickerMapper implements Mapper<OKEX_EXCHANGES, BookTicker> {
24
+ private readonly _exchange;
25
+ constructor(_exchange: Exchange);
26
+ canHandle(message: any): boolean;
27
+ getFilters(symbols?: string[]): {
28
+ channel: "tickers";
29
+ symbols: string[] | undefined;
30
+ }[];
31
+ map(message: OkexV5TickerMessage, localTimestamp: Date): IterableIterator<BookTicker>;
32
+ }
33
+ export declare class OkexV5DerivativeTickerMapper implements Mapper<'okex-futures' | 'okex-swap', DerivativeTicker> {
34
+ private readonly _exchange;
35
+ private readonly pendingTickerInfoHelper;
36
+ private readonly _indexPrices;
37
+ private _futuresChannels;
38
+ private _swapChannels;
39
+ constructor(_exchange: Exchange);
40
+ canHandle(message: any): boolean;
41
+ getFilters(symbols?: string[]): ({
42
+ channel: "index-tickers";
43
+ symbols: string[] | undefined;
44
+ } | {
45
+ channel: "tickers" | "open-interest" | "mark-price" | "funding-rate";
46
+ symbols: string[] | undefined;
47
+ })[];
48
+ map(message: OkexV5TickerMessage | OkexV5OpenInterestMessage | OkexV5MarkPriceMessage | OkexV5IndexTickerMessage | OkexV5FundingRateMessage, localTimestamp: Date): IterableIterator<DerivativeTicker>;
49
+ }
50
+ export declare class OkexV5LiquidationsMapper implements Mapper<OKEX_EXCHANGES, Liquidation> {
51
+ private readonly _exchange;
52
+ constructor(_exchange: Exchange);
53
+ canHandle(message: any): boolean;
54
+ getFilters(symbols?: string[]): any[];
55
+ map(okexLiquidationMessage: OkexV5LiquidationMessage, localTimestamp: Date): IterableIterator<Liquidation>;
56
+ }
57
+ export declare class OkexV5OptionSummaryMapper implements Mapper<'okex-options', OptionSummary> {
58
+ private readonly _indexPrices;
59
+ private readonly _openInterests;
60
+ private readonly _markPrices;
61
+ private readonly _tickers;
62
+ private readonly expiration_regex;
63
+ canHandle(message: any): boolean;
64
+ getFilters(symbols?: string[]): ({
65
+ readonly channel: "opt-summary";
66
+ readonly symbols: string[];
67
+ } | {
68
+ readonly channel: "index-tickers";
69
+ readonly symbols: string[] | undefined;
70
+ } | {
71
+ readonly channel: "tickers";
72
+ readonly symbols: string[] | undefined;
73
+ } | {
74
+ readonly channel: "open-interest";
75
+ readonly symbols: string[] | undefined;
76
+ } | {
77
+ readonly channel: "mark-price";
78
+ readonly symbols: string[] | undefined;
79
+ })[];
80
+ map(message: OkexV5SummaryMessage | OkexV5IndexTickerMessage | OkexV5TickerMessage | OkexV5OpenInterestMessage | OkexV5MarkPriceMessage, localTimestamp: Date): IterableIterator<OptionSummary> | undefined;
81
+ }
82
+ declare type OkexV5TradeMessage = {
83
+ arg: {
84
+ channel: 'trades';
85
+ instId: 'CRV-USDT';
86
+ };
87
+ data: [{
88
+ instId: 'CRV-USDT';
89
+ tradeId: '21300150';
90
+ px: '3.973';
91
+ sz: '13.491146';
92
+ side: 'buy';
93
+ ts: '1639999319938';
94
+ }];
95
+ };
96
+ declare type OkexV5BookLevel = [string, string, string, string];
97
+ declare type OkexV5BookMessage = {
98
+ arg: {
99
+ channel: 'books-l2-tbt';
100
+ instId: string;
101
+ };
102
+ action: 'snapshot';
103
+ data: [
104
+ {
105
+ asks: OkexV5BookLevel[];
106
+ bids: OkexV5BookLevel[];
107
+ ts: string;
108
+ }
109
+ ];
110
+ } | {
111
+ arg: {
112
+ channel: 'books-l2-tbt';
113
+ instId: string;
114
+ };
115
+ action: 'update';
116
+ data: [{
117
+ asks: OkexV5BookLevel[];
118
+ bids: OkexV5BookLevel[];
119
+ ts: string;
120
+ }];
121
+ };
122
+ declare type OkexV5TickerMessage = {
123
+ arg: {
124
+ channel: 'tickers';
125
+ instId: string;
126
+ };
127
+ data: [
128
+ {
129
+ instType: 'SPOT';
130
+ instId: 'ACT-USDT';
131
+ last: '0.00718';
132
+ lastSz: '8052.117146';
133
+ askPx: '0.0072';
134
+ askSz: '54969.407534';
135
+ bidPx: '0.00713';
136
+ bidSz: '4092.326';
137
+ open24h: '0.00717';
138
+ high24h: '0.00722';
139
+ low24h: '0.00696';
140
+ sodUtc0: '0.00714';
141
+ sodUtc8: '0.00721';
142
+ volCcy24h: '278377.765301';
143
+ vol24h: '39168761.49997';
144
+ ts: '1639999318686';
145
+ }
146
+ ];
147
+ };
148
+ declare type OkexV5OpenInterestMessage = {
149
+ arg: {
150
+ channel: 'open-interest';
151
+ instId: string;
152
+ };
153
+ data: [{
154
+ instId: 'FIL-USDT-220325';
155
+ instType: 'FUTURES';
156
+ oi: '236870';
157
+ oiCcy: '23687';
158
+ ts: '1640131202886';
159
+ }];
160
+ };
161
+ declare type OkexV5MarkPriceMessage = {
162
+ arg: {
163
+ channel: 'mark-price';
164
+ instId: string;
165
+ };
166
+ data: [{
167
+ instId: 'FIL-USDT-220325';
168
+ instType: 'FUTURES';
169
+ markPx: '36.232';
170
+ ts: '1640131204676';
171
+ }];
172
+ };
173
+ declare type OkexV5IndexTickerMessage = {
174
+ arg: {
175
+ channel: 'index-tickers';
176
+ instId: string;
177
+ };
178
+ data: [
179
+ {
180
+ instId: 'FIL-USDT';
181
+ idxPx: '35.583';
182
+ open24h: '34.558';
183
+ high24h: '35.862';
184
+ low24h: '34.529';
185
+ sodUtc0: '35.309';
186
+ sodUtc8: '34.83';
187
+ ts: '1640140200581';
188
+ }
189
+ ];
190
+ };
191
+ declare type OkexV5FundingRateMessage = {
192
+ arg: {
193
+ channel: 'funding-rate';
194
+ instId: string;
195
+ };
196
+ data: [{
197
+ fundingRate: '0.00048105';
198
+ fundingTime: '1640131200000';
199
+ instId: string;
200
+ instType: 'SWAP';
201
+ nextFundingRate: '0.00114';
202
+ }];
203
+ };
204
+ declare type OkexV5LiquidationMessage = {
205
+ arg: {
206
+ channel: 'liquidations';
207
+ instId: 'BTC-USDT-211231';
208
+ generated: true;
209
+ };
210
+ data: [{
211
+ bkLoss: '0';
212
+ bkPx: '49674.2';
213
+ ccy: '';
214
+ posSide: 'short';
215
+ side: 'buy';
216
+ sz: '40';
217
+ ts: '1640140211925';
218
+ }];
219
+ };
220
+ declare type OkexV5SummaryMessage = {
221
+ arg: {
222
+ channel: 'opt-summary';
223
+ uly: 'ETH-USD';
224
+ };
225
+ data: [
226
+ {
227
+ instType: 'OPTION';
228
+ instId: 'ETH-USD-211222-4000-C';
229
+ uly: 'ETH-USD';
230
+ delta: '0.1975745164';
231
+ gamma: '4.7290833601';
232
+ vega: '0.0002005415';
233
+ theta: '-0.004262964';
234
+ lever: '162.472613953';
235
+ markVol: '0.7794507758';
236
+ bidVol: '0.7421960156';
237
+ askVol: '0.8203208593';
238
+ realVol: '';
239
+ deltaBS: '0.2038286081';
240
+ gammaBS: '0.0013437829';
241
+ thetaBS: '-16.4798150221';
242
+ vegaBS: '0.7647227087';
243
+ ts: '1640001659301';
244
+ }
245
+ ];
246
+ };
3
247
  export declare class OkexTradesMapper implements Mapper<OKEX_EXCHANGES, Trade> {
4
248
  private readonly _exchange;
5
249
  private readonly _market;
@@ -1 +1 @@
1
- {"version":3,"file":"okex.d.ts","sourceRoot":"","sources":["../../src/mappers/okex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"okex.d.ts","sourceRoot":"","sources":["../../src/mappers/okex.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAChH,OAAO,EAAE,MAAM,EAA2B,MAAM,UAAU,CAAA;AAK1D,qBAAa,kBAAmB,YAAW,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,QAAQ;IAEhD,SAAS,CAAC,OAAO,EAAE,GAAG;IAOtB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;;;;IAS5B,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;CAe3F;AASD,qBAAa,sBAAuB,YAAW,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,QAAQ;IAEhD,SAAS,CAAC,OAAO,EAAE,GAAG;IAOtB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;;;;IAS5B,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC;CAwBlG;AAED,qBAAa,sBAAuB,YAAW,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,QAAQ;IAEhD,SAAS,CAAC,OAAO,EAAE,GAAG;IAOtB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;;;;IAS5B,GAAG,CAAC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC;CAmBvF;AAED,qBAAa,4BAA6B,YAAW,MAAM,CAAC,cAAc,GAAG,WAAW,EAAE,gBAAgB,CAAC;IAQ7F,OAAO,CAAC,QAAQ,CAAC,SAAS;IAPtC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAgC;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD,OAAO,CAAC,gBAAgB,CAAuE;IAE/F,OAAO,CAAC,aAAa,CAAuF;gBAE/E,SAAS,EAAE,QAAQ;IAEhD,SAAS,CAAC,OAAO,EAAE,GAAG;IAUtB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;;;;;;;IAwB5B,GAAG,CACF,OAAO,EAAE,mBAAmB,GAAG,yBAAyB,GAAG,sBAAsB,GAAG,wBAAwB,GAAG,wBAAwB,EACvI,cAAc,EAAE,IAAI,GACnB,gBAAgB,CAAC,gBAAgB,CAAC;CAyEtC;AAED,qBAAa,wBAAyB,YAAW,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC;IACtE,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,QAAQ;IAEhD,SAAS,CAAC,OAAO,EAAE,GAAG;IAOtB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;IAS5B,GAAG,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC;CAgB5G;AAED,qBAAa,yBAA0B,YAAW,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC;IACrF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IAExD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAC7E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAE3D,SAAS,CAAC,OAAO,EAAE,GAAG;IAatB,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;;;;;;;;;;;;;;;;IAiC5B,GAAG,CACF,OAAO,EAAE,oBAAoB,GAAG,wBAAwB,GAAG,mBAAmB,GAAG,yBAAyB,GAAG,sBAAsB,EACnI,cAAc,EAAE,IAAI,GACnB,gBAAgB,CAAC,aAAa,CAAC,GAAG,SAAS;CAwG/C;AAED,aAAK,kBAAkB,GAAG;IACxB,GAAG,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAA;IAC9C,IAAI,EAAE,CAAC;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,eAAe,CAAA;KAAE,CAAC,CAAA;CACpH,CAAA;AAED,aAAK,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAEvD,aAAK,iBAAiB,GAClB;IACE,GAAG,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,EAAE;QACJ;YACE,IAAI,EAAE,eAAe,EAAE,CAAA;YACvB,IAAI,EAAE,eAAe,EAAE,CAAA;YACvB,EAAE,EAAE,MAAM,CAAA;SACX;KACF,CAAA;CACF,GACD;IACE,GAAG,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,MAAM,EAAE,QAAQ,CAAA;IAChB,IAAI,EAAE,CAAC;QAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QAAC,IAAI,EAAE,eAAe,EAAE,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACzE,CAAA;AAEL,aAAK,mBAAmB,GAAG;IACzB,GAAG,EAAE;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C,IAAI,EAAE;QACJ;YACE,QAAQ,EAAE,MAAM,CAAA;YAChB,MAAM,EAAE,UAAU,CAAA;YAClB,IAAI,EAAE,SAAS,CAAA;YACf,MAAM,EAAE,aAAa,CAAA;YACrB,KAAK,EAAE,QAAQ,CAAA;YACf,KAAK,EAAE,cAAc,CAAA;YACrB,KAAK,EAAE,SAAS,CAAA;YAChB,KAAK,EAAE,UAAU,CAAA;YACjB,OAAO,EAAE,SAAS,CAAA;YAClB,OAAO,EAAE,SAAS,CAAA;YAClB,MAAM,EAAE,SAAS,CAAA;YACjB,OAAO,EAAE,SAAS,CAAA;YAClB,OAAO,EAAE,SAAS,CAAA;YAClB,SAAS,EAAE,eAAe,CAAA;YAC1B,MAAM,EAAE,gBAAgB,CAAA;YACxB,EAAE,EAAE,eAAe,CAAA;SACpB;KACF,CAAA;CACF,CAAA;AAED,aAAK,yBAAyB,GAAG;IAC/B,GAAG,EAAE;QAAE,OAAO,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,IAAI,EAAE,CAAC;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAC;QAAC,EAAE,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,eAAe,CAAA;KAAE,CAAC,CAAA;CAC9G,CAAA;AAED,aAAK,sBAAsB,GAAG;IAC5B,GAAG,EAAE;QAAE,OAAO,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,IAAI,EAAE,CAAC;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAC;QAAC,EAAE,EAAE,eAAe,CAAA;KAAE,CAAC,CAAA;CAClG,CAAA;AAED,aAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE;QAAE,OAAO,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,IAAI,EAAE;QACJ;YACE,MAAM,EAAE,UAAU,CAAA;YAClB,KAAK,EAAE,QAAQ,CAAA;YACf,OAAO,EAAE,QAAQ,CAAA;YACjB,OAAO,EAAE,QAAQ,CAAA;YACjB,MAAM,EAAE,QAAQ,CAAA;YAChB,OAAO,EAAE,QAAQ,CAAA;YACjB,OAAO,EAAE,OAAO,CAAA;YAChB,EAAE,EAAE,eAAe,CAAA;SACpB;KACF,CAAA;CACF,CAAA;AAED,aAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,IAAI,EAAE,CAAC;QAAE,WAAW,EAAE,YAAY,CAAC;QAAC,WAAW,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;CAClI,CAAA;AAED,aAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAA;IAC5E,IAAI,EAAE,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,eAAe,CAAA;KAAE,CAAC,CAAA;CAChH,CAAA;AAED,aAAK,oBAAoB,GAAG;IAC1B,GAAG,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,GAAG,EAAE,SAAS,CAAA;KAAE,CAAA;IAC/C,IAAI,EAAE;QACJ;YACE,QAAQ,EAAE,QAAQ,CAAA;YAClB,MAAM,EAAE,uBAAuB,CAAA;YAC/B,GAAG,EAAE,SAAS,CAAA;YACd,KAAK,EAAE,cAAc,CAAA;YACrB,KAAK,EAAE,cAAc,CAAA;YACrB,IAAI,EAAE,cAAc,CAAA;YACpB,KAAK,EAAE,cAAc,CAAA;YACrB,KAAK,EAAE,eAAe,CAAA;YACtB,OAAO,EAAE,cAAc,CAAA;YACvB,MAAM,EAAE,cAAc,CAAA;YACtB,MAAM,EAAE,cAAc,CAAA;YACtB,OAAO,EAAE,EAAE,CAAA;YACX,OAAO,EAAE,cAAc,CAAA;YACvB,OAAO,EAAE,cAAc,CAAA;YACvB,OAAO,EAAE,gBAAgB,CAAA;YACzB,MAAM,EAAE,cAAc,CAAA;YACtB,EAAE,EAAE,eAAe,CAAA;SACpB;KACF,CAAA;CACF,CAAA;AAMD,qBAAa,gBAAiB,YAAW,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAY,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAA7C,SAAS,EAAE,QAAQ,EAAmB,OAAO,EAAE,YAAY;IAExF,SAAS,CAAC,OAAO,EAAE,eAAe;IAIlC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;;;;IAS5B,GAAG,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;CAiB9F;AASD,qBAAa,oBAAqB,YAAW,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC;IAE3E,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAFxB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,YAAY,EACrB,wBAAwB,EAAE,OAAO;IAGpD,SAAS,CAAC,OAAO,EAAE,eAAe;IAMlC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;;;;;;;IAyB5B,GAAG,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC;CAwBrG;AAED,qBAAa,0BAA2B,YAAW,MAAM,CAAC,cAAc,GAAG,WAAW,EAAE,gBAAgB,CAAC;IAK3F,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJtC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAgC;IACxE,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,aAAa,CAA0D;gBAElD,SAAS,EAAE,QAAQ;IAEhD,SAAS,CAAC,OAAO,EAAE,eAAe;IAMlC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;IAU5B,GAAG,CACF,OAAO,EAAE,kBAAkB,GAAG,sBAAsB,GAAG,oBAAoB,EAC3E,cAAc,EAAE,IAAI,GACnB,gBAAgB,CAAC,gBAAgB,CAAC;CAiCtC;AAED,qBAAa,uBAAwB,YAAW,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC;IACnF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAE3D,SAAS,CAAC,OAAO,EAAE,eAAe;IAIlC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;;;;;;;IAqB5B,GAAG,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,aAAa,CAAC,GAAG,SAAS;CA2DxH;AAED,qBAAa,sBAAuB,YAAW,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAY,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAA7C,SAAS,EAAE,QAAQ,EAAmB,OAAO,EAAE,YAAY;IAExF,SAAS,CAAC,OAAO,EAAE,eAAe;IAIlC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;IAS5B,GAAG,CAAC,0BAA0B,EAAE,yBAAyB,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC;CAgBjH;AAED,qBAAa,oBAAqB,YAAW,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAY,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAA7C,SAAS,EAAE,QAAQ,EAAmB,OAAO,EAAE,YAAY;IAExF,SAAS,CAAC,OAAO,EAAE,eAAe;IAIlC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;IAS5B,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC;CAmBtF;AAED,aAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,aAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;QACpB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;QACzB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;QACtB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;QACtB,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;KAClB,EAAE,CAAA;CACJ,CAAA;AAED,aAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;KACtB,EAAE,CAAA;CACJ,CAAA;AAED,aAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;QACrB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;QACzB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;QACzB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;QACjB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;KAClC,EAAE,CAAA;CACJ,CAAA;AAED,aAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE;QACJ,YAAY,EAAE,MAAM,CAAA;QACpB,YAAY,EAAE,MAAM,CAAA;QACpB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,SAAS,CAAA;KACrB,EAAE,CAAA;CACJ,CAAA;AAED,aAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;KAClB,EAAE,CAAA;CACJ,CAAA;AAED,aAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC5B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAA;QACrB,IAAI,EAAE,aAAa,EAAE,CAAA;QACrB,IAAI,EAAE,aAAa,EAAE,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;KAClB,EAAE,CAAA;CACJ,CAAA;AAED,aAAK,aAAa,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;AAEzF,aAAK,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,cAAc,CAAA;AAEvF,aAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE1D,aAAK,aAAa,GAAG;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,IAAI,EAAE;QACJ;YACE,IAAI,EAAE,MAAM,CAAA;YACZ,aAAa,EAAE,MAAM,CAAA;SACtB;KACF,CAAA;CACF,CAAA;AAED,aAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,gBAAgB,CAAA;IACvB,IAAI,EAAE;QACJ;YACE,aAAa,EAAE,MAAM,CAAA;YACrB,UAAU,EAAE,MAAM,CAAA;YAClB,QAAQ,EAAE,MAAM,CAAA;YAChB,QAAQ,EAAE,MAAM,CAAA;YAChB,aAAa,EAAE,MAAM,CAAA;YACrB,aAAa,EAAE,MAAM,CAAA;YACrB,WAAW,EAAE,MAAM,CAAA;YACnB,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,EAAE,MAAM,CAAA;YACb,OAAO,EAAE,MAAM,CAAA;YACf,OAAO,EAAE,MAAM,CAAA;YACf,QAAQ,EAAE,MAAM,CAAA;YAChB,IAAI,EAAE,MAAM,CAAA;YACZ,QAAQ,EAAE,MAAM,CAAA;YAChB,UAAU,EAAE,MAAM,CAAA;YAClB,KAAK,EAAE,MAAM,CAAA;YACb,IAAI,EAAE,MAAM,CAAA;YACZ,aAAa,EAAE,MAAM,CAAA;YACrB,SAAS,EAAE,MAAM,CAAA;SAClB;KACF,CAAA;CACF,CAAA"}
@@ -1,8 +1,391 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OkexBookTickerMapper = exports.OkexLiquidationsMapper = exports.OkexOptionSummaryMapper = exports.OkexDerivativeTickerMapper = exports.OkexBookChangeMapper = exports.OkexTradesMapper = void 0;
3
+ exports.OkexBookTickerMapper = exports.OkexLiquidationsMapper = exports.OkexOptionSummaryMapper = exports.OkexDerivativeTickerMapper = exports.OkexBookChangeMapper = exports.OkexTradesMapper = exports.OkexV5OptionSummaryMapper = exports.OkexV5LiquidationsMapper = exports.OkexV5DerivativeTickerMapper = exports.OkexV5BookTickerMapper = exports.OkexV5BookChangeMapper = exports.OkexV5TradesMapper = void 0;
4
4
  const handy_1 = require("../handy");
5
5
  const mapper_1 = require("./mapper");
6
+ // V5 Okex API mappers
7
+ // https://www.okex.com/docs-v5/en/#websocket-api-public-channel-trades-channel
8
+ class OkexV5TradesMapper {
9
+ constructor(_exchange) {
10
+ this._exchange = _exchange;
11
+ }
12
+ canHandle(message) {
13
+ if (message.event !== undefined || message.arg === undefined) {
14
+ return false;
15
+ }
16
+ return message.arg.channel === 'trades';
17
+ }
18
+ getFilters(symbols) {
19
+ return [
20
+ {
21
+ channel: `trades`,
22
+ symbols
23
+ }
24
+ ];
25
+ }
26
+ *map(okexTradesMessage, localTimestamp) {
27
+ for (const okexTrade of okexTradesMessage.data) {
28
+ yield {
29
+ type: 'trade',
30
+ symbol: okexTrade.instId,
31
+ exchange: this._exchange,
32
+ id: okexTrade.tradeId,
33
+ price: Number(okexTrade.px),
34
+ amount: Number(okexTrade.sz),
35
+ side: okexTrade.side === 'buy' ? 'buy' : 'sell',
36
+ timestamp: new Date(Number(okexTrade.ts)),
37
+ localTimestamp: localTimestamp
38
+ };
39
+ }
40
+ }
41
+ }
42
+ exports.OkexV5TradesMapper = OkexV5TradesMapper;
43
+ const mapV5BookLevel = (level) => {
44
+ const price = Number(level[0]);
45
+ const amount = Number(level[1]);
46
+ return { price, amount };
47
+ };
48
+ class OkexV5BookChangeMapper {
49
+ constructor(_exchange) {
50
+ this._exchange = _exchange;
51
+ }
52
+ canHandle(message) {
53
+ if (message.event !== undefined || message.arg === undefined) {
54
+ return false;
55
+ }
56
+ return message.arg.channel === 'books-l2-tbt';
57
+ }
58
+ getFilters(symbols) {
59
+ return [
60
+ {
61
+ channel: `books-l2-tbt`,
62
+ symbols
63
+ }
64
+ ];
65
+ }
66
+ *map(okexDepthDataMessage, localTimestamp) {
67
+ for (const message of okexDepthDataMessage.data) {
68
+ if (okexDepthDataMessage.action === 'update' && message.bids.length === 0 && message.asks.length === 0) {
69
+ continue;
70
+ }
71
+ const timestamp = new Date(Number(message.ts));
72
+ if (timestamp.valueOf() === 0) {
73
+ continue;
74
+ }
75
+ yield {
76
+ type: 'book_change',
77
+ symbol: okexDepthDataMessage.arg.instId,
78
+ exchange: this._exchange,
79
+ isSnapshot: okexDepthDataMessage.action === 'snapshot',
80
+ bids: message.bids.map(mapV5BookLevel),
81
+ asks: message.asks.map(mapV5BookLevel),
82
+ timestamp,
83
+ localTimestamp: localTimestamp
84
+ };
85
+ }
86
+ }
87
+ }
88
+ exports.OkexV5BookChangeMapper = OkexV5BookChangeMapper;
89
+ class OkexV5BookTickerMapper {
90
+ constructor(_exchange) {
91
+ this._exchange = _exchange;
92
+ }
93
+ canHandle(message) {
94
+ if (message.event !== undefined || message.arg === undefined) {
95
+ return false;
96
+ }
97
+ return message.arg.channel === 'tickers';
98
+ }
99
+ getFilters(symbols) {
100
+ return [
101
+ {
102
+ channel: `tickers`,
103
+ symbols
104
+ }
105
+ ];
106
+ }
107
+ *map(message, localTimestamp) {
108
+ for (const okexTicker of message.data) {
109
+ const ticker = {
110
+ type: 'book_ticker',
111
+ symbol: okexTicker.instId,
112
+ exchange: this._exchange,
113
+ askAmount: (0, handy_1.asNumberIfValid)(okexTicker.askSz),
114
+ askPrice: (0, handy_1.asNumberIfValid)(okexTicker.askPx),
115
+ bidPrice: (0, handy_1.asNumberIfValid)(okexTicker.bidPx),
116
+ bidAmount: (0, handy_1.asNumberIfValid)(okexTicker.bidSz),
117
+ timestamp: new Date(Number(okexTicker.ts)),
118
+ localTimestamp: localTimestamp
119
+ };
120
+ yield ticker;
121
+ }
122
+ }
123
+ }
124
+ exports.OkexV5BookTickerMapper = OkexV5BookTickerMapper;
125
+ class OkexV5DerivativeTickerMapper {
126
+ constructor(_exchange) {
127
+ this._exchange = _exchange;
128
+ this.pendingTickerInfoHelper = new mapper_1.PendingTickerInfoHelper();
129
+ this._indexPrices = new Map();
130
+ this._futuresChannels = ['tickers', 'open-interest', 'mark-price', 'index-tickers'];
131
+ this._swapChannels = ['tickers', 'open-interest', 'mark-price', 'index-tickers', 'funding-rate'];
132
+ }
133
+ canHandle(message) {
134
+ const channels = this._exchange === 'okex-futures' ? this._futuresChannels : this._swapChannels;
135
+ if (message.event !== undefined || message.arg === undefined) {
136
+ return false;
137
+ }
138
+ return channels.includes(message.arg.channel);
139
+ }
140
+ getFilters(symbols) {
141
+ const channels = this._exchange === 'okex-futures' ? this._futuresChannels : this._swapChannels;
142
+ return channels.map((channel) => {
143
+ if (channel === 'index-tickers') {
144
+ const indexes = symbols !== undefined
145
+ ? symbols.map((s) => {
146
+ const symbolParts = s.split('-');
147
+ return `${symbolParts[0]}-${symbolParts[1]}`;
148
+ })
149
+ : undefined;
150
+ return {
151
+ channel,
152
+ symbols: indexes
153
+ };
154
+ }
155
+ return {
156
+ channel,
157
+ symbols
158
+ };
159
+ });
160
+ }
161
+ *map(message, localTimestamp) {
162
+ if (message.arg.channel === 'index-tickers') {
163
+ for (const dataMessage of message.data) {
164
+ const indexTickerMessage = dataMessage;
165
+ const lastIndexPrice = Number(indexTickerMessage.idxPx);
166
+ if (lastIndexPrice > 0) {
167
+ this._indexPrices.set(indexTickerMessage.instId, lastIndexPrice);
168
+ }
169
+ }
170
+ return;
171
+ }
172
+ for (const dataMessage of message.data) {
173
+ const pendingTickerInfo = this.pendingTickerInfoHelper.getPendingTickerInfo(dataMessage.instId, this._exchange);
174
+ const symbolParts = dataMessage.instId.split('-');
175
+ const indexSymbol = `${symbolParts[0]}-${symbolParts[1]}`;
176
+ const indexPrice = this._indexPrices.get(indexSymbol);
177
+ if (indexPrice !== undefined) {
178
+ pendingTickerInfo.updateIndexPrice(indexPrice);
179
+ }
180
+ if (message.arg.channel === 'mark-price') {
181
+ const markPriceMessage = dataMessage;
182
+ const markPrice = Number(markPriceMessage.markPx);
183
+ if (markPrice > 0) {
184
+ pendingTickerInfo.updateMarkPrice(markPrice);
185
+ pendingTickerInfo.updateTimestamp(new Date(Number(markPriceMessage.ts)));
186
+ }
187
+ }
188
+ if (message.arg.channel === 'open-interest') {
189
+ const openInterestMessage = dataMessage;
190
+ const openInterest = Number(openInterestMessage.oi);
191
+ if (openInterest > 0) {
192
+ pendingTickerInfo.updateOpenInterest(openInterest);
193
+ pendingTickerInfo.updateTimestamp(new Date(Number(openInterestMessage.ts)));
194
+ }
195
+ }
196
+ if (message.arg.channel === 'funding-rate') {
197
+ const fundingRateMessage = dataMessage;
198
+ pendingTickerInfo.updateFundingRate(Number(fundingRateMessage.fundingRate));
199
+ //
200
+ pendingTickerInfo.updateFundingTimestamp(new Date(Number(fundingRateMessage.fundingTime)));
201
+ if (fundingRateMessage.nextFundingRate !== undefined) {
202
+ pendingTickerInfo.updatePredictedFundingRate(Number(fundingRateMessage.nextFundingRate));
203
+ }
204
+ }
205
+ if (message.arg.channel === 'tickers') {
206
+ const tickerMessage = dataMessage;
207
+ const lastPrice = Number(tickerMessage.last);
208
+ if (lastPrice > 0) {
209
+ pendingTickerInfo.updateLastPrice(lastPrice);
210
+ pendingTickerInfo.updateTimestamp(new Date(Number(tickerMessage.ts)));
211
+ }
212
+ }
213
+ if (pendingTickerInfo.hasChanged()) {
214
+ yield pendingTickerInfo.getSnapshot(localTimestamp);
215
+ }
216
+ }
217
+ }
218
+ }
219
+ exports.OkexV5DerivativeTickerMapper = OkexV5DerivativeTickerMapper;
220
+ class OkexV5LiquidationsMapper {
221
+ constructor(_exchange) {
222
+ this._exchange = _exchange;
223
+ }
224
+ canHandle(message) {
225
+ if (message.event !== undefined || message.arg === undefined) {
226
+ return false;
227
+ }
228
+ return message.arg.channel === 'liquidations';
229
+ }
230
+ getFilters(symbols) {
231
+ return [
232
+ {
233
+ channel: 'liquidations',
234
+ symbols
235
+ }
236
+ ];
237
+ }
238
+ *map(okexLiquidationMessage, localTimestamp) {
239
+ for (const okexLiquidation of okexLiquidationMessage.data) {
240
+ const liquidation = {
241
+ type: 'liquidation',
242
+ symbol: okexLiquidationMessage.arg.instId,
243
+ exchange: this._exchange,
244
+ id: undefined,
245
+ price: Number(okexLiquidation.bkPx),
246
+ amount: Number(okexLiquidation.sz),
247
+ side: okexLiquidation.side === 'buy' ? 'buy' : 'sell',
248
+ timestamp: new Date(Number(okexLiquidation.ts)),
249
+ localTimestamp: localTimestamp
250
+ };
251
+ yield liquidation;
252
+ }
253
+ }
254
+ }
255
+ exports.OkexV5LiquidationsMapper = OkexV5LiquidationsMapper;
256
+ class OkexV5OptionSummaryMapper {
257
+ constructor() {
258
+ this._indexPrices = new Map();
259
+ this._openInterests = new Map();
260
+ this._markPrices = new Map();
261
+ this._tickers = new Map();
262
+ this.expiration_regex = /(\d{2})(\d{2})(\d{2})/;
263
+ }
264
+ canHandle(message) {
265
+ if (message.event !== undefined || message.arg === undefined) {
266
+ return false;
267
+ }
268
+ return (message.arg.channel === 'opt-summary' ||
269
+ message.arg.channel === 'index-tickers' ||
270
+ message.arg.channel === 'tickers' ||
271
+ message.arg.channel === 'open-interest' ||
272
+ message.arg.channel === 'mark-price');
273
+ }
274
+ getFilters(symbols) {
275
+ const indexes = symbols !== undefined
276
+ ? symbols.map((s) => {
277
+ const symbolParts = s.split('-');
278
+ return `${symbolParts[0]}-${symbolParts[1]}`;
279
+ })
280
+ : undefined;
281
+ return [
282
+ {
283
+ channel: `opt-summary`,
284
+ symbols: []
285
+ },
286
+ {
287
+ channel: `index-tickers`,
288
+ symbols: indexes
289
+ },
290
+ {
291
+ channel: `tickers`,
292
+ symbols: symbols
293
+ },
294
+ {
295
+ channel: `open-interest`,
296
+ symbols: symbols
297
+ },
298
+ {
299
+ channel: `mark-price`,
300
+ symbols: symbols
301
+ }
302
+ ];
303
+ }
304
+ *map(message, localTimestamp) {
305
+ if (message.arg.channel === 'index-tickers') {
306
+ for (const dataMessage of message.data) {
307
+ const indexTickerMessage = dataMessage;
308
+ const lastIndexPrice = Number(indexTickerMessage.idxPx);
309
+ if (lastIndexPrice > 0) {
310
+ this._indexPrices.set(indexTickerMessage.instId, lastIndexPrice);
311
+ }
312
+ }
313
+ return;
314
+ }
315
+ if (message.arg.channel === 'open-interest') {
316
+ for (const dataMessage of message.data) {
317
+ const openInterestMessage = dataMessage;
318
+ const openInterestValue = Number(openInterestMessage.oi);
319
+ if (openInterestValue > 0) {
320
+ this._openInterests.set(openInterestMessage.instId, openInterestValue);
321
+ }
322
+ }
323
+ return;
324
+ }
325
+ if (message.arg.channel === 'mark-price') {
326
+ for (const dataMessage of message.data) {
327
+ const markPriceMessage = dataMessage;
328
+ const markPrice = Number(markPriceMessage.markPx);
329
+ if (markPrice > 0) {
330
+ this._markPrices.set(markPriceMessage.instId, markPrice);
331
+ }
332
+ }
333
+ return;
334
+ }
335
+ if (message.arg.channel === 'tickers') {
336
+ for (const dataMessage of message.data) {
337
+ const tickerMessage = dataMessage;
338
+ this._tickers.set(tickerMessage.instId, tickerMessage);
339
+ }
340
+ return;
341
+ }
342
+ if (message.arg.channel === 'opt-summary') {
343
+ for (const dataMessage of message.data) {
344
+ const summary = dataMessage;
345
+ const symbolParts = summary.instId.split('-');
346
+ const isPut = symbolParts[4] === 'P';
347
+ const strikePrice = Number(symbolParts[3]);
348
+ var dateArray = this.expiration_regex.exec(symbolParts[2]);
349
+ const expirationDate = new Date(Date.UTC(+('20' + dateArray[1]), +dateArray[2] - 1, +dateArray[3], 8, 0, 0, 0));
350
+ const lastUnderlyingPrice = this._indexPrices.get(summary.uly);
351
+ const lastOpenInterest = this._openInterests.get(summary.instId);
352
+ const lastMarkPrice = this._markPrices.get(summary.instId);
353
+ const lastTickerInfo = this._tickers.get(summary.instId);
354
+ const optionSummary = {
355
+ type: 'option_summary',
356
+ symbol: summary.instId,
357
+ exchange: 'okex-options',
358
+ optionType: isPut ? 'put' : 'call',
359
+ strikePrice,
360
+ expirationDate,
361
+ bestBidPrice: lastTickerInfo !== undefined ? (0, handy_1.asNumberIfValid)(lastTickerInfo.bidPx) : undefined,
362
+ bestBidAmount: lastTickerInfo !== undefined ? (0, handy_1.asNumberIfValid)(lastTickerInfo.bidSz) : undefined,
363
+ bestBidIV: (0, handy_1.asNumberIfValid)(summary.bidVol),
364
+ bestAskPrice: lastTickerInfo !== undefined ? (0, handy_1.asNumberIfValid)(lastTickerInfo.askPx) : undefined,
365
+ bestAskAmount: lastTickerInfo !== undefined ? (0, handy_1.asNumberIfValid)(lastTickerInfo.askSz) : undefined,
366
+ bestAskIV: (0, handy_1.asNumberIfValid)(summary.askVol),
367
+ lastPrice: lastTickerInfo !== undefined ? (0, handy_1.asNumberIfValid)(lastTickerInfo.last) : undefined,
368
+ openInterest: lastOpenInterest,
369
+ markPrice: lastMarkPrice,
370
+ markIV: (0, handy_1.asNumberIfValid)(summary.markVol),
371
+ delta: (0, handy_1.asNumberIfValid)(summary.delta),
372
+ gamma: (0, handy_1.asNumberIfValid)(summary.gamma),
373
+ vega: (0, handy_1.asNumberIfValid)(summary.vega),
374
+ theta: (0, handy_1.asNumberIfValid)(summary.theta),
375
+ rho: undefined,
376
+ underlyingPrice: lastUnderlyingPrice,
377
+ underlyingIndex: summary.uly,
378
+ timestamp: new Date(Number(summary.ts)),
379
+ localTimestamp: localTimestamp
380
+ };
381
+ yield optionSummary;
382
+ }
383
+ }
384
+ }
385
+ }
386
+ exports.OkexV5OptionSummaryMapper = OkexV5OptionSummaryMapper;
387
+ //---
388
+ //V3 Okex API mappers
6
389
  // https://www.okex.com/docs/en/#ws_swap-README
7
390
  class OkexTradesMapper {
8
391
  constructor(_exchange, _market) {