@0xmonaco/core 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/api/applications/api.d.ts.map +1 -1
  2. package/dist/api/applications/api.js.map +1 -1
  3. package/dist/api/auth/api.d.ts.map +1 -1
  4. package/dist/api/auth/api.js +1 -1
  5. package/dist/api/auth/api.js.map +1 -1
  6. package/dist/api/base.d.ts.map +1 -1
  7. package/dist/api/base.js.map +1 -1
  8. package/dist/api/index.d.ts.map +1 -1
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/api/market/api.d.ts +2 -2
  11. package/dist/api/market/api.d.ts.map +1 -1
  12. package/dist/api/market/api.js.map +1 -1
  13. package/dist/api/profile/api.d.ts.map +1 -1
  14. package/dist/api/profile/api.js.map +1 -1
  15. package/dist/api/trading/api.d.ts +19 -2
  16. package/dist/api/trading/api.d.ts.map +1 -1
  17. package/dist/api/trading/api.js +20 -3
  18. package/dist/api/trading/api.js.map +1 -1
  19. package/dist/api/vault/api.d.ts +0 -17
  20. package/dist/api/vault/api.d.ts.map +1 -1
  21. package/dist/api/vault/api.js +6 -48
  22. package/dist/api/vault/api.js.map +1 -1
  23. package/dist/api/websocket/base-ws-client.d.ts +8 -0
  24. package/dist/api/websocket/base-ws-client.d.ts.map +1 -1
  25. package/dist/api/websocket/base-ws-client.js +22 -7
  26. package/dist/api/websocket/base-ws-client.js.map +1 -1
  27. package/dist/api/websocket/{ohlcv-ws-client.d.ts → clients/ohlcv-ws-client.d.ts} +18 -13
  28. package/dist/api/websocket/clients/ohlcv-ws-client.d.ts.map +1 -0
  29. package/dist/api/websocket/clients/ohlcv-ws-client.js +126 -0
  30. package/dist/api/websocket/clients/ohlcv-ws-client.js.map +1 -0
  31. package/dist/api/websocket/clients/orderbook-ws-client.d.ts +46 -0
  32. package/dist/api/websocket/clients/orderbook-ws-client.d.ts.map +1 -0
  33. package/dist/api/websocket/clients/orderbook-ws-client.js +131 -0
  34. package/dist/api/websocket/clients/orderbook-ws-client.js.map +1 -0
  35. package/dist/api/websocket/{orders-ws-client.d.ts → clients/orders-ws-client.d.ts} +17 -13
  36. package/dist/api/websocket/clients/orders-ws-client.d.ts.map +1 -0
  37. package/dist/api/websocket/clients/orders-ws-client.js +124 -0
  38. package/dist/api/websocket/clients/orders-ws-client.js.map +1 -0
  39. package/dist/api/websocket/index.d.ts +4 -3
  40. package/dist/api/websocket/index.d.ts.map +1 -1
  41. package/dist/api/websocket/index.js +4 -3
  42. package/dist/api/websocket/index.js.map +1 -1
  43. package/dist/errors.d.ts.map +1 -1
  44. package/dist/errors.js.map +1 -1
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/networks.d.ts +1 -1
  48. package/dist/networks.d.ts.map +1 -1
  49. package/dist/networks.js +4 -0
  50. package/dist/networks.js.map +1 -1
  51. package/dist/sdk.d.ts +2 -1
  52. package/dist/sdk.d.ts.map +1 -1
  53. package/dist/sdk.js +10 -5
  54. package/dist/sdk.js.map +1 -1
  55. package/package.json +2 -2
  56. package/dist/api/websocket/ohlcv-ws-client.d.ts.map +0 -1
  57. package/dist/api/websocket/ohlcv-ws-client.js +0 -123
  58. package/dist/api/websocket/ohlcv-ws-client.js.map +0 -1
  59. package/dist/api/websocket/orders-ws-client.d.ts.map +0 -1
  60. package/dist/api/websocket/orders-ws-client.js +0 -131
  61. package/dist/api/websocket/orders-ws-client.js.map +0 -1
@@ -4,8 +4,8 @@
4
4
  * Specialized WebSocket client for OHLCV (Open, High, Low, Close, Volume) candlestick data events.
5
5
  * Extends the base WebSocket client with OHLCV-specific functionality.
