@0xmonaco/core 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/api/applications/api.d.ts +0 -1
- package/dist/api/applications/api.d.ts.map +1 -1
- package/dist/api/applications/api.js +0 -1
- package/dist/api/applications/api.js.map +1 -1
- package/dist/api/index.d.ts +3 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +3 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/orderbook/api.d.ts +16 -0
- package/dist/api/orderbook/api.d.ts.map +1 -0
- package/dist/api/orderbook/api.js +38 -0
- package/dist/api/orderbook/api.js.map +1 -0
- package/dist/api/orderbook/index.d.ts +2 -0
- package/dist/api/orderbook/index.d.ts.map +1 -0
- package/dist/api/orderbook/index.js +2 -0
- package/dist/api/orderbook/index.js.map +1 -0
- package/dist/api/trades/api.d.ts +45 -0
- package/dist/api/trades/api.d.ts.map +1 -0
- package/dist/api/trades/api.js +43 -0
- package/dist/api/trades/api.js.map +1 -0
- package/dist/api/trades/index.d.ts +2 -0
- package/dist/api/trades/index.d.ts.map +1 -0
- package/dist/api/trades/index.js +2 -0
- package/dist/api/trades/index.js.map +1 -0
- package/dist/api/websocket/index.d.ts +3 -9
- package/dist/api/websocket/index.d.ts.map +1 -1
- package/dist/api/websocket/index.js +3 -9
- package/dist/api/websocket/index.js.map +1 -1
- package/dist/api/websocket/types.d.ts +34 -0
- package/dist/api/websocket/types.d.ts.map +1 -0
- package/dist/api/websocket/types.js +2 -0
- package/dist/api/websocket/types.js.map +1 -0
- package/dist/api/websocket/utils.d.ts +9 -0
- package/dist/api/websocket/utils.d.ts.map +1 -0
- package/dist/api/websocket/utils.js +23 -0
- package/dist/api/websocket/utils.js.map +1 -0
- package/dist/api/websocket/websocket.d.ts +6 -0
- package/dist/api/websocket/websocket.d.ts.map +1 -0
- package/dist/api/websocket/websocket.js +314 -0
- package/dist/api/websocket/websocket.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/networks.d.ts +1 -1
- package/dist/networks.js +3 -3
- package/dist/networks.js.map +1 -1
- package/dist/sdk.d.ts +15 -24
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +40 -59
- package/dist/sdk.js.map +1 -1
- package/package.json +3 -3
- package/dist/api/websocket/base-ws-client.d.ts +0 -85
- package/dist/api/websocket/base-ws-client.d.ts.map +0 -1
- package/dist/api/websocket/base-ws-client.js +0 -256
- package/dist/api/websocket/base-ws-client.js.map +0 -1
- package/dist/api/websocket/clients/ohlcv-ws-client.d.ts +0 -57
- package/dist/api/websocket/clients/ohlcv-ws-client.d.ts.map +0 -1
- package/dist/api/websocket/clients/ohlcv-ws-client.js +0 -132
- package/dist/api/websocket/clients/ohlcv-ws-client.js.map +0 -1
- package/dist/api/websocket/clients/orderbook-ws-client.d.ts +0 -70
- package/dist/api/websocket/clients/orderbook-ws-client.d.ts.map +0 -1
- package/dist/api/websocket/clients/orderbook-ws-client.js +0 -197
- package/dist/api/websocket/clients/orderbook-ws-client.js.map +0 -1
- package/dist/api/websocket/clients/orders-ws-client.d.ts +0 -61
- package/dist/api/websocket/clients/orders-ws-client.d.ts.map +0 -1
- package/dist/api/websocket/clients/orders-ws-client.js +0 -150
- package/dist/api/websocket/clients/orders-ws-client.js.map +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OHLCV WebSocket Client Implementation
|
|
3
|
-
*
|
|
4
|
-
* PUBLIC WebSocket client for OHLCV (Open, High, Low, Close, Volume) candlestick data events.
|
|
5
|
-
* No authentication required - provides public market candlestick data.
|
|
6
|
-
* Extends the base WebSocket client with OHLCV-specific functionality.
|
|
7
|
-
*/
|
|
8
|
-
import { type Interval, type OHLCVEvent, type OHLCVWebSocketClient, type TradingMode } from "@0xmonaco/types";
|
|
9
|
-
import { BaseWebSocketClientImpl } from "../base-ws-client";
|
|
10
|
-
/**
|
|
11
|
-
* OHLCV-specific WebSocket client implementation
|
|
12
|
-
*/
|
|
13
|
-
export declare class OHLCVWebSocketClientImpl extends BaseWebSocketClientImpl implements OHLCVWebSocketClient {
|
|
14
|
-
private ohlcvHandlers;
|
|
15
|
-
/**
|
|
16
|
-
* Subscribe to OHLCV (candlestick) updates for a specific trading pair, mode, and interval.
|
|
17
|
-
* No authentication required - provides public market data.
|
|
18
|
-
*
|
|
19
|
-
* @param symbol - Trading pair symbol (e.g., "BTC/USDC")
|
|
20
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
21
|
-
* @param interval - Candlestick interval (e.g., "1m", "5m", "1h", "1d")
|
|
22
|
-
* @param callback - Function to handle incoming OHLCV events
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* // No authentication required
|
|
27
|
-
* await ohlcvWS.connect();
|
|
28
|
-
*
|
|
29
|
-
* ohlcvWS.subscribeToOHLCV("BTC/USDC", TradingMode.SPOT, "1m", (event) => {
|
|
30
|
-
* console.log("New OHLCV data:", event.candlestick.o, event.candlestick.c);
|
|
31
|
-
* });
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
subscribeToOHLCV(symbol: string, tradingMode: TradingMode, interval: Interval, callback: (event: OHLCVEvent) => void): void;
|
|
35
|
-
/**
|
|
36
|
-
* Unsubscribe from OHLCV (candlestick) updates.
|
|
37
|
-
*
|
|
38
|
-
* @param symbol - Trading pair symbol (e.g., "BTC/USDC")
|
|
39
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
40
|
-
* @param interval - Candlestick interval (e.g., "1m", "5m", "1h", "1d")
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```typescript
|
|
44
|
-
* ohlcvWS.unsubscribeFromOHLCV("BTC/USDC", TradingMode.SPOT, "1m");
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
unsubscribeFromOHLCV(symbol: string, tradingMode: TradingMode, interval: Interval): void;
|
|
48
|
-
/** Override message handling to process OHLCV-specific events */
|
|
49
|
-
protected handleMessage(message: unknown): void;
|
|
50
|
-
/** Check if message is an OHLCV event from the backend */
|
|
51
|
-
private isOHLCVEvent;
|
|
52
|
-
/** Handle OHLCV-specific events from the backend */
|
|
53
|
-
private handleOHLCVEvent;
|
|
54
|
-
/** Clean up resources when disconnecting */
|
|
55
|
-
protected cleanup(): void;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=ohlcv-ws-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ohlcv-ws-client.d.ts","sourceRoot":"","sources":["../../../../src/api/websocket/clients/ohlcv-ws-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,oBAAoB,EAEzB,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,uBAAwB,YAAW,oBAAoB;IAEnG,OAAO,CAAC,aAAa,CAAkD;IAEvE;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAa3H;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAaxF,iEAAiE;IACjE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAS/C,0DAA0D;IAC1D,OAAO,CAAC,YAAY;IAIpB,oDAAoD;IACpD,OAAO,CAAC,gBAAgB;IAgDxB,4CAA4C;IAC5C,SAAS,CAAC,OAAO,IAAI,IAAI;CAG1B"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OHLCV WebSocket Client Implementation
|
|
3
|
-
*
|
|
4
|
-
* PUBLIC WebSocket client for OHLCV (Open, High, Low, Close, Volume) candlestick data events.
|
|
5
|
-
* No authentication required - provides public market candlestick data.
|
|
6
|
-
* Extends the base WebSocket client with OHLCV-specific functionality.
|
|
7
|
-
*/
|
|
8
|
-
import { WebSocketChannel, } from "@0xmonaco/types";
|
|
9
|
-
import { BaseWebSocketClientImpl } from "../base-ws-client";
|
|
10
|
-
/**
|
|
11
|
-
* OHLCV-specific WebSocket client implementation
|
|
12
|
-
*/
|
|
13
|
-
export class OHLCVWebSocketClientImpl extends BaseWebSocketClientImpl {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
// Map to store OHLCV event handlers by subscription key
|
|
17
|
-
this.ohlcvHandlers = new Map();
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Subscribe to OHLCV (candlestick) updates for a specific trading pair, mode, and interval.
|
|
21
|
-
* No authentication required - provides public market data.
|
|
22
|
-
*
|
|
23
|
-
* @param symbol - Trading pair symbol (e.g., "BTC/USDC")
|
|
24
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
25
|
-
* @param interval - Candlestick interval (e.g., "1m", "5m", "1h", "1d")
|
|
26
|
-
* @param callback - Function to handle incoming OHLCV events
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* ```typescript
|
|
30
|
-
* // No authentication required
|
|
31
|
-
* await ohlcvWS.connect();
|
|
32
|
-
*
|
|
33
|
-
* ohlcvWS.subscribeToOHLCV("BTC/USDC", TradingMode.SPOT, "1m", (event) => {
|
|
34
|
-
* console.log("New OHLCV data:", event.candlestick.o, event.candlestick.c);
|
|
35
|
-
* });
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
subscribeToOHLCV(symbol, tradingMode, interval, callback) {
|
|
39
|
-
const channel = `ohlcv:${symbol}:${tradingMode}:${interval}`;
|
|
40
|
-
const subscriptionKey = `${symbol.toUpperCase()}-${tradingMode.toUpperCase()}-${interval.toLowerCase()}`;
|
|
41
|
-
this.ohlcvHandlers.set(subscriptionKey, callback);
|
|
42
|
-
// Send subscription message using the backend's channel format
|
|
43
|
-
this.send({
|
|
44
|
-
type: "Subscribe",
|
|
45
|
-
channels: [channel],
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Unsubscribe from OHLCV (candlestick) updates.
|
|
50
|
-
*
|
|
51
|
-
* @param symbol - Trading pair symbol (e.g., "BTC/USDC")
|
|
52
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
53
|
-
* @param interval - Candlestick interval (e.g., "1m", "5m", "1h", "1d")
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```typescript
|
|
57
|
-
* ohlcvWS.unsubscribeFromOHLCV("BTC/USDC", TradingMode.SPOT, "1m");
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
unsubscribeFromOHLCV(symbol, tradingMode, interval) {
|
|
61
|
-
const channel = `ohlcv:${symbol}:${tradingMode}:${interval}`;
|
|
62
|
-
const subscriptionKey = `${symbol.toUpperCase()}-${tradingMode.toUpperCase()}-${interval.toLowerCase()}`;
|
|
63
|
-
this.ohlcvHandlers.delete(subscriptionKey);
|
|
64
|
-
// Send unsubscription message
|
|
65
|
-
this.send({
|
|
66
|
-
type: "Unsubscribe",
|
|
67
|
-
channels: [channel],
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
/** Override message handling to process OHLCV-specific events */
|
|
71
|
-
handleMessage(message) {
|
|
72
|
-
super.handleMessage(message);
|
|
73
|
-
// Handle OHLCV-specific Event messages
|
|
74
|
-
if (this.isOHLCVEvent(message)) {
|
|
75
|
-
this.handleOHLCVEvent(message);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/** Check if message is an OHLCV event from the backend */
|
|
79
|
-
isOHLCVEvent(message) {
|
|
80
|
-
return this.isEventMessage(message, WebSocketChannel.OHLCV);
|
|
81
|
-
}
|
|
82
|
-
/** Handle OHLCV-specific events from the backend */
|
|
83
|
-
handleOHLCVEvent(event) {
|
|
84
|
-
try {
|
|
85
|
-
const msg = event;
|
|
86
|
-
const backendEvent = msg.data; // Parent (has pair, interval, trading_mode)
|
|
87
|
-
const ohlcvData = backendEvent.data; // Nested (has open, high, low, close)
|
|
88
|
-
const symbol = backendEvent.pair;
|
|
89
|
-
const tradingMode = backendEvent.trading_mode;
|
|
90
|
-
const interval = backendEvent.interval;
|
|
91
|
-
if (!symbol || !tradingMode || !interval) {
|
|
92
|
-
console.warn("Missing required OHLCV event data:", backendEvent);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
const subscriptionKey = `${symbol.toUpperCase()}-${tradingMode.toUpperCase()}-${interval.toLowerCase()}`;
|
|
96
|
-
// Find the appropriate handler
|
|
97
|
-
const handler = this.ohlcvHandlers.get(subscriptionKey);
|
|
98
|
-
if (handler) {
|
|
99
|
-
// Map backend field names to the expected structure
|
|
100
|
-
const ohlcvEvent = {
|
|
101
|
-
symbol: symbol,
|
|
102
|
-
tradingMode: tradingMode,
|
|
103
|
-
interval: interval,
|
|
104
|
-
candlestick: {
|
|
105
|
-
T: ohlcvData.period_start || 0, // Candle start time (ms)
|
|
106
|
-
t: ohlcvData.period_end || 0, // Candle end time (ms)
|
|
107
|
-
o: ohlcvData.open || "0", // Open price
|
|
108
|
-
h: ohlcvData.high || "0", // High price
|
|
109
|
-
l: ohlcvData.low || "0", // Low price
|
|
110
|
-
c: ohlcvData.close || "0", // Close price
|
|
111
|
-
v: ohlcvData.volume || "0", // Volume (base token)
|
|
112
|
-
s: symbol, // Symbol from backend data
|
|
113
|
-
i: interval, // Interval from backend data
|
|
114
|
-
n: ohlcvData.trades_count || 0, // Number of trades
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
|
-
handler(ohlcvEvent);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
console.warn(`No handler found for OHLCV event: ${subscriptionKey}`, event);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
console.error("Error handling OHLCV event:", error, event);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/** Clean up resources when disconnecting */
|
|
128
|
-
cleanup() {
|
|
129
|
-
this.ohlcvHandlers.clear();
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
//# sourceMappingURL=ohlcv-ws-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ohlcv-ws-client.js","sourceRoot":"","sources":["../../../../src/api/websocket/clients/ohlcv-ws-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Orderbook WebSocket Client Implementation
|
|
3
|
-
*
|
|
4
|
-
* PUBLIC WebSocket client for orderbook-related events and operations.
|
|
5
|
-
* No authentication required - provides public orderbook market data.
|
|
6
|
-
* Extends the base WebSocket client with orderbook-specific functionality.
|
|
7
|
-
*/
|
|
8
|
-
import { type OrderbookEvent, type OrderbookQuotationMode, type OrderbookWebSocketClient, type RawEventMessage, type TradingMode } from "@0xmonaco/types";
|
|
9
|
-
import { BaseWebSocketClientImpl } from "../base-ws-client";
|
|
10
|
-
/**
|
|
11
|
-
* Orderbook-specific WebSocket client implementation
|
|
12
|
-
*/
|
|
13
|
-
export declare class OrderbookWebSocketClientImpl extends BaseWebSocketClientImpl implements OrderbookWebSocketClient {
|
|
14
|
-
private orderbookHandlers;
|
|
15
|
-
/** Build channel name for orderbook subscription */
|
|
16
|
-
private getChannelName;
|
|
17
|
-
/** Build subscription key for handler lookup */
|
|
18
|
-
private getSubscriptionKey;
|
|
19
|
-
/** Extract magnitude and quotationMode from channel string (e.g., "orderbook:BTC/USDC:SPOT:10:BASE" -> { magnitude: 10, quotationMode: "BASE" }) */
|
|
20
|
-
private extractChannelParams;
|
|
21
|
-
/**
|
|
22
|
-
* Subscribe to orderbook events for a specific market and trading mode.
|
|
23
|
-
* No authentication required - provides public orderbook data.
|
|
24
|
-
*
|
|
25
|
-
* @param market - Trading pair symbol (e.g., "BTC/USDC")
|
|
26
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
27
|
-
* @param callback - Function to handle incoming orderbook events
|
|
28
|
-
* @param magnitude - Optional magnitude for orderbook grouping (0.0001 to 10000, defaults to no grouping)
|
|
29
|
-
* @param quotationMode - Optional quotation mode ("BASE" or "QUOTE"), defaults to "BASE"
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```typescript
|
|
33
|
-
* // No authentication required
|
|
34
|
-
* await orderbookWS.connect();
|
|
35
|
-
*
|
|
36
|
-
* orderbookWS.subscribeToOrderbookEvents("BTC/USDC", TradingMode.SPOT, (event) => {
|
|
37
|
-
* console.log("Orderbook update:", event.bids.length, "bids", event.asks.length, "asks");
|
|
38
|
-
* });
|
|
39
|
-
*
|
|
40
|
-
* // With magnitude for grouping
|
|
41
|
-
* orderbookWS.subscribeToOrderbookEvents("BTC/USDC", TradingMode.SPOT, (event) => {
|
|
42
|
-
* console.log("Grouped orderbook:", event);
|
|
43
|
-
* }, 10);
|
|
44
|
-
*
|
|
45
|
-
* // With QUOTE quotation mode
|
|
46
|
-
* orderbookWS.subscribeToOrderbookEvents("BTC/USDC", TradingMode.SPOT, (event) => {
|
|
47
|
-
* console.log("Orderbook in QUOTE:", event);
|
|
48
|
-
* }, undefined, "QUOTE");
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
subscribeToOrderbookEvents(market: string, tradingMode: TradingMode, callback: (event: OrderbookEvent) => void, magnitude?: number, quotationMode?: OrderbookQuotationMode): void;
|
|
52
|
-
/**
|
|
53
|
-
* Unsubscribe from orderbook events for a specific market and trading mode.
|
|
54
|
-
*
|
|
55
|
-
* @param market - Trading pair symbol (e.g., "BTC/USDC")
|
|
56
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
57
|
-
* @param magnitude - Optional magnitude that was used when subscribing
|
|
58
|
-
* @param quotationMode - Optional quotation mode that was used when subscribing
|
|
59
|
-
*/
|
|
60
|
-
unsubscribeFromOrderbookEvents(market: string, tradingMode: TradingMode, magnitude?: number, quotationMode?: OrderbookQuotationMode): void;
|
|
61
|
-
/** Handle incoming WebSocket messages with orderbook-specific logic */
|
|
62
|
-
protected handleMessage(message: RawEventMessage): void;
|
|
63
|
-
/** Check if message is an orderbook event from the backend */
|
|
64
|
-
private isOrderbookEvent;
|
|
65
|
-
/** Handle orderbook-specific events from the backend */
|
|
66
|
-
private handleOrderbookEvent;
|
|
67
|
-
/** Clean up resources when disconnecting */
|
|
68
|
-
protected cleanup(): void;
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=orderbook-ws-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orderbook-ws-client.d.ts","sourceRoot":"","sources":["../../../../src/api/websocket/clients/orderbook-ws-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAE7B,KAAK,eAAe,EAEpB,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,uBAAwB,YAAW,wBAAwB;IAC3G,OAAO,CAAC,iBAAiB,CAA2D;IAEpF,oDAAoD;IACpD,OAAO,CAAC,cAAc;IAOtB,gDAAgD;IAChD,OAAO,CAAC,kBAAkB;IAM1B,oJAAoJ;IACpJ,OAAO,CAAC,oBAAoB;IAmC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,0BAA0B,CACxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,EACzC,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,sBAAsB,GACrC,IAAI;IAaP;;;;;;;OAOG;IACH,8BAA8B,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,sBAAsB,GACrC,IAAI;IAaP,uEAAuE;IACvE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAUvD,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB;IAIxB,wDAAwD;IACxD,OAAO,CAAC,oBAAoB;IAkE5B,4CAA4C;IAC5C,SAAS,CAAC,OAAO,IAAI,IAAI;CAG1B"}
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Orderbook WebSocket Client Implementation
|
|
3
|
-
*
|
|
4
|
-
* PUBLIC WebSocket client for orderbook-related events and operations.
|
|
5
|
-
* No authentication required - provides public orderbook market data.
|
|
6
|
-
* Extends the base WebSocket client with orderbook-specific functionality.
|
|
7
|
-
*/
|
|
8
|
-
import { WebSocketChannel, } from "@0xmonaco/types";
|
|
9
|
-
import { BaseWebSocketClientImpl } from "../base-ws-client";
|
|
10
|
-
/**
|
|
11
|
-
* Orderbook-specific WebSocket client implementation
|
|
12
|
-
*/
|
|
13
|
-
export class OrderbookWebSocketClientImpl extends BaseWebSocketClientImpl {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
this.orderbookHandlers = new Map();
|
|
17
|
-
}
|
|
18
|
-
/** Build channel name for orderbook subscription */
|
|
19
|
-
getChannelName(market, tradingMode, magnitude, quotationMode) {
|
|
20
|
-
const mode = quotationMode || "BASE";
|
|
21
|
-
return magnitude !== undefined
|
|
22
|
-
? `orderbook:${market}:${tradingMode}:${magnitude}:${mode}`
|
|
23
|
-
: `orderbook:${market}:${tradingMode}:${mode}`;
|
|
24
|
-
}
|
|
25
|
-
/** Build subscription key for handler lookup */
|
|
26
|
-
getSubscriptionKey(market, tradingMode, magnitude, quotationMode) {
|
|
27
|
-
const mode = (quotationMode || "BASE").toUpperCase();
|
|
28
|
-
const base = `${market.toUpperCase()}-${tradingMode.toUpperCase()}`;
|
|
29
|
-
return magnitude !== undefined ? `${base}-${magnitude}-${mode}` : `${base}-${mode}`;
|
|
30
|
-
}
|
|
31
|
-
/** Extract magnitude and quotationMode from channel string (e.g., "orderbook:BTC/USDC:SPOT:10:BASE" -> { magnitude: 10, quotationMode: "BASE" }) */
|
|
32
|
-
extractChannelParams(channel) {
|
|
33
|
-
const parts = channel.split(":");
|
|
34
|
-
// Channel formats:
|
|
35
|
-
// "orderbook:market:tradingMode" - old 3-part format (no magnitude, no quotationMode)
|
|
36
|
-
// "orderbook:market:tradingMode:BASE" or "orderbook:market:tradingMode:QUOTE" (4 parts)
|
|
37
|
-
// "orderbook:market:tradingMode:magnitude:BASE" or "orderbook:market:tradingMode:magnitude:QUOTE" (5 parts)
|
|
38
|
-
// Old 3-part format: "orderbook:market:tradingMode" (no magnitude, no quotationMode)
|
|
39
|
-
if (parts.length === 3) {
|
|
40
|
-
return {};
|
|
41
|
-
}
|
|
42
|
-
if (parts.length === 4) {
|
|
43
|
-
const lastPart = parts[3].toUpperCase();
|
|
44
|
-
// Check if it's a quotation mode
|
|
45
|
-
if (lastPart === "BASE" || lastPart === "QUOTE") {
|
|
46
|
-
return { quotationMode: lastPart };
|
|
47
|
-
}
|
|
48
|
-
// Otherwise it might be magnitude (old format)
|
|
49
|
-
const magnitude = Number(parts[3]);
|
|
50
|
-
return Number.isNaN(magnitude) ? {} : { magnitude };
|
|
51
|
-
}
|
|
52
|
-
if (parts.length === 5) {
|
|
53
|
-
const magnitude = Number(parts[3]);
|
|
54
|
-
const quotationMode = parts[4].toUpperCase();
|
|
55
|
-
return {
|
|
56
|
-
magnitude: Number.isNaN(magnitude) ? undefined : magnitude,
|
|
57
|
-
quotationMode: quotationMode === "BASE" || quotationMode === "QUOTE" ? quotationMode : undefined,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
return {};
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Subscribe to orderbook events for a specific market and trading mode.
|
|
64
|
-
* No authentication required - provides public orderbook data.
|
|
65
|
-
*
|
|
66
|
-
* @param market - Trading pair symbol (e.g., "BTC/USDC")
|
|
67
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
68
|
-
* @param callback - Function to handle incoming orderbook events
|
|
69
|
-
* @param magnitude - Optional magnitude for orderbook grouping (0.0001 to 10000, defaults to no grouping)
|
|
70
|
-
* @param quotationMode - Optional quotation mode ("BASE" or "QUOTE"), defaults to "BASE"
|
|
71
|
-
*
|
|
72
|
-
* @example
|
|
73
|
-
* ```typescript
|
|
74
|
-
* // No authentication required
|
|
75
|
-
* await orderbookWS.connect();
|
|
76
|
-
*
|
|
77
|
-
* orderbookWS.subscribeToOrderbookEvents("BTC/USDC", TradingMode.SPOT, (event) => {
|
|
78
|
-
* console.log("Orderbook update:", event.bids.length, "bids", event.asks.length, "asks");
|
|
79
|
-
* });
|
|
80
|
-
*
|
|
81
|
-
* // With magnitude for grouping
|
|
82
|
-
* orderbookWS.subscribeToOrderbookEvents("BTC/USDC", TradingMode.SPOT, (event) => {
|
|
83
|
-
* console.log("Grouped orderbook:", event);
|
|
84
|
-
* }, 10);
|
|
85
|
-
*
|
|
86
|
-
* // With QUOTE quotation mode
|
|
87
|
-
* orderbookWS.subscribeToOrderbookEvents("BTC/USDC", TradingMode.SPOT, (event) => {
|
|
88
|
-
* console.log("Orderbook in QUOTE:", event);
|
|
89
|
-
* }, undefined, "QUOTE");
|
|
90
|
-
* ```
|
|
91
|
-
*/
|
|
92
|
-
subscribeToOrderbookEvents(market, tradingMode, callback, magnitude, quotationMode) {
|
|
93
|
-
const channel = this.getChannelName(market, tradingMode, magnitude, quotationMode);
|
|
94
|
-
const subscriptionKey = this.getSubscriptionKey(market, tradingMode, magnitude, quotationMode);
|
|
95
|
-
this.orderbookHandlers.set(subscriptionKey, callback);
|
|
96
|
-
// Send subscription message using backend's channel format
|
|
97
|
-
this.send({
|
|
98
|
-
type: "Subscribe",
|
|
99
|
-
channels: [channel],
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Unsubscribe from orderbook events for a specific market and trading mode.
|
|
104
|
-
*
|
|
105
|
-
* @param market - Trading pair symbol (e.g., "BTC/USDC")
|
|
106
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
107
|
-
* @param magnitude - Optional magnitude that was used when subscribing
|
|
108
|
-
* @param quotationMode - Optional quotation mode that was used when subscribing
|
|
109
|
-
*/
|
|
110
|
-
unsubscribeFromOrderbookEvents(market, tradingMode, magnitude, quotationMode) {
|
|
111
|
-
const channel = this.getChannelName(market, tradingMode, magnitude, quotationMode);
|
|
112
|
-
const subscriptionKey = this.getSubscriptionKey(market, tradingMode, magnitude, quotationMode);
|
|
113
|
-
this.orderbookHandlers.delete(subscriptionKey);
|
|
114
|
-
// Send unsubscription message
|
|
115
|
-
this.send({
|
|
116
|
-
type: "Unsubscribe",
|
|
117
|
-
channels: [channel],
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
/** Handle incoming WebSocket messages with orderbook-specific logic */
|
|
121
|
-
handleMessage(message) {
|
|
122
|
-
// Handle base messages first (PONG, etc.)
|
|
123
|
-
super.handleMessage(message);
|
|
124
|
-
// Handle orderbook-specific Event messages
|
|
125
|
-
if (this.isOrderbookEvent(message)) {
|
|
126
|
-
this.handleOrderbookEvent(message);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/** Check if message is an orderbook event from the backend */
|
|
130
|
-
isOrderbookEvent(message) {
|
|
131
|
-
return this.isEventMessage(message, WebSocketChannel.Orderbook);
|
|
132
|
-
}
|
|
133
|
-
/** Handle orderbook-specific events from the backend */
|
|
134
|
-
handleOrderbookEvent(event) {
|
|
135
|
-
try {
|
|
136
|
-
const msg = event;
|
|
137
|
-
const backendEvent = msg.data; // Parent (has pair, trading_mode)
|
|
138
|
-
const orderbookData = backendEvent.data; // Nested (has bids, asks, etc.)
|
|
139
|
-
const symbol = backendEvent.pair;
|
|
140
|
-
const tradingMode = backendEvent.trading_mode;
|
|
141
|
-
if (!symbol || !tradingMode) {
|
|
142
|
-
console.warn("Missing required orderbook event data:", backendEvent);
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
// Extract magnitude and quotationMode from the channel if present (e.g., "orderbook:BTC/USDC:SPOT:10:BASE")
|
|
146
|
-
const { magnitude, quotationMode } = this.extractChannelParams(event.channel);
|
|
147
|
-
const subscriptionKey = this.getSubscriptionKey(symbol, tradingMode, magnitude, quotationMode);
|
|
148
|
-
const handler = this.orderbookHandlers.get(subscriptionKey);
|
|
149
|
-
if (handler) {
|
|
150
|
-
// Backend orderbook event structure (matching matching_engine::types::OrderbookUpdateEvent)
|
|
151
|
-
const transformedEvent = {
|
|
152
|
-
symbol: symbol,
|
|
153
|
-
tradingMode: tradingMode,
|
|
154
|
-
bids: (orderbookData?.bids || []).map((level) => ({
|
|
155
|
-
price: level.price,
|
|
156
|
-
quantity: level.quantity,
|
|
157
|
-
orderCount: level.order_count || 0,
|
|
158
|
-
})),
|
|
159
|
-
asks: (orderbookData?.asks || []).map((level) => ({
|
|
160
|
-
price: level.price,
|
|
161
|
-
quantity: level.quantity,
|
|
162
|
-
orderCount: level.order_count || 0,
|
|
163
|
-
})),
|
|
164
|
-
bestBid: orderbookData?.best_bid || undefined,
|
|
165
|
-
bestAsk: orderbookData?.best_ask || undefined,
|
|
166
|
-
bidVolume: orderbookData?.bid_volume || "0",
|
|
167
|
-
askVolume: orderbookData?.ask_volume || "0",
|
|
168
|
-
priceChange: orderbookData?.price_change
|
|
169
|
-
? {
|
|
170
|
-
side: orderbookData.price_change.side,
|
|
171
|
-
oldPrice: orderbookData.price_change.old_price,
|
|
172
|
-
newPrice: orderbookData.price_change.new_price,
|
|
173
|
-
levelRemoved: orderbookData.price_change.level_removed || false,
|
|
174
|
-
levelAdded: orderbookData.price_change.level_added || false,
|
|
175
|
-
}
|
|
176
|
-
: undefined,
|
|
177
|
-
baseDecimals: backendEvent.base_decimals || 0,
|
|
178
|
-
quoteDecimals: backendEvent.quote_decimals || 0,
|
|
179
|
-
timestamp: backendEvent.timestamp || new Date().toISOString(),
|
|
180
|
-
sequence: backendEvent.sequence_number || 0,
|
|
181
|
-
};
|
|
182
|
-
handler(transformedEvent);
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
console.debug(`No handler registered for orderbook subscription: ${subscriptionKey}`);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
console.error("Error handling orderbook event:", error, event);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
/** Clean up resources when disconnecting */
|
|
193
|
-
cleanup() {
|
|
194
|
-
this.orderbookHandlers.clear();
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
//# sourceMappingURL=orderbook-ws-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orderbook-ws-client.js","sourceRoot":"","sources":["../../../../src/api/websocket/clients/orderbook-ws-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Orders WebSocket Client Implementation
|
|
3
|
-
*
|
|
4
|
-
* AUTHENTICATED WebSocket client for personal order-related events.
|
|
5
|
-
* Requires JWT authentication via access token.
|
|
6
|
-
* Shows user-specific order updates and events.
|
|
7
|
-
*/
|
|
8
|
-
import { type OrderEvent, type OrdersWebSocketClient, type RawOrderEventMessage, type TradingMode } from "@0xmonaco/types";
|
|
9
|
-
import { BaseWebSocketClientImpl } from "../";
|
|
10
|
-
/**
|
|
11
|
-
* Orders-specific WebSocket client implementation
|
|
12
|
-
*/
|
|
13
|
-
export declare class OrdersWebSocketClientImpl extends BaseWebSocketClientImpl implements OrdersWebSocketClient {
|
|
14
|
-
private orderHandlers;
|
|
15
|
-
/**
|
|
16
|
-
* Override connect to enforce authentication requirement for Orders channel.
|
|
17
|
-
* Orders WebSocket requires JWT authentication for personal order updates.
|
|
18
|
-
*/
|
|
19
|
-
connect(): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Subscribe to personal order events for a specific market and trading mode.
|
|
22
|
-
* Requires authentication - call setAccessToken() before connecting.
|
|
23
|
-
*
|
|
24
|
-
* @param market - Trading pair symbol (e.g., "BTC/USDC")
|
|
25
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
26
|
-
* @param callback - Function to handle incoming order events
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* ```typescript
|
|
30
|
-
* // Set authentication token first
|
|
31
|
-
* ordersWS.setAccessToken(authState.accessToken);
|
|
32
|
-
* await ordersWS.connect();
|
|
33
|
-
*
|
|
34
|
-
* ordersWS.subscribeToOrderEvents("BTC/USDC", TradingMode.SPOT, (event) => {
|
|
35
|
-
* console.log("Personal order event:", event.eventType);
|
|
36
|
-
* });
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
subscribeToOrderEvents(market: string, tradingMode: TradingMode, callback: (event: OrderEvent) => void): void;
|
|
40
|
-
/**
|
|
41
|
-
* Unsubscribe from order events for a specific market and trading mode.
|
|
42
|
-
*
|
|
43
|
-
* @param market - Trading pair symbol (e.g., "BTC/USDC")
|
|
44
|
-
* @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* ordersWS.unsubscribeFromOrderEvents("BTC/USDC", TradingMode.SPOT);
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
unsubscribeFromOrderEvents(market: string, tradingMode: TradingMode): void;
|
|
52
|
-
/** Override message handling to process order-specific events */
|
|
53
|
-
protected handleMessage(message: RawOrderEventMessage): void;
|
|
54
|
-
/** Check if message is an order event from the backend */
|
|
55
|
-
private isOrderEvent;
|
|
56
|
-
/** Handle order-specific events from the backend */
|
|
57
|
-
private handleOrderEvent;
|
|
58
|
-
/** Clean up resources when disconnecting */
|
|
59
|
-
protected cleanup(): void;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=orders-ws-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orders-ws-client.d.ts","sourceRoot":"","sources":["../../../../src/api/websocket/clients/orders-ws-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,KAAK,CAAC;AAyB9C;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,uBAAwB,YAAW,qBAAqB;IAErG,OAAO,CAAC,aAAa,CAAkD;IAEvE;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;;;;;;;;;;;;;;;;;OAkBG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAa7G;;;;;;;;;;OAUG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI;IAa1E,iEAAiE;IACjE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAS5D,0DAA0D;IAC1D,OAAO,CAAC,YAAY;IAIpB,oDAAoD;IACpD,OAAO,CAAC,gBAAgB;IAiCxB,4CAA4C;IAC5C,SAAS,CAAC,OAAO,IAAI,IAAI;CAG1B"}
|