@0xmonaco/core 0.1.5 → 0.1.6

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 (49) hide show
  1. package/dist/api/applications/api.d.ts +45 -0
  2. package/dist/api/applications/api.d.ts.map +1 -0
  3. package/dist/api/applications/api.js +61 -0
  4. package/dist/api/applications/api.js.map +1 -0
  5. package/dist/api/applications/index.d.ts +6 -0
  6. package/dist/api/applications/index.d.ts.map +1 -0
  7. package/dist/api/applications/index.js +5 -0
  8. package/dist/api/applications/index.js.map +1 -0
  9. package/dist/api/auth/api.d.ts +5 -5
  10. package/dist/api/auth/api.d.ts.map +1 -1
  11. package/dist/api/auth/api.js +6 -6
  12. package/dist/api/auth/api.js.map +1 -1
  13. package/dist/api/auth/index.d.ts +1 -1
  14. package/dist/api/index.d.ts +4 -2
  15. package/dist/api/index.d.ts.map +1 -1
  16. package/dist/api/index.js +4 -2
  17. package/dist/api/index.js.map +1 -1
  18. package/dist/api/trading/api.d.ts +20 -4
  19. package/dist/api/trading/api.d.ts.map +1 -1
  20. package/dist/api/trading/api.js +20 -4
  21. package/dist/api/trading/api.js.map +1 -1
  22. package/dist/api/trading/index.d.ts +1 -1
  23. package/dist/api/vault/api.d.ts +14 -4
  24. package/dist/api/vault/api.d.ts.map +1 -1
  25. package/dist/api/vault/api.js +37 -3
  26. package/dist/api/vault/api.js.map +1 -1
  27. package/dist/api/vault/index.d.ts +1 -1
  28. package/dist/api/websocket/client.d.ts +57 -0
  29. package/dist/api/websocket/client.d.ts.map +1 -0
  30. package/dist/api/websocket/client.js +207 -0
  31. package/dist/api/websocket/client.js.map +1 -0
  32. package/dist/api/websocket/index.d.ts +7 -0
  33. package/dist/api/websocket/index.d.ts.map +1 -0
  34. package/dist/api/websocket/index.js +7 -0
  35. package/dist/api/websocket/index.js.map +1 -0
  36. package/dist/errors.d.ts +67 -76
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/networks.d.ts +1 -1
  41. package/dist/sdk.d.ts +3 -2
  42. package/dist/sdk.d.ts.map +1 -1
  43. package/dist/sdk.js +18 -13
  44. package/dist/sdk.js.map +1 -1
  45. package/package.json +3 -3
  46. package/dist/chains.d.ts +0 -110
  47. package/dist/chains.d.ts.map +0 -1
  48. package/dist/chains.js +0 -56
  49. package/dist/chains.js.map +0 -1