6
6
  */
7
- import type { OHLCVWebSocketClient, WebSocketConfig, OHLCVEvent } from "@0xmonaco/types";
8
- import { BaseWebSocketClientImpl } from "./base-ws-client";
7
+ import { OHLCVWebSocketClient, WebSocketConfig, TradingMode, OHLCVEvent, Interval } from "@0xmonaco/types";
8
+ import { BaseWebSocketClientImpl } from "../base-ws-client";
9
9
  /**
10
10
  * OHLCV-specific WebSocket client implementation
11
11
  */
@@ -15,34 +15,39 @@ export declare class OHLCVWebSocketClientImpl extends BaseWebSocketClientImpl im
15
15
  /**
16
16
  * Subscribe to OHLCV (candlestick) updates for a specific trading pair, mode, and interval.
17
17
  *
18
- * @param symbol - Trading pair symbol (e.g., "BTC-USDC")
19
- * @param tradingMode - Trading mode ("SPOT" or "MARGIN")
18
+ * @param symbol - Trading pair symbol (e.g., "BTC/USDC")
19
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
20
20
  * @param interval - Candlestick interval (e.g., "1m", "5m", "1h", "1d")
21
21
  * @param callback - Function to handle incoming OHLCV events
22
22
  *
23
23
  * @example
24
24
  * ```typescript
25
- * ohlcvWS.subscribeToOHLCV("BTC-USDC", "SPOT", "1m", (event) => {
26
- * console.log("New OHLCV data:", event.candlestick);
25
+ * ohlcvWS.subscribeToOHLCV("BTC/USDC", TradingMode.SPOT, "1m", (event) => {
26
+ * console.log("New OHLCV data:", event.candlestick.o, event.candlestick.c);
27
27
  * });
28
28
  * ```
29
29
  */
30
- subscribeToOHLCV(symbol: string, tradingMode: string, interval: string, callback: (event: OHLCVEvent) => void): void;
30
+ subscribeToOHLCV(symbol: string, tradingMode: TradingMode, interval: Interval, callback: (event: OHLCVEvent) => void): void;
31
31
  /**
32
32
  * Unsubscribe from OHLCV (candlestick) updates.
33
33
  *
34
- * @param symbol - Trading pair symbol (e.g., "BTC-USDC")
35
- * @param tradingMode - Trading mode ("SPOT" or "MARGIN")
34
+ * @param symbol - Trading pair symbol (e.g., "BTC/USDC")
35
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
36
36
  * @param interval - Candlestick interval (e.g., "1m", "5m", "1h", "1d")
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * ohlcvWS.unsubscribeFromOHLCV("BTC/USDC", TradingMode.SPOT, "1m");
41
+ * ```
37
42
  */
38
- unsubscribeFromOHLCV(symbol: string, tradingMode: string, interval: string): void;
39
- /** Handle incoming WebSocket messages with OHLCV-specific logic */
43
+ unsubscribeFromOHLCV(symbol: string, tradingMode: TradingMode, interval: Interval): void;
44
+ /** Override message handling to process OHLCV-specific events */
40
45
  protected handleMessage(message: any): void;
41
46
  /** Check if message is an OHLCV event from the backend */
42
47
  private isOHLCVEvent;
43
48
  /** Handle OHLCV-specific events from the backend */
44
49
  private handleOHLCVEvent;
45
- /** Clean up OHLCV handlers on disconnect */
46
- disconnect(): void;
50
+ /** Clean up resources when disconnecting */
51
+ protected cleanup(): void;
47
52
  }
48
53
  //# sourceMappingURL=ohlcv-ws-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-ws-client.d.ts","sourceRoot":"","sources":["../../../../src/api/websocket/clients/ohlcv-ws-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAoB,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,uBAAwB,YAAW,oBAAoB;IAEnG,OAAO,CAAC,aAAa,CAAkD;gBAE3D,MAAM,EAAE,eAAe;IAInC;;;;;;;;;;;;;;OAcG;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,GAAG,GAAG,IAAI;IAS3C,0DAA0D;IAC1D,OAAO,CAAC,YAAY;IAIpB,oDAAoD;IACpD,OAAO,CAAC,gBAAgB;IA+CxB,4CAA4C;IAC5C,SAAS,CAAC,OAAO,IAAI,IAAI;CAG1B"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * OHLCV WebSocket Client Implementation
3
+ *
4
+ * Specialized WebSocket client for OHLCV (Open, High, Low, Close, Volume) candlestick data events.
5
+ * Extends the base WebSocket client with OHLCV-specific functionality.
6
+ */
7
+ import { WebSocketChannel } from "@0xmonaco/types";
8
+ import { BaseWebSocketClientImpl } from "../base-ws-client";
9
+ /**
10
+ * OHLCV-specific WebSocket client implementation
11
+ */
12
+ export class OHLCVWebSocketClientImpl extends BaseWebSocketClientImpl {
13
+ constructor(config) {
14
+ super(config);
15
+ // Map to store OHLCV event handlers by subscription key
16
+ this.ohlcvHandlers = new Map();
17
+ }
18
+ /**
19
+ * Subscribe to OHLCV (candlestick) updates for a specific trading pair, mode, and interval.
20
+ *
21
+ * @param symbol - Trading pair symbol (e.g., "BTC/USDC")
22
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
23
+ * @param interval - Candlestick interval (e.g., "1m", "5m", "1h", "1d")
24
+ * @param callback - Function to handle incoming OHLCV events
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * ohlcvWS.subscribeToOHLCV("BTC/USDC", TradingMode.SPOT, "1m", (event) => {
29
+ * console.log("New OHLCV data:", event.candlestick.o, event.candlestick.c);
30
+ * });
31
+ * ```
32
+ */
33
+ subscribeToOHLCV(symbol, tradingMode, interval, callback) {
34
+ const channel = `ohlcv:${symbol}:${tradingMode}:${interval}`;
35
+ const subscriptionKey = `${symbol.toUpperCase()}-${tradingMode.toUpperCase()}-${interval.toLowerCase()}`;
36
+ this.ohlcvHandlers.set(subscriptionKey, callback);
37
+ // Send subscription message using the backend's channel format
38
+ this.send({
39
+ type: "Subscribe",
40
+ channels: [channel],
41
+ });
42
+ }
43
+ /**
44
+ * Unsubscribe from OHLCV (candlestick) updates.
45
+ *
46
+ * @param symbol - Trading pair symbol (e.g., "BTC/USDC")
47
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
48
+ * @param interval - Candlestick interval (e.g., "1m", "5m", "1h", "1d")
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * ohlcvWS.unsubscribeFromOHLCV("BTC/USDC", TradingMode.SPOT, "1m");
53
+ * ```
54
+ */
55
+ unsubscribeFromOHLCV(symbol, tradingMode, interval) {
56
+ const channel = `ohlcv:${symbol}:${tradingMode}:${interval}`;
57
+ const subscriptionKey = `${symbol.toUpperCase()}-${tradingMode.toUpperCase()}-${interval.toLowerCase()}`;
58
+ this.ohlcvHandlers.delete(subscriptionKey);
59
+ // Send unsubscription message
60
+ this.send({
61
+ type: "Unsubscribe",
62
+ channels: [channel],
63
+ });
64
+ }
65
+ /** Override message handling to process OHLCV-specific events */
66
+ handleMessage(message) {
67
+ super.handleMessage(message);
68
+ // Handle OHLCV-specific Event messages
69
+ if (this.isOHLCVEvent(message)) {
70
+ this.handleOHLCVEvent(message);
71
+ }
72
+ }
73
+ /** Check if message is an OHLCV event from the backend */
74
+ isOHLCVEvent(message) {
75
+ return this.isEventMessage(message, WebSocketChannel.OHLCV);
76
+ }
77
+ /** Handle OHLCV-specific events from the backend */
78
+ handleOHLCVEvent(event) {
79
+ try {
80
+ const backendEvent = event.data; // Parent (has pair, interval, trading_mode)
81
+ const ohlcvData = backendEvent.data; // Nested (has open, high, low, close)
82
+ const symbol = backendEvent.pair;
83
+ const tradingMode = backendEvent.trading_mode;
84
+ const interval = backendEvent.interval;
85
+ if (!symbol || !tradingMode || !interval) {
86
+ console.warn("Missing required OHLCV event data:", backendEvent);
87
+ return;
88
+ }
89
+ const subscriptionKey = `${symbol.toUpperCase()}-${tradingMode.toUpperCase()}-${interval.toLowerCase()}`;
90
+ // Find the appropriate handler
91
+ const handler = this.ohlcvHandlers.get(subscriptionKey);
92
+ if (handler) {
93
+ // WebSocket events should match the same structure as REST API responses
94
+ const ohlcvEvent = {
95
+ symbol: symbol,
96
+ tradingMode: tradingMode,
97
+ interval: interval,
98
+ candlestick: {
99
+ T: ohlcvData.T || 0, // Candle start time (ms)
100
+ t: ohlcvData.t || 0, // Last trade time (ms)
101
+ o: ohlcvData.o || "0", // Open price
102
+ h: ohlcvData.h || "0", // High price
103
+ l: ohlcvData.l || "0", // Low price
104
+ c: ohlcvData.c || "0", // Close price
105
+ v: ohlcvData.v || "0", // Volume (base token)
106
+ s: symbol, // Symbol from backend data
107
+ i: interval, // Interval from backend data
108
+ n: ohlcvData.n || 0, // Number of trades
109
+ },
110
+ };
111
+ handler(ohlcvEvent);
112
+ }
113
+ else {
114
+ console.warn(`No handler found for OHLCV event: ${subscriptionKey}`, event);
115
+ }
116
+ }
117
+ catch (error) {
118
+ console.error("Error handling OHLCV event:", error, event);
119
+ }
120
+ }
121
+ /** Clean up resources when disconnecting */
122
+ cleanup() {
123
+ this.ohlcvHandlers.clear();
124
+ }
125
+ }
126
+ //# sourceMappingURL=ohlcv-ws-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcv-ws-client.js","sourceRoot":"","sources":["../../../../src/api/websocket/clients/ohlcv-ws-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Orderbook WebSocket Client Implementation
3
+ *
4
+ * Specialized WebSocket client for orderbook-related events and operations.
5
+ * Extends the base WebSocket client with orderbook-specific functionality.
6
+ */
7
+ import { OrderbookWebSocketClient, WebSocketConfig, TradingMode, OrderbookEvent } from "@0xmonaco/types";
8
+ import { BaseWebSocketClientImpl } from "../base-ws-client";
9
+ /**
10
+ * Orderbook-specific WebSocket client implementation
11
+ */
12
+ export declare class OrderbookWebSocketClientImpl extends BaseWebSocketClientImpl implements OrderbookWebSocketClient {
13
+ private orderbookHandlers;
14
+ constructor(config: WebSocketConfig);
15
+ /**
16
+ * Subscribe to orderbook events for a specific market and trading mode.
17
+ *
18
+ * @param market - Trading pair symbol (e.g., "BTC/USDC")
19
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
20
+ * @param callback - Function to handle incoming orderbook events
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * orderbookWS.subscribeToOrderbookEvents("BTC/USDC", TradingMode.SPOT, (event) => {
25
+ * console.log("Orderbook update:", event.bids.length, "bids", event.asks.length, "asks");
26
+ * });
27
+ * ```
28
+ */
29
+ subscribeToOrderbookEvents(market: string, tradingMode: TradingMode, callback: (event: OrderbookEvent) => void): void;
30
+ /**
31
+ * Unsubscribe from orderbook events for a specific market and trading mode.
32
+ *
33
+ * @param market - Trading pair symbol (e.g., "BTC/USDC")
34
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
35
+ */
36
+ unsubscribeFromOrderbookEvents(market: string, tradingMode: TradingMode): void;
37
+ /** Handle incoming WebSocket messages with orderbook-specific logic */
38
+ protected handleMessage(message: any): void;
39
+ /** Check if message is an orderbook event from the backend */
40
+ private isOrderbookEvent;
41
+ /** Handle orderbook-specific events from the backend */
42
+ private handleOrderbookEvent;
43
+ /** Clean up resources when disconnecting */
44
+ protected cleanup(): void;
45
+ }
46
+ //# sourceMappingURL=orderbook-ws-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderbook-ws-client.d.ts","sourceRoot":"","sources":["../../../../src/api/websocket/clients/orderbook-ws-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAoB,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3H,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,uBAAwB,YAAW,wBAAwB;IAC3G,OAAO,CAAC,iBAAiB,CAA2D;gBAExE,MAAM,EAAE,eAAe;IAInC;;;;;;;;;;;;;OAaG;IACH,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI;IAarH;;;;;OAKG;IACH,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI;IAa9E,uEAAuE;IACvE,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAU3C,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB;IAIxB,wDAAwD;IACxD,OAAO,CAAC,oBAAoB;IA4D5B,4CAA4C;IAC5C,SAAS,CAAC,OAAO,IAAI,IAAI;CAG1B"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Orderbook WebSocket Client Implementation
3
+ *
4
+ * Specialized WebSocket client for orderbook-related events and operations.
5
+ * Extends the base WebSocket client with orderbook-specific functionality.
6
+ */
7
+ import { WebSocketChannel } from "@0xmonaco/types";
8
+ import { BaseWebSocketClientImpl } from "../base-ws-client";
9
+ /**
10
+ * Orderbook-specific WebSocket client implementation
11
+ */
12
+ export class OrderbookWebSocketClientImpl extends BaseWebSocketClientImpl {
13
+ constructor(config) {
14
+ super(config);
15
+ this.orderbookHandlers = new Map();
16
+ }
17
+ /**
18
+ * Subscribe to orderbook events for a specific market and trading mode.
19
+ *
20
+ * @param market - Trading pair symbol (e.g., "BTC/USDC")
21
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
22
+ * @param callback - Function to handle incoming orderbook events
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * orderbookWS.subscribeToOrderbookEvents("BTC/USDC", TradingMode.SPOT, (event) => {
27
+ * console.log("Orderbook update:", event.bids.length, "bids", event.asks.length, "asks");
28
+ * });
29
+ * ```
30
+ */
31
+ subscribeToOrderbookEvents(market, tradingMode, callback) {
32
+ const channel = `orderbook:${market}:${tradingMode}`;
33
+ const subscriptionKey = `${market.toUpperCase()}-${tradingMode.toUpperCase()}`;
34
+ this.orderbookHandlers.set(subscriptionKey, callback);
35
+ // Send subscription message using backend's channel format
36
+ this.send({
37
+ type: "Subscribe",
38
+ channels: [channel],
39
+ });
40
+ }
41
+ /**
42
+ * Unsubscribe from orderbook events for a specific market and trading mode.
43
+ *
44
+ * @param market - Trading pair symbol (e.g., "BTC/USDC")
45
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
46
+ */
47
+ unsubscribeFromOrderbookEvents(market, tradingMode) {
48
+ const channel = `orderbook:${market}:${tradingMode}`;
49
+ const subscriptionKey = `${market.toUpperCase()}-${tradingMode.toUpperCase()}`;
50
+ this.orderbookHandlers.delete(subscriptionKey);
51
+ // Send unsubscription message
52
+ this.send({
53
+ type: "Unsubscribe",
54
+ channels: [channel],
55
+ });
56
+ }
57
+ /** Handle incoming WebSocket messages with orderbook-specific logic */
58
+ handleMessage(message) {
59
+ // Handle base messages first (PONG, etc.)
60
+ super.handleMessage(message);
61
+ // Handle orderbook-specific Event messages
62
+ if (this.isOrderbookEvent(message)) {
63
+ this.handleOrderbookEvent(message);
64
+ }
65
+ }
66
+ /** Check if message is an orderbook event from the backend */
67
+ isOrderbookEvent(message) {
68
+ return this.isEventMessage(message, WebSocketChannel.Orderbook);
69
+ }
70
+ /** Handle orderbook-specific events from the backend */
71
+ handleOrderbookEvent(event) {
72
+ try {
73
+ const backendEvent = event.data; // Parent (has pair, trading_mode)
74
+ const orderbookData = backendEvent.data; // Nested (has bids, asks, etc.)
75
+ const symbol = backendEvent.pair;
76
+ const tradingMode = backendEvent.trading_mode;
77
+ if (!symbol || !tradingMode) {
78
+ console.warn("Missing required orderbook event data:", backendEvent);
79
+ return;
80
+ }
81
+ const subscriptionKey = `${symbol.toUpperCase()}-${tradingMode.toUpperCase()}`;
82
+ const handler = this.orderbookHandlers.get(subscriptionKey);
83
+ if (handler) {
84
+ // Backend orderbook event structure (matching matching_engine::types::OrderbookUpdateEvent)
85
+ const transformedEvent = {
86
+ symbol: symbol,
87
+ tradingMode: tradingMode,
88
+ bids: (orderbookData?.bids || []).map((level) => ({
89
+ price: level.price,
90
+ quantity: level.quantity,
91
+ orderCount: level.order_count || 0,
92
+ })),
93
+ asks: (orderbookData?.asks || []).map((level) => ({
94
+ price: level.price,
95
+ quantity: level.quantity,
96
+ orderCount: level.order_count || 0,
97
+ })),
98
+ bestBid: orderbookData?.best_bid,
99
+ bestAsk: orderbookData?.best_ask,
100
+ bidVolume: orderbookData?.bid_volume || "0",
101
+ askVolume: orderbookData?.ask_volume || "0",
102
+ priceChange: orderbookData?.price_change
103
+ ? {
104
+ side: orderbookData.data.price_change.side,
105
+ oldPrice: orderbookData.data.price_change.old_price,
106
+ newPrice: orderbookData.data.price_change.new_price,
107
+ levelRemoved: orderbookData.data.price_change.level_removed || false,
108
+ levelAdded: orderbookData.data.price_change.level_added || false,
109
+ }
110
+ : undefined,
111
+ baseDecimals: backendEvent.base_decimals || 0,
112
+ quoteDecimals: backendEvent.quote_decimals || 0,
113
+ timestamp: backendEvent.timestamp || new Date().toISOString(),
114
+ sequence: backendEvent.sequence_number || 0,
115
+ };
116
+ handler(transformedEvent);
117
+ }
118
+ else {
119
+ console.debug(`No handler registered for orderbook subscription: ${subscriptionKey}`);
120
+ }
121
+ }
122
+ catch (error) {
123
+ console.error("Error handling orderbook event:", error, event);
124
+ }
125
+ }
126
+ /** Clean up resources when disconnecting */
127
+ cleanup() {
128
+ this.orderbookHandlers.clear();
129
+ }
130
+ }
131
+ //# sourceMappingURL=orderbook-ws-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderbook-ws-client.js","sourceRoot":"","sources":["../../../../src/api/websocket/clients/orderbook-ws-client.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,8 @@
4
4
  * Specialized WebSocket client for order-related events and operations.