@@ -0,0 +1,57 @@
1
+ /**
2
+ * WebSocket Client Implementation
3
+ *
4
+ * Production-ready WebSocket client with:
5
+ * - Message queuing and retry logic
6
+ * - Heartbeat/ping-pong for connection health
7
+ * - Exponential backoff reconnection
8
+ * - Event-driven error handling
9
+ * - JWT authentication via query parameters
10
+ */
11
+ import type { WebSocketClient, WebSocketConfig, ConnectionStatus } from "@0xmonaco/types";
12
+ /**
13
+ * WebSocket client implementation for Monaco Protocol
14
+ */
15
+ export declare class WebSocketClientImpl implements WebSocketClient {
16
+ private static readonly CONNECTION_TIMEOUT;
17
+ private static readonly HEARTBEAT_INTERVAL;
18
+ private static readonly HEARTBEAT_TIMEOUT;
19
+ private static readonly MAX_RECONNECT_DELAY;
20
+ private ws;
21
+ private config;
22
+ private connectionStatus;
23
+ private reconnectAttempts;
24
+ private reconnectTimer;
25
+ private messageQueue;
26
+ private isAuthenticated;
27
+ private heartbeatInterval;
28
+ private lastPong;
29
+ constructor(config: WebSocketConfig);
30
+ /** Connect to the WebSocket server */
31
+ connect(): Promise<void>;
32
+ /** Disconnect from the WebSocket server */
33
+ disconnect(): void;
34
+ /** Get current connection status */
35
+ getConnectionStatus(): ConnectionStatus;
36
+ /** Check if currently connected */
37
+ isConnected(): boolean;
38
+ /** Set the access token for authentication */
39
+ setAccessToken(token: string): void;
40
+ /** Send message (queues if not connected/authenticated) */
41
+ send(data: any): void;
42
+ /** Flush all queued messages */
43
+ private flushMessageQueue;
44
+ /** Start heartbeat ping/pong */
45
+ private startHeartbeat;
46
+ /** Stop heartbeat interval */
47
+ private stopHeartbeat;
48
+ /** Handle connection errors with cleanup */
49
+ private handleConnectionError;
50
+ /** Create WebSocket connection with event handlers */
51
+ private createConnection;
52
+ /** Schedule reconnect with exponential backoff */
53
+ private scheduleReconnect;
54
+ /** Stop reconnection timer */
55
+ private stopReconnectTimer;
56
+ }
57
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/websocket/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAEzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAGpD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,gBAAgB,CAAoC;IAG5D,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAsB;gBAG1B,MAAM,EAAE,eAAe;IAUnC,sCAAsC;IAChC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB9B,2CAA2C;IAC3C,UAAU,IAAI,IAAI;IAclB,oCAAoC;IACpC,mBAAmB,IAAI,gBAAgB;IAIvC,mCAAmC;IACnC,WAAW,IAAI,OAAO;IAItB,8CAA8C;IAC9C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,2DAA2D;IAC3D,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAQrB,gCAAgC;IAChC,OAAO,CAAC,iBAAiB;IAOzB,gCAAgC;IAChC,OAAO,CAAC,cAAc;IAWtB,8BAA8B;IAC9B,OAAO,CAAC,aAAa;IAQrB,4CAA4C;IAC5C,OAAO,CAAC,qBAAqB;IAO7B,sDAAsD;YACxC,gBAAgB;IAuE9B,kDAAkD;IAClD,OAAO,CAAC,iBAAiB;IA2BzB,8BAA8B;IAC9B,OAAO,CAAC,kBAAkB;CAM3B"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * WebSocket client implementation for Monaco Protocol
3
+ */
4
+ export class WebSocketClientImpl {
5
+ constructor(config) {
6
+ // Core WebSocket properties
7
+ this.ws = null;
8
+ this.connectionStatus = "disconnected";
9
+ // Reconnection management
10
+ this.reconnectAttempts = 0;
11
+ this.reconnectTimer = null;
12
+ // Message handling
13
+ this.messageQueue = [];
14
+ this.isAuthenticated = false;
15
+ // Heartbeat management
16
+ this.heartbeatInterval = null;
17
+ this.lastPong = Date.now();
18
+ this.config = {
19
+ autoReconnect: true,
20
+ reconnectDelay: 5000,
21
+ maxReconnectAttempts: 5,
22
+ accessToken: "",
23
+ ...config,
24
+ };
25
+ }
26
+ /** Connect to the WebSocket server */
27
+ async connect() {
28
+ try {
29
+ if (this.ws) {
30
+ this.ws.close(1000, 'Reconnecting');
31
+ this.ws = null;
32
+ }
33
+ if (this.connectionStatus === "connecting" || this.connectionStatus === "connected") {
34
+ return;
35
+ }
36
+ if (!this.config.accessToken?.trim()) {
37
+ throw new Error("JWT access token is required for WebSocket connection. Please call sdk.login() first.");
38
+ }
39
+ this.connectionStatus = "connecting";
40
+ await this.createConnection();
41
+ }
42
+ catch (error) {
43
+ this.handleConnectionError(error);
44
+ throw error;
45
+ }
46
+ }
47
+ /** Disconnect from the WebSocket server */
48
+ disconnect() {
49
+ this.config.autoReconnect = false;
50
+ this.stopReconnectTimer();
51
+ this.stopHeartbeat();
52
+ if (this.ws) {
53
+ this.ws.close();
54
+ this.ws = null;
55
+ }
56
+ this.connectionStatus = "disconnected";
57
+ this.isAuthenticated = false;
58
+ }
59
+ /** Get current connection status */
60
+ getConnectionStatus() {
61
+ return this.connectionStatus;
62
+ }
63
+ /** Check if currently connected */
64
+ isConnected() {
65
+ return this.connectionStatus === "connected";
66
+ }
67
+ /** Set the access token for authentication */
68
+ setAccessToken(token) {
69
+ this.config.accessToken = token;
70
+ }
71
+ /** Send message (queues if not connected/authenticated) */
72
+ send(data) {
73
+ if (!this.isAuthenticated || this.ws?.readyState !== WebSocket.OPEN) {
74
+ this.messageQueue.push(data);
75
+ return;
76
+ }
77
+ this.ws.send(JSON.stringify(data));
78
+ }
79
+ /** Flush all queued messages */
80
+ flushMessageQueue() {
81
+ while (this.messageQueue.length > 0) {
82
+ const message = this.messageQueue.shift();
83
+ this.send(message);
84
+ }
85
+ }
86
+ /** Start heartbeat ping/pong */
87
+ startHeartbeat() {
88
+ this.heartbeatInterval = setInterval(() => {
89
+ if (Date.now() - this.lastPong > WebSocketClientImpl.HEARTBEAT_TIMEOUT) {
90
+ this.ws?.close();
91
+ return;
92
+ }
93
+ this.ws?.send(JSON.stringify({ type: 'PING' }));
94
+ }, WebSocketClientImpl.HEARTBEAT_INTERVAL);
95
+ }
96
+ /** Stop heartbeat interval */
97
+ stopHeartbeat() {
98
+ if (this.heartbeatInterval) {
99
+ clearInterval(this.heartbeatInterval);
100
+ this.heartbeatInterval = null;
101
+ }
102
+ }
103
+ /** Handle connection errors with cleanup */
104
+ handleConnectionError(error) {
105
+ this.connectionStatus = "disconnected";
106
+ this.isAuthenticated = false;
107
+ this.stopHeartbeat();
108
+ console.warn("WebSocket connection error:", error?.message || error);
109
+ }
110
+ /** Create WebSocket connection with event handlers */
111
+ async createConnection() {
112
+ return new Promise((resolve, reject) => {
113
+ try {
114
+ const url = new URL(this.config.wsUrl);
115
+ if (this.config.accessToken) {
116
+ url.searchParams.set('token', this.config.accessToken);
117
+ }
118
+ this.ws = new WebSocket(url.toString());
119
+ const connectionTimeout = setTimeout(() => {
120
+ if (this.ws && this.ws.readyState === WebSocket.CONNECTING) {
121
+ this.ws.close();
122
+ reject(new Error("WebSocket connection timeout"));
123
+ }
124
+ }, WebSocketClientImpl.CONNECTION_TIMEOUT);
125
+ this.ws.onopen = () => {
126
+ clearTimeout(connectionTimeout);
127
+ this.connectionStatus = "connected";
128
+ this.reconnectAttempts = 0;
129
+ this.isAuthenticated = true;
130
+ this.lastPong = Date.now();
131
+ this.startHeartbeat();
132
+ this.flushMessageQueue();
133
+ resolve();
134
+ };
135
+ this.ws.onmessage = (event) => {
136
+ try {
137
+ const message = JSON.parse(event.data);
138
+ if (message.type === 'PONG') {
139
+ this.lastPong = Date.now();
140
+ return;
141
+ }
142
+ // Basic message handling - extend as needed
143
+ console.log("WebSocket message received:", message);
144
+ }
145
+ catch (error) {
146
+ console.warn("Failed to parse WebSocket message:", error);
147
+ }
148
+ };
149
+ this.ws.onclose = (event) => {
150
+ clearTimeout(connectionTimeout);
151
+ this.connectionStatus = "disconnected";
152
+ this.isAuthenticated = false;
153
+ this.stopHeartbeat();
154
+ if (this.config.autoReconnect &&
155
+ this.reconnectAttempts < (this.config.maxReconnectAttempts || 5) &&
156
+ event.code !== 1000) {
157
+ this.scheduleReconnect();
158
+ }
159
+ };
160
+ this.ws.onerror = () => {
161
+ clearTimeout(connectionTimeout);
162
+ if (this.connectionStatus === "connecting") {
163
+ reject(new Error("Failed to connect to WebSocket"));
164
+ }
165
+ };
166
+ }
167
+ catch (error) {
168
+ this.connectionStatus = "disconnected";
169
+ reject(error);
170
+ }
171
+ });
172
+ }
173
+ /** Schedule reconnect with exponential backoff */
174
+ scheduleReconnect() {
175
+ this.connectionStatus = "reconnecting";
176
+ this.reconnectAttempts++;
177
+ const baseDelay = this.config.reconnectDelay || 5000;
178
+ const exponentialDelay = Math.min(baseDelay * Math.pow(2, this.reconnectAttempts - 1), WebSocketClientImpl.MAX_RECONNECT_DELAY);
179
+ this.reconnectTimer = setTimeout(async () => {
180
+ try {
181
+ if (!this.config.accessToken?.trim()) {
182
+ console.error("JWT token expired or invalid, cannot reconnect");
183
+ return;
184
+ }
185
+ await this.connect();
186
+ }
187
+ catch (error) {
188
+ if (this.reconnectAttempts >= (this.config.maxReconnectAttempts || 5)) {
189
+ console.error("Failed to reconnect after maximum attempts");
190
+ }
191
+ }
192
+ }, exponentialDelay);
193
+ }
194
+ /** Stop reconnection timer */
195
+ stopReconnectTimer() {
196
+ if (this.reconnectTimer) {
197
+ clearTimeout(this.reconnectTimer);
198
+ this.reconnectTimer = null;
199
+ }
200
+ }
201
+ }
202
+ // Connection constants
203
+ WebSocketClientImpl.CONNECTION_TIMEOUT = 10000; // 10 seconds
204
+ WebSocketClientImpl.HEARTBEAT_INTERVAL = 15000; // 15 seconds
205
+ WebSocketClientImpl.HEARTBEAT_TIMEOUT = 30000; // 30 seconds
206
+ WebSocketClientImpl.MAX_RECONNECT_DELAY = 30000; // 30 seconds
207
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/websocket/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WebSocket API Module
3
+ *
4
+ * Exports WebSocket client implementation for real-time events.
5
+ */
6
+ export { WebSocketClientImpl } from "./client";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/websocket/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WebSocket API Module
3
+ *
4
+ * Exports WebSocket client implementation for real-time events.
5
+ */
6
+ export { WebSocketClientImpl } from "./client";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/websocket/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -29,23 +29,23 @@
29
29
  * - SUBSCRIPTION_ERROR: Event subscription failure