5
5
  * Extends the base WebSocket client with order-specific functionality.
6
6
  */
7
- import type { OrdersWebSocketClient, WebSocketConfig } from "@0xmonaco/types";
8
- import { BaseWebSocketClientImpl } from "./base-ws-client";
9
- import type { OrderEvent } from "@0xmonaco/types";
7
+ import { OrdersWebSocketClient, WebSocketConfig, TradingMode, OrderEvent } from "@0xmonaco/types";
8
+ import { BaseWebSocketClientImpl } from "../base-ws-client";
10
9
  /**
11
10
  * Orders-specific WebSocket client implementation
12
11
  */
@@ -16,32 +15,37 @@ export declare class OrdersWebSocketClientImpl extends BaseWebSocketClientImpl i
16
15
  /**
17
16
  * Subscribe to order events for a specific market and trading mode.
18
17
  *
19
- * @param market - Trading pair symbol (e.g., "BTC-USDC")
20
- * @param tradingMode - Trading mode ("SPOT" or "MARGIN")
18
+ * @param market - Trading pair symbol (e.g., "BTC/USDC")
19
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
21
20
  * @param callback - Function to handle incoming order events
22
21
  *
23
22
  * @example
24
23
  * ```typescript
25
- * ordersWS.subscribeToOrderEvents("BTC-USDC", "SPOT", (event) => {
24
+ * ordersWS.subscribeToOrderEvents("BTC/USDC", TradingMode.SPOT, (event) => {
26
25
  * console.log("Order event:", event.eventType);
27
26
  * });
28
27
  * ```
29
28
  */
30
- subscribeToOrderEvents(market: string, tradingMode: string, callback: (event: OrderEvent) => void): void;
29
+ subscribeToOrderEvents(market: string, tradingMode: TradingMode, callback: (event: OrderEvent) => void): void;
31
30
  /**
32
31
  * Unsubscribe from order events for a specific market and trading mode.
33
32
  *
34
- * @param market - Trading pair symbol (e.g., "BTC-USDC")
35
- * @param tradingMode - Trading mode ("SPOT" or "MARGIN")
33
+ * @param market - Trading pair symbol (e.g., "BTC/USDC")
34
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * ordersWS.unsubscribeFromOrderEvents("BTC/USDC", TradingMode.SPOT);
39
+ * ```
36
40
  */
37
- unsubscribeFromOrderEvents(market: string, tradingMode: string): void;
38
- /** Handle incoming WebSocket messages with order-specific logic */
41
+ unsubscribeFromOrderEvents(market: string, tradingMode: TradingMode): void;
42
+ /** Override message handling to process order-specific events */
39
43
  protected handleMessage(message: any): void;
40
44
  /** Check if message is an order event from the backend */
41
45
  private isOrderEvent;
42
46
  /** Handle order-specific events from the backend */
43
47
  private handleOrderEvent;
44
- /** Clean up order event handlers on disconnect */
45
- disconnect(): void;
48
+ /** Clean up resources when disconnecting */
49
+ protected cleanup(): void;
46
50
  }