30
30
  */
31
31
  export declare const ERROR_CODES: {
32
- /** Initialization errors */
33
- readonly INITIALIZATION_ERROR: "INITIALIZATION_ERROR";
34
- readonly INVALID_CONFIG: "INVALID_CONFIG";
35
- readonly INVALID_STATE: "INVALID_STATE";
36
- readonly UNSUPPORTED_NETWORK: "UNSUPPORTED_NETWORK";
37
- /** API errors */
38
- readonly API_ERROR: "API_ERROR";
39
- readonly CONTRACT_ERROR: "CONTRACT_ERROR";
40
- readonly TRANSACTION_ERROR: "TRANSACTION_ERROR";
41
- /** Order errors */
42
- readonly ORDER_ERROR: "ORDER_ERROR";
43
- readonly INVALID_ORDER: "INVALID_ORDER";
44
- readonly ORDER_NOT_FOUND: "ORDER_NOT_FOUND";
45
- readonly INSUFFICIENT_BALANCE: "INSUFFICIENT_BALANCE";
46
- /** Event errors */
47
- readonly EVENT_ERROR: "EVENT_ERROR";
48
- readonly SUBSCRIPTION_ERROR: "SUBSCRIPTION_ERROR";
32
+ /** Initialization errors */
33
+ readonly INITIALIZATION_ERROR: "INITIALIZATION_ERROR";
34
+ readonly INVALID_CONFIG: "INVALID_CONFIG";
35
+ readonly INVALID_STATE: "INVALID_STATE";
36
+ readonly UNSUPPORTED_NETWORK: "UNSUPPORTED_NETWORK";
37
+ /** API errors */
38
+ readonly API_ERROR: "API_ERROR";
39
+ readonly CONTRACT_ERROR: "CONTRACT_ERROR";
40
+ readonly TRANSACTION_ERROR: "TRANSACTION_ERROR";
41
+ /** Order errors */
42
+ readonly ORDER_ERROR: "ORDER_ERROR";
43
+ readonly INVALID_ORDER: "INVALID_ORDER";
44
+ readonly ORDER_NOT_FOUND: "ORDER_NOT_FOUND";
45
+ readonly INSUFFICIENT_BALANCE: "INSUFFICIENT_BALANCE";
46
+ /** Event errors */
47
+ readonly EVENT_ERROR: "EVENT_ERROR";
48
+ readonly SUBSCRIPTION_ERROR: "SUBSCRIPTION_ERROR";
49
49
  };