47
51
  //# sourceMappingURL=orders-ws-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders-ws-client.d.ts","sourceRoot":"","sources":["../../../../src/api/websocket/clients/orders-ws-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAoB,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,uBAAwB,YAAW,qBAAqB;IAErG,OAAO,CAAC,aAAa,CAAkD;gBAE3D,MAAM,EAAE,eAAe;IAInC;;;;;;;;;;;;;OAaG;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,GAAG,GAAG,IAAI;IAS3C,0DAA0D;IAC1D,OAAO,CAAC,YAAY;IAIpB,oDAAoD;IACpD,OAAO,CAAC,gBAAgB;IA+CxB,4CAA4C;IAC5C,SAAS,CAAC,OAAO,IAAI,IAAI;CAG1B"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Orders WebSocket Client Implementation
3
+ *
4
+ * Specialized WebSocket client for order-related events and operations.
5
+ * Extends the base WebSocket client with order-specific functionality.
6
+ */
7
+ import { WebSocketChannel } from "@0xmonaco/types";
8
+ import { BaseWebSocketClientImpl } from "../base-ws-client";
9
+ /**
10
+ * Orders-specific WebSocket client implementation
11
+ */
12
+ export class OrdersWebSocketClientImpl extends BaseWebSocketClientImpl {
13
+ constructor(config) {
14
+ super(config);
15
+ // Map to store order event handlers by subscription key
16
+ this.orderHandlers = new Map();
17
+ }
18
+ /**
19
+ * Subscribe to order events for a specific market and trading mode.
20
+ *
21
+ * @param market - Trading pair symbol (e.g., "BTC/USDC")
22
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
23
+ * @param callback - Function to handle incoming order events
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * ordersWS.subscribeToOrderEvents("BTC/USDC", TradingMode.SPOT, (event) => {
28
+ * console.log("Order event:", event.eventType);
29
+ * });
30
+ * ```
31
+ */
32
+ subscribeToOrderEvents(market, tradingMode, callback) {
33
+ const channel = `orders:${market}:${tradingMode}`;
34
+ const subscriptionKey = `${market.toUpperCase()}-${tradingMode.toUpperCase()}`;
35
+ this.orderHandlers.set(subscriptionKey, callback);
36
+ // Send subscription message using backend's channel format
37
+ this.send({
38
+ type: "Subscribe",
39
+ channels: [channel],
40
+ });
41
+ }
42
+ /**
43
+ * Unsubscribe from order events for a specific market and trading mode.
44
+ *
45
+ * @param market - Trading pair symbol (e.g., "BTC/USDC")
46
+ * @param tradingMode - Trading mode (TradingMode.SPOT or TradingMode.MARGIN)
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * ordersWS.unsubscribeFromOrderEvents("BTC/USDC", TradingMode.SPOT);
51
+ * ```
52
+ */
53
+ unsubscribeFromOrderEvents(market, tradingMode) {
54
+ const channel = `orders:${market}:${tradingMode}`;
55
+ const subscriptionKey = `${market.toUpperCase()}-${tradingMode.toUpperCase()}`;
56
+ this.orderHandlers.delete(subscriptionKey);
57
+ // Send unsubscription message
58
+ this.send({
59
+ type: "Unsubscribe",
60
+ channels: [channel],
61
+ });
62
+ }
63
+ /** Override message handling to process order-specific events */
64
+ handleMessage(message) {
65
+ super.handleMessage(message);
66
+ // Handle order-specific Event messages
67
+ if (this.isOrderEvent(message)) {
68
+ this.handleOrderEvent(message);
69
+ }
70
+ }
71
+ /** Check if message is an order event from the backend */
72
+ isOrderEvent(message) {
73
+ return this.isEventMessage(message, WebSocketChannel.Orders);
74
+ }
75
+ /** Handle order-specific events from the backend */
76
+ handleOrderEvent(event) {
77
+ try {
78
+ const backendEvent = event.data; // Parent (has order_id, event_type, etc.)
79
+ const market = backendEvent.trading_pair;
80
+ const tradingMode = backendEvent.trading_mode;
81
+ if (!market || !tradingMode) {
82
+ console.warn("Missing required order event data:", backendEvent);
83
+ return;
84
+ }
85
+ const subscriptionKey = `${market.toUpperCase()}-${tradingMode.toUpperCase()}`;
86
+ // Find the appropriate handler
87
+ const handler = this.orderHandlers.get(subscriptionKey);
88
+ if (handler) {
89
+ // Transform backend event to OrderEvent format
90
+ const orderEvent = {
91
+ orderId: backendEvent.order_id,
92
+ eventType: backendEvent.event_type || "OrderPlaced",
93
+ details: {
94
+ applicationId: backendEvent.application_id,
95
+ orderType: backendEvent.order_type,
96
+ price: backendEvent.price,
97
+ quantity: backendEvent.quantity,
98
+ side: backendEvent.side,
99
+ tradingMode: tradingMode,
100
+ tradingPair: market,
101
+ tradingPairId: backendEvent.trading_pair_id,
102
+ userId: backendEvent.user_id,
103
+ cancelledAt: backendEvent.cancelled_at,
104
+ filledQuantity: backendEvent.filled_quantity,
105
+ remainingQuantity: backendEvent.remaining_quantity,
106
+ reason: backendEvent.reason,
107
+ },
108
+ };
109
+ handler(orderEvent);
110
+ }
111
+ else {
112
+ console.warn(`No handler found for order event: ${subscriptionKey}`, event);
113
+ }
114
+ }
115
+ catch (error) {
116
+ console.error("Error handling order event:", error, event);
117
+ }
118
+ }
119
+ /** Clean up resources when disconnecting */
120
+ cleanup() {
121
+ this.orderHandlers.clear();
122
+ }
123
+ }
124
+ //# sourceMappingURL=orders-ws-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders-ws-client.js","sourceRoot":"","sources":["../../../../src/api/websocket/clients/orders-ws-client.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * WebSocket API Module
3
3
  *