50
50
  /**
51
51
  * Type representing all possible Monaco Core SDK error codes.
@@ -53,89 +53,80 @@ export declare const ERROR_CODES: {
53
53
  */
54
54
  export type MonacoErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];
55
55
  export declare abstract class MonacoCoreError extends Error {
56
- abstract code: MonacoErrorCode;
56
+ abstract code: MonacoErrorCode;
57
57
  }
58
58
  export declare class InitializationError extends MonacoCoreError {
59
- code: "INITIALIZATION_ERROR";
60
- constructor(message: string);
59
+ code: "INITIALIZATION_ERROR";
60
+ constructor(message: string);
61
61
  }
62
62
  export declare class InvalidConfigError extends MonacoCoreError {
63
- code: "INVALID_CONFIG";
64
- field?: string;
65
- value?: any;
66
- constructor(message: string, field?: string, value?: any);
63
+ code: "INVALID_CONFIG";
64
+ field?: string;
65
+ value?: any;
66
+ constructor(message: string, field?: string, value?: any);
67
67
  }
68
68
  export declare class InvalidStateError extends MonacoCoreError {
69
- code: "INVALID_STATE";
70
- currentState?: string;
71
- expectedState?: string;
72
- constructor(message: string, currentState?: string, expectedState?: string);
69
+ code: "INVALID_STATE";
70
+ currentState?: string;
71
+ expectedState?: string;
72
+ constructor(message: string, currentState?: string, expectedState?: string);
73
73
  }
74
74
  export declare class UnsupportedNetworkError extends MonacoCoreError {
75
- code: "UNSUPPORTED_NETWORK";
76
- networkId?: number;
77
- supportedNetworks?: number[];
78
- constructor(
79
- message: string,
80
- networkId?: number,
81
- supportedNetworks?: number[],
82
- );
75
+ code: "UNSUPPORTED_NETWORK";
76
+ networkId?: number;
77
+ supportedNetworks?: number[];
78
+ constructor(message: string, networkId?: number, supportedNetworks?: number[]);
83
79
  }
84
80
  export declare class APIError extends MonacoCoreError {
85
- code: "API_ERROR";
86
- endpoint?: string;
87
- statusCode?: number;
88
- constructor(message: string, endpoint?: string, statusCode?: number);
81
+ code: "API_ERROR";
82
+ endpoint?: string;
83
+ statusCode?: number;
84
+ constructor(message: string, endpoint?: string, statusCode?: number);
89
85
  }
90
86
  export declare class ContractError extends MonacoCoreError {
91
- code: "CONTRACT_ERROR";
92
- revertReason?: string;
93
- transactionHash?: string;
94
- constructor(message: string, revertReason?: string, transactionHash?: string);
87
+ code: "CONTRACT_ERROR";
88
+ revertReason?: string;
89
+ transactionHash?: string;
90
+ constructor(message: string, revertReason?: string, transactionHash?: string);
95
91
  }
96
92
  export declare class TransactionError extends MonacoCoreError {
97
- code: "TRANSACTION_ERROR";
98
- transactionHash?: string;
99
- gasUsed?: bigint;
100
- constructor(message: string, transactionHash?: string, gasUsed?: bigint);
93
+ code: "TRANSACTION_ERROR";
94
+ transactionHash?: string;
95
+ gasUsed?: bigint;
96
+ constructor(message: string, transactionHash?: string, gasUsed?: bigint);
101
97
  }