4
- * Exports Base WebSocket client implementation + Orders WebSocket client implementation + Markets WebSocket client implementation
4
+ * Exports Base WebSocket client implementation + Orders WebSocket client implementation + OHLCV WebSocket client implementation + Orderbook WebSocket client implementation
5
5
  */
6
6
  export { BaseWebSocketClientImpl } from "./base-ws-client";
7
- export { OrdersWebSocketClientImpl } from "./orders-ws-client";
8
- export { OHLCVWebSocketClientImpl } from "./ohlcv-ws-client";
7
+ export { OrdersWebSocketClientImpl } from "./clients/orders-ws-client";
8
+ export { OHLCVWebSocketClientImpl } from "./clients/ohlcv-ws-client";
9
+ export { OrderbookWebSocketClientImpl } from "./clients/orderbook-ws-client";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/websocket/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/websocket/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * WebSocket API Module
3
3
  *
4
- * Exports Base WebSocket client implementation + Orders WebSocket client implementation + Markets WebSocket client implementation
4
+ * Exports Base WebSocket client implementation + Orders WebSocket client implementation + OHLCV WebSocket client implementation + Orderbook WebSocket client implementation
5
5
  */
6
6
  export { BaseWebSocketClientImpl } from "./base-ws-client";
7
- export { OrdersWebSocketClientImpl } from "./orders-ws-client";
8
- export { OHLCVWebSocketClientImpl } from "./ohlcv-ws-client";
7
+ export { OrdersWebSocketClientImpl } from "./clients/orders-ws-client";
8
+ export { OHLCVWebSocketClientImpl } from "./clients/ohlcv-ws-client";
9
+ export { OrderbookWebSocketClientImpl } from "./clients/orderbook-ws-client";
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/websocket/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/websocket/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC"}