102
98
  export declare class OrderError extends MonacoCoreError {
103
- code: "ORDER_ERROR";
104
- orderId?: string;
105
- market?: string;
106
- constructor(message: string, orderId?: string, market?: string);
99
+ code: "ORDER_ERROR";
100
+ orderId?: string;
101
+ market?: string;
102
+ constructor(message: string, orderId?: string, market?: string);
107
103
  }
108
104
  export declare class InvalidOrderError extends MonacoCoreError {
109
- code: "INVALID_ORDER";
110
- field?: string;
111
- value?: any;
112
- constructor(message: string, field?: string, value?: any);
105
+ code: "INVALID_ORDER";
106
+ field?: string;
107
+ value?: any;
108
+ constructor(message: string, field?: string, value?: any);
113
109
  }
114
110
  export declare class OrderNotFoundError extends MonacoCoreError {
115
- code: "ORDER_NOT_FOUND";
116
- orderId?: string;
117
- constructor(message: string, orderId?: string);
111
+ code: "ORDER_NOT_FOUND";
112
+ orderId?: string;
113
+ constructor(message: string, orderId?: string);
118
114
  }
119
115
  export declare class InsufficientBalanceError extends MonacoCoreError {
120
- code: "INSUFFICIENT_BALANCE";
121
- token?: string;
122
- required?: bigint;
123
- available?: bigint;
124
- constructor(
125
- message: string,
126
- token?: string,
127
- required?: bigint,
128
- available?: bigint,
129
- );
116
+ code: "INSUFFICIENT_BALANCE";
117
+ token?: string;
118
+ required?: bigint;
119
+ available?: bigint;
120
+ constructor(message: string, token?: string, required?: bigint, available?: bigint);
130
121
  }
131
122
  export declare class EventError extends MonacoCoreError {
132
- code: "EVENT_ERROR";
133
- eventType?: string;
134
- constructor(message: string, eventType?: string);
123
+ code: "EVENT_ERROR";
124
+ eventType?: string;
125
+ constructor(message: string, eventType?: string);
135
126
  }
136
127
  export declare class SubscriptionError extends MonacoCoreError {
137
- code: "SUBSCRIPTION_ERROR";
138
- subscriptionId?: string;
139
- constructor(message: string, subscriptionId?: string);
128
+ code: "SUBSCRIPTION_ERROR";
129
+ subscriptionId?: string;
130
+ constructor(message: string, subscriptionId?: string);
140
131
  }
141
- //# sourceMappingURL=errors.d.ts.map
132
+ //# sourceMappingURL=errors.d.ts.map
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * Provides secure access to Monaco's hybrid trading architecture.
6
6
  */
7
7
  export { MonacoSDKImpl as MonacoSDK } from "./sdk";
8
- export type { MonacoSDK as IMonacoSDK, SDKConfig, Network, VaultAPI, TradingAPI, ProfileAPI, Balance, TransactionResult, OrderResponse, CancelOrderResponse, } from "@0xmonaco/types";
8
+ export type { MonacoSDK as IMonacoSDK, SDKConfig, Network, VaultAPI, TradingAPI, ProfileAPI, WebSocketClient, WebSocketConfig, BaseWebSocketEvent, ConnectionStatus, Balance, TransactionResult, OrderResponse, CancelOrderResponse, } from "@0xmonaco/types";
9
9
  export { NETWORK_ENDPOINTS } from "./networks";
10
10
  export { MonacoCoreError, InitializationError, InvalidConfigError, InvalidStateError, UnsupportedNetworkError, APIError, ContractError, TransactionError, OrderError, InvalidOrderError, OrderNotFoundError, InsufficientBalanceError, EventError, SubscriptionError, } from "./errors";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,OAAO,CAAC;AAMnD,YAAY,EACX,SAAS,IAAI,UAAU,EACvB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACnB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EACN,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,iBAAiB,GACjB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,OAAO,CAAC;AAMnD,YAAY,EACX,SAAS,IAAI,UAAU,EACvB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,EACP,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACnB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EACN,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,iBAAiB,GACjB,MAAM,UAAU,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,OAAO,CAAC;AAmBnD,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EACN,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,iBAAiB,GACjB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,OAAO,CAAC;AAuBnD,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EACN,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,iBAAiB,GACjB,MAAM,UAAU,CAAC"}
@@ -5,4 +5,4 @@
5
5
  */
6
6
  import { type Network, type NetworkEndpoints } from "@0xmonaco/types";
7
7
  export declare const NETWORK_ENDPOINTS: Record<Network, NetworkEndpoints>;
8
- //# sourceMappingURL=networks.d.ts.map
8
+ //# sourceMappingURL=networks.d.ts.map
package/dist/sdk.d.ts CHANGED
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Monaco SDK Implementation
3
3
  */
4
- import type { AuthAPI, AuthState, MonacoSDK, Network, ProfileAPI, SDKConfig, TradingAPI, VaultAPI } from "@0xmonaco/types";
4
+ import type { ApplicationsAPI, AuthAPI, AuthState, MonacoSDK, Network, ProfileAPI, SDKConfig, TradingAPI, VaultAPI, WebSocketClient } from "@0xmonaco/types";
5
5
  import { type PublicClient, type TransactionReceipt, type WalletClient } from "viem";
6
6
  export declare class MonacoSDKImpl implements MonacoSDK {
7
7
  auth: AuthAPI;
8
+ applications: ApplicationsAPI;
8
9
  vault: VaultAPI;
9
10
  trading: TradingAPI;
10
11
  profile: ProfileAPI;
12
+ websocket: WebSocketClient;
11
13
  walletClient: WalletClient;
12
14
  publicClient: PublicClient;
13
15
  private authState?;
@@ -16,7 +18,6 @@ export declare class MonacoSDKImpl implements MonacoSDK {
16
18
  constructor(cfg: SDKConfig);
17
19
  /**
18
20
  * Authenticate the user
19
- * @param clientId - The client ID to use for authentication
20
21
  * @returns The authentication response
21
22
  */
22
23
  login(clientId: string): Promise<AuthState>;
package/dist/sdk.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACX,OAAO,EACP,SAAS,EACT,SAAS,EACT,OAAO,EACP,UAAU,EACV,SAAS,EACT,UAAU,EACV,QAAQ,EACR,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKN,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,MAAM,MAAM,CAAC;AAiBd,qBAAa,aAAc,YAAW,SAAS;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;IAEpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAElC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,GAAG,EAAE,SAAS;IA2D1B;;;;OAIG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAmBjD;;;OAGG;IACH,YAAY,IAAI,SAAS,GAAG,SAAS;IAIrC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAiCvC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;OAMG;IACG,kBAAkB,CACvB,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,CAAC;CAO9B;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAE5D"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACX,eAAe,EACf,OAAO,EACP,SAAS,EACT,SAAS,EACT,OAAO,EACP,UAAU,EACV,SAAS,EACT,UAAU,EACV,QAAQ,EACR,eAAe,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKN,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,MAAM,MAAM,CAAC;AAcd,qBAAa,aAAc,YAAW,SAAS;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,eAAe,CAAC;IAC9B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,EAAE,eAAe,CAAC;IAE3B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAElC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,GAAG,EAAE,SAAS;IAuD1B;;;OAGG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA2BjD;;;OAGG;IACH,YAAY,IAAI,SAAS,GAAG,SAAS;IAIrC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAoCvC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;OAMG;IACG,kBAAkB,CACvB,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,CAAC;CAO9B;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAE5D"}
package/dist/sdk.js CHANGED
@@ -1,14 +1,12 @@
1
- /**
2
- * Monaco SDK Implementation
3
- */
4
- import { CONTRACT_ADDRESSES } from "@0xmonaco/contracts";
5
1
  import { createPublicClient, http, } from "viem";
6
2
  import { sei, seiTestnet } from "viem/chains";
7
- import { ProfileAPIImpl } from "./api";
3
+ import { ApplicationsAPIImpl } from "./api/applications";
8
4
  import { AuthAPIImpl } from "./api/auth";
5
+ import { ProfileAPIImpl } from "./api/profile";
9
6
  import { TradingAPIImpl } from "./api/trading";
10
7
  import { VaultAPIImpl } from "./api/vault";
11
- import { APIError, InvalidConfigError, InvalidStateError, UnsupportedNetworkError, } from "./errors";
8
+ import { WebSocketClientImpl } from "./api/websocket";
9
+ import { APIError, InvalidConfigError, InvalidStateError } from "./errors";
12
10
  import { NETWORK_ENDPOINTS } from "./networks";
13
11
  // ---------------------------------------------------------------------------
14
12
  // SDK implementation
@@ -31,28 +29,27 @@ export class MonacoSDKImpl {
31
29
  });
32
30
  // Get network endpoints based on network string
33
31
  const endpoints = NETWORK_ENDPOINTS[network];
34
- // Get contract addresses for the chain
35
- const contracts = CONTRACT_ADDRESSES[chain.id];
36
- if (!contracts) {
37
- throw new UnsupportedNetworkError(`Chain ID ${chain.id} is not supported. Supported chains: ${[seiTestnet.id, sei.id].join(", ")}`, chain.id, [seiTestnet.id, sei.id]);
38
- }
39
32
  // Validate wallet client is on the correct chain
40
33
  if (cfg.walletClient.chain?.id !== chain.id) {
41
34
  throw new InvalidConfigError(`Wallet client chain mismatch. Expected ${chain.id}, got ${cfg.walletClient.chain?.id}`, "walletClient");
42
35
  }
43
36
  this.walletClient = cfg.walletClient;
44
37
  // Instantiate APIs
38
+ this.applications = new ApplicationsAPIImpl(endpoints.apiUrl);
45
39
  this.auth = new AuthAPIImpl(this.walletClient, endpoints.apiUrl, this.chain);
46
- this.vault = new VaultAPIImpl(this.publicClient, this.walletClient, contracts.vault, endpoints.apiUrl, this.chain);
40
+ this.vault = new VaultAPIImpl(this.publicClient, this.walletClient, endpoints.apiUrl, this.chain);
47
41
  this.trading = new TradingAPIImpl(endpoints.apiUrl);
48
42
  this.profile = new ProfileAPIImpl(endpoints.apiUrl);
43
+ // Instantiate WebSocket client
44
+ this.websocket = new WebSocketClientImpl({
45
+ wsUrl: endpoints.apiUrl + "/ws",
46
+ });
49
47
  }
50
48
  // -----------------------------------------------------------------------
51
49
  // Authentication
52
50
  // -----------------------------------------------------------------------
53
51
  /**
54
52
  * Authenticate the user
55
- * @param clientId - The client ID to use for authentication
56
53
  * @returns The authentication response
57
54
  */
58
55
  async login(clientId) {
@@ -65,9 +62,15 @@ export class MonacoSDKImpl {
65
62
  createdAt: Math.floor(Date.now() / 1000),
66
63
  };
67
64
  // Set access tokens for APIs
65
+ this.applications.setAccessToken(this.authState.accessToken);
68
66
  this.vault.setAccessToken(this.authState.accessToken);
69
67
  this.trading.setAccessToken(this.authState.accessToken);
70
68
  this.profile.setAccessToken(this.authState.accessToken);
69
+ // Set WebSocket access token
70
+ this.websocket.setAccessToken(this.authState.accessToken);
71
+ // Set vault address
72
+ const config = await this.applications.getApplicationConfig();
73
+ this.vault.setVaultAddress(config.vaultContractAddress);
71
74
  return this.authState;
72
75
  }
73
76
  /**
@@ -111,6 +114,8 @@ export class MonacoSDKImpl {
111
114
  this.vault.setAccessToken(this.authState.accessToken);
112
115
  this.trading.setAccessToken(this.authState.accessToken);
113
116
  this.profile.setAccessToken(this.authState.accessToken);
117
+ // Set WebSocket access token
118
+ this.websocket.setAccessToken(this.authState.accessToken);
114
119
  return this.authState;
115
120
  }
116
121
  catch (error) {