lighter-ts-sdk 1.0.1 → 1.0.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 +53 -40
- package/dist/api/transaction-api.d.ts +5 -1
- package/dist/api/transaction-api.d.ts.map +1 -1
- package/dist/api/transaction-api.js.map +1 -1
- package/dist/api/ws-order-client.d.ts +82 -0
- package/dist/api/ws-order-client.d.ts.map +1 -0
- package/dist/api/ws-order-client.js +281 -0
- package/dist/api/ws-order-client.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/signer/signer-client.d.ts.map +1 -1
- package/dist/signer/signer-client.js +5 -3
- package/dist/signer/signer-client.js.map +1 -1
- package/dist/signer/wasm-signer-client.d.ts +104 -10
- package/dist/signer/wasm-signer-client.d.ts.map +1 -1
- package/dist/signer/wasm-signer-client.js +643 -356
- package/dist/signer/wasm-signer-client.js.map +1 -1
- package/dist/utils/advanced-cache.d.ts +66 -0
- package/dist/utils/advanced-cache.d.ts.map +1 -0
- package/dist/utils/advanced-cache.js +204 -0
- package/dist/utils/advanced-cache.js.map +1 -0
- package/dist/utils/exceptions.d.ts +24 -0
- package/dist/utils/exceptions.d.ts.map +1 -1
- package/dist/utils/exceptions.js +48 -1
- package/dist/utils/exceptions.js.map +1 -1
- package/dist/utils/logger.d.ts +35 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +96 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/memory-pool.d.ts +98 -0
- package/dist/utils/memory-pool.d.ts.map +1 -0
- package/dist/utils/memory-pool.js +190 -0
- package/dist/utils/memory-pool.js.map +1 -0
- package/dist/utils/node-wasm-signer.d.ts +8 -0
- package/dist/utils/node-wasm-signer.d.ts.map +1 -1
- package/dist/utils/node-wasm-signer.js +84 -29
- package/dist/utils/node-wasm-signer.js.map +1 -1
- package/dist/utils/nonce-cache.d.ts +29 -0
- package/dist/utils/nonce-cache.d.ts.map +1 -0
- package/dist/utils/nonce-cache.js +111 -0
- package/dist/utils/nonce-cache.js.map +1 -0
- package/dist/utils/optimized-http-client.d.ts +29 -0
- package/dist/utils/optimized-http-client.d.ts.map +1 -0
- package/dist/utils/optimized-http-client.js +142 -0
- package/dist/utils/optimized-http-client.js.map +1 -0
- package/dist/utils/performance-monitor.d.ts +41 -0
- package/dist/utils/performance-monitor.d.ts.map +1 -0
- package/dist/utils/performance-monitor.js +183 -0
- package/dist/utils/performance-monitor.js.map +1 -0
- package/dist/utils/request-batcher.d.ts +45 -0
- package/dist/utils/request-batcher.d.ts.map +1 -0
- package/dist/utils/request-batcher.js +177 -0
- package/dist/utils/request-batcher.js.map +1 -0
- package/dist/utils/wasm-manager.d.ts +30 -0
- package/dist/utils/wasm-manager.d.ts.map +1 -0
- package/dist/utils/wasm-manager.js +115 -0
- package/dist/utils/wasm-manager.js.map +1 -0
- package/docs/AccountApi.md +1 -1
- package/docs/GettingStarted.md +8 -8
- package/docs/OrderApi.md +1 -1
- package/docs/SignerClient.md +1 -1
- package/docs/TransactionApi.md +1 -1
- package/docs/WsClient.md +1 -1
- package/docs/types/Account.md +1 -1
- package/docs/types/ApiKeyPair.md +1 -1
- package/docs/types/CreateOrderParams.md +1 -1
- package/docs/types/MarketOrderParams.md +1 -1
- package/docs/types/SignerConfig.md +1 -1
- package/docs/types/WasmSignerConfig.md +1 -1
- package/examples/README.md +1 -1
- package/examples/account_info.ts +5 -2
- package/examples/cancel_all_orders.ts +77 -0
- package/examples/close_all_positions.ts +69 -0
- package/examples/create_cancel_order.ts +48 -8
- package/examples/create_market_order.ts +42 -1
- package/examples/create_market_order_if_slippage.ts +69 -0
- package/examples/create_market_order_max_slippage.ts +43 -43
- package/examples/create_sl_tp.ts +114 -29
- package/examples/create_with_multiple_keys.ts +77 -58
- package/examples/get_info.ts +1 -1
- package/examples/market_data_json.ts +80 -0
- package/examples/wait_for_transaction.ts +101 -0
- package/examples/ws.ts +64 -24
- package/examples/ws_async.ts +40 -39
- package/package.json +70 -70
- package/dist/utils/signer.d.ts +0 -15
- package/dist/utils/signer.d.ts.map +0 -1
- package/dist/utils/signer.js +0 -68
- package/dist/utils/signer.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **⚠️ Disclaimer**: This is an **unofficial** TypeScript SDK for Lighter Protocol, built by the community. It is not officially maintained by the Lighter Protocol team.
|
|
4
4
|
|
|
5
|
-
TypeScript SDK for Lighter Protocol -
|
|
5
|
+
TypeScript SDK for Lighter Protocol - Trade perpetuals with unmatched efficiency and fairness.
|
|
6
6
|
|
|
7
7
|
## Requirements
|
|
8
8
|
|
|
@@ -105,7 +105,7 @@ async function createLimitOrder() {
|
|
|
105
105
|
baseAmount: 500000, // 0.5 BTC
|
|
106
106
|
price: 295000000, // $29,500
|
|
107
107
|
isAsk: false, // Buy order
|
|
108
|
-
timeInForce: SignerClient.
|
|
108
|
+
timeInForce: SignerClient.ORDER_TIME_IN_FORCE_GOOD_TILL_TIME // Good Till Cancel
|
|
109
109
|
});
|
|
110
110
|
|
|
111
111
|
if (err) {
|
|
@@ -167,12 +167,10 @@ async function transferUSDC() {
|
|
|
167
167
|
await client.initialize();
|
|
168
168
|
await client.ensureWasmClient();
|
|
169
169
|
|
|
170
|
-
const [tx, txHash, err] = await client.transfer(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
memo: 'a'.repeat(32) // 32-byte memo required
|
|
175
|
-
});
|
|
170
|
+
const [tx, txHash, err] = await client.transfer(
|
|
171
|
+
456, // toAccountIndex
|
|
172
|
+
1000000 // usdcAmount in cents ($10,000)
|
|
173
|
+
);
|
|
176
174
|
|
|
177
175
|
if (err) {
|
|
178
176
|
console.error('Transfer failed:', err);
|
|
@@ -201,11 +199,11 @@ async function updateLeverage() {
|
|
|
201
199
|
await client.initialize();
|
|
202
200
|
await client.ensureWasmClient();
|
|
203
201
|
|
|
204
|
-
const [tx, txHash, err] = await client.updateLeverage(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
202
|
+
const [tx, txHash, err] = await client.updateLeverage(
|
|
203
|
+
0, // marketIndex
|
|
204
|
+
SignerClient.CROSS_MARGIN_MODE, // marginMode
|
|
205
|
+
10 // initialMarginFraction (10x leverage)
|
|
206
|
+
);
|
|
209
207
|
|
|
210
208
|
if (err) {
|
|
211
209
|
console.error('Leverage update failed:', err);
|
|
@@ -234,10 +232,10 @@ async function cancelAllOrders() {
|
|
|
234
232
|
await client.initialize();
|
|
235
233
|
await client.ensureWasmClient();
|
|
236
234
|
|
|
237
|
-
const [tx, txHash, err] = await client.cancelAllOrders(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
235
|
+
const [tx, txHash, err] = await client.cancelAllOrders(
|
|
236
|
+
SignerClient.CANCEL_ALL_TIF_IMMEDIATE, // timeInForce
|
|
237
|
+
Date.now() // time
|
|
238
|
+
);
|
|
241
239
|
|
|
242
240
|
if (err) {
|
|
243
241
|
console.error('Cancel all failed:', err);
|
|
@@ -299,9 +297,9 @@ SignerClient.ORDER_TYPE_LIMIT = 0
|
|
|
299
297
|
SignerClient.ORDER_TYPE_MARKET = 1
|
|
300
298
|
|
|
301
299
|
// Time in Force
|
|
302
|
-
SignerClient.
|
|
303
|
-
SignerClient.
|
|
304
|
-
SignerClient.
|
|
300
|
+
SignerClient.ORDER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL = 0 // Immediate or Cancel
|
|
301
|
+
SignerClient.ORDER_TIME_IN_FORCE_GOOD_TILL_TIME = 1 // Good Till Time
|
|
302
|
+
SignerClient.ORDER_TIME_IN_FORCE_FILL_OR_KILL = 2 // Fill or Kill
|
|
305
303
|
|
|
306
304
|
// Margin Modes
|
|
307
305
|
SignerClient.CROSS_MARGIN_MODE = 0
|
|
@@ -397,28 +395,43 @@ Check the `examples/` directory for comprehensive usage examples:
|
|
|
397
395
|
- Browser compatibility with WebAssembly
|
|
398
396
|
- TypeScript 4.5+ support
|
|
399
397
|
|
|
400
|
-
### 🚀 **
|
|
398
|
+
### 🚀 **Performance Optimizations (v1.0.1)**
|
|
399
|
+
|
|
400
|
+
#### **Implemented Optimizations**
|
|
401
|
+
- ⚡ **~200ms Performance Improvement** - Optimized WASM initialization and path resolution
|
|
402
|
+
- ⚡ **Automatic Path Resolution** - Fixed WASM file path issues in NPM packages
|
|
403
|
+
- ⚡ **Enhanced Nonce Caching** - Improved transaction throughput with smart nonce management
|
|
404
|
+
- ⚡ **Connection Pooling** - Optimized HTTP client with keep-alive connections
|
|
405
|
+
- ⚡ **Memory Pool Management** - Reduced memory allocation overhead
|
|
406
|
+
- ⚡ **Request Batching** - Batch multiple operations for better performance
|
|
407
|
+
- ⚡ **Advanced Caching** - Intelligent caching for frequently accessed data
|
|
408
|
+
|
|
409
|
+
#### **Additional Order Types**
|
|
410
|
+
- ✅ **Stop Loss Orders** - Market orders triggered by price levels
|
|
411
|
+
- ✅ **Stop Loss Limit Orders** - Limit orders triggered by price levels
|
|
412
|
+
- ✅ **Take Profit Orders** - Market orders for profit taking
|
|
413
|
+
- ✅ **Take Profit Limit Orders** - Limit orders for profit taking
|
|
414
|
+
- ✅ **TWAP Orders** - Time-weighted average price orders
|
|
415
|
+
|
|
416
|
+
#### **Enhanced Examples**
|
|
417
|
+
- 📚 **Performance Testing** - Comprehensive performance benchmarking
|
|
418
|
+
- 📚 **Advanced Order Management** - Stop-loss and take-profit examples
|
|
419
|
+
- 📚 **Batch Operations** - Multiple order creation examples
|
|
420
|
+
- 📚 **WebSocket Optimization** - Real-time data streaming examples
|
|
421
|
+
- 📚 **Error Handling** - Comprehensive error handling patterns
|
|
422
|
+
|
|
423
|
+
### 🔄 **Next Release Features**
|
|
401
424
|
|
|
402
425
|
#### **Planned Enhancements**
|
|
403
|
-
- 🔄 **
|
|
404
|
-
- 🔄 **
|
|
405
|
-
- 🔄 **
|
|
406
|
-
- 🔄 **
|
|
407
|
-
- 🔄 **
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
- 🔄 **Referral API** - Referral program integration
|
|
413
|
-
- 🔄 **Notification API** - Push notifications for important events
|
|
414
|
-
|
|
415
|
-
#### **Developer Experience**
|
|
416
|
-
- 🔄 **Enhanced Error Messages** - More descriptive error handling
|
|
417
|
-
- 🔄 **Rate Limit Headers** - Better rate limiting information
|
|
418
|
-
- 🔄 **Request/Response Logging** - Debug logging capabilities
|
|
419
|
-
- 🔄 **Mock Testing** - Testing utilities and mock data
|
|
420
|
-
|
|
421
|
-
### 🎯 **Current Version: 1.0.0 (Unofficial Release)**
|
|
426
|
+
- 🔄 **Additional Order Types** - More advanced order types
|
|
427
|
+
- 🔄 **Enhanced Error Recovery** - Improved error handling and recovery
|
|
428
|
+
- 🔄 **Additional WebSocket Subscriptions** - More real-time data streams
|
|
429
|
+
- 🔄 **Enhanced Documentation** - More comprehensive guides
|
|
430
|
+
- 🔄 **Unit Tests** - Complete test coverage
|
|
431
|
+
- 🔄 **Integration Tests** - End-to-end testing
|
|
432
|
+
- 🔄 **CI/CD Pipeline** - Automated testing and deployment
|
|
433
|
+
|
|
434
|
+
### 🎯 **Current Version: 1.0.2 (Unofficial Release)**
|
|
422
435
|
|
|
423
436
|
**⚠️ Community-Built SDK**
|
|
424
437
|
- This is an **unofficial** TypeScript SDK built by the community
|
|
@@ -26,7 +26,11 @@ export interface NextNonce {
|
|
|
26
26
|
nonce: number;
|
|
27
27
|
}
|
|
28
28
|
export interface TxHash {
|
|
29
|
-
hash
|
|
29
|
+
hash?: string;
|
|
30
|
+
tx_hash?: string;
|
|
31
|
+
code?: number;
|
|
32
|
+
message?: string;
|
|
33
|
+
predicted_execution_time_ms?: number;
|
|
30
34
|
}
|
|
31
35
|
export interface TxHashes {
|
|
32
36
|
hashes: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-api.d.ts","sourceRoot":"","sources":["../../src/api/transaction-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE/H,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction-api.d.ts","sourceRoot":"","sources":["../../src/api/transaction-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-api.js","sourceRoot":"","sources":["../../src/api/transaction-api.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"transaction-api.js","sourceRoot":"","sources":["../../src/api/transaction-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
export interface LighterWsSendTx {
|
|
4
|
+
type: 'jsonapi/sendtx';
|
|
5
|
+
data: {
|
|
6
|
+
tx_type: number;
|
|
7
|
+
tx_info: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export interface LighterWsSendBatchTx {
|
|
11
|
+
type: 'jsonapi/sendtxbatch';
|
|
12
|
+
data: {
|
|
13
|
+
tx_types: number[];
|
|
14
|
+
tx_infos: string[];
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export interface LighterWsTransaction {
|
|
18
|
+
hash: string;
|
|
19
|
+
type: number;
|
|
20
|
+
info: string;
|
|
21
|
+
event_info: string;
|
|
22
|
+
status: number;
|
|
23
|
+
transaction_index: number;
|
|
24
|
+
l1_address: string;
|
|
25
|
+
account_index: number;
|
|
26
|
+
nonce: number;
|
|
27
|
+
expire_at: number;
|
|
28
|
+
block_height: number;
|
|
29
|
+
queued_at: number;
|
|
30
|
+
executed_at: number;
|
|
31
|
+
sequence_index: number;
|
|
32
|
+
parent_hash: string;
|
|
33
|
+
}
|
|
34
|
+
export interface WsOrderRequest {
|
|
35
|
+
id: string;
|
|
36
|
+
type: 'SEND_TX' | 'SEND_BATCH_TX';
|
|
37
|
+
data: LighterWsSendTx | LighterWsSendBatchTx;
|
|
38
|
+
timestamp: number;
|
|
39
|
+
}
|
|
40
|
+
export interface WsOrderResponse {
|
|
41
|
+
id?: string;
|
|
42
|
+
success: boolean;
|
|
43
|
+
result?: LighterWsTransaction | LighterWsTransaction[];
|
|
44
|
+
error?: string;
|
|
45
|
+
timestamp: number;
|
|
46
|
+
type?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface WsConnectionConfig {
|
|
49
|
+
url: string;
|
|
50
|
+
reconnectInterval?: number;
|
|
51
|
+
maxReconnectAttempts?: number;
|
|
52
|
+
heartbeatInterval?: number;
|
|
53
|
+
timeout?: number;
|
|
54
|
+
}
|
|
55
|
+
export declare class WebSocketOrderClient extends EventEmitter {
|
|
56
|
+
private ws;
|
|
57
|
+
private config;
|
|
58
|
+
private isConnected;
|
|
59
|
+
private reconnectAttempts;
|
|
60
|
+
private pendingRequests;
|
|
61
|
+
private heartbeatTimer;
|
|
62
|
+
private reconnectTimer;
|
|
63
|
+
private messageId;
|
|
64
|
+
constructor(config: WsConnectionConfig);
|
|
65
|
+
connect(): Promise<void>;
|
|
66
|
+
private handleMessage;
|
|
67
|
+
private startHeartbeat;
|
|
68
|
+
private stopHeartbeat;
|
|
69
|
+
private scheduleReconnect;
|
|
70
|
+
sendTransaction(txType: number, txInfo: string): Promise<LighterWsTransaction>;
|
|
71
|
+
sendBatchTransactions(txTypes: number[], txInfos: string[]): Promise<LighterWsTransaction[]>;
|
|
72
|
+
batchOrders(orders: any[]): Promise<any[]>;
|
|
73
|
+
private sendRequest;
|
|
74
|
+
disconnect(): Promise<void>;
|
|
75
|
+
isReady(): boolean;
|
|
76
|
+
getConnectionStats(): {
|
|
77
|
+
isConnected: boolean;
|
|
78
|
+
pendingRequests: number;
|
|
79
|
+
reconnectAttempts: number;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=ws-order-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-order-client.d.ts","sourceRoot":"","sources":["../../src/api/ws-order-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WebSocketOrderClient = void 0;
|
|
7
|
+
// WebSocket-based order client for real-time order placement using Lighter WebSocket API
|
|
8
|
+
const ws_1 = __importDefault(require("ws"));
|
|
9
|
+
const events_1 = require("events");
|
|
10
|
+
const performance_monitor_1 = require("../utils/performance-monitor");
|
|
11
|
+
class WebSocketOrderClient extends events_1.EventEmitter {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
super();
|
|
14
|
+
this.ws = null;
|
|
15
|
+
this.isConnected = false;
|
|
16
|
+
this.reconnectAttempts = 0;
|
|
17
|
+
this.pendingRequests = new Map();
|
|
18
|
+
this.heartbeatTimer = null;
|
|
19
|
+
this.reconnectTimer = null;
|
|
20
|
+
this.messageId = 0;
|
|
21
|
+
this.config = {
|
|
22
|
+
reconnectInterval: 5000,
|
|
23
|
+
maxReconnectAttempts: 10,
|
|
24
|
+
heartbeatInterval: 30000,
|
|
25
|
+
timeout: 10000,
|
|
26
|
+
...config
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async connect() {
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
try {
|
|
32
|
+
// Use the official Lighter WebSocket endpoint
|
|
33
|
+
const wsUrl = this.config.url.replace('https://', 'wss://').replace('http://', 'ws://') + '/stream';
|
|
34
|
+
this.ws = new ws_1.default(wsUrl);
|
|
35
|
+
this.ws.on('open', () => {
|
|
36
|
+
console.log('✅ WebSocket order client connected');
|
|
37
|
+
this.isConnected = true;
|
|
38
|
+
this.reconnectAttempts = 0;
|
|
39
|
+
this.startHeartbeat();
|
|
40
|
+
this.emit('connected');
|
|
41
|
+
resolve();
|
|
42
|
+
});
|
|
43
|
+
this.ws.on('message', (data) => {
|
|
44
|
+
this.handleMessage(data);
|
|
45
|
+
});
|
|
46
|
+
this.ws.on('error', (error) => {
|
|
47
|
+
console.error('❌ WebSocket order client error:', error);
|
|
48
|
+
this.emit('error', error);
|
|
49
|
+
if (!this.isConnected) {
|
|
50
|
+
reject(error);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
this.ws.on('close', (code, reason) => {
|
|
54
|
+
console.log(`🔌 WebSocket order client closed: ${code} ${reason}`);
|
|
55
|
+
this.isConnected = false;
|
|
56
|
+
this.stopHeartbeat();
|
|
57
|
+
this.emit('disconnected', { code, reason });
|
|
58
|
+
this.scheduleReconnect();
|
|
59
|
+
});
|
|
60
|
+
// Connection timeout
|
|
61
|
+
setTimeout(() => {
|
|
62
|
+
if (!this.isConnected) {
|
|
63
|
+
this.ws?.terminate();
|
|
64
|
+
reject(new Error('WebSocket connection timeout'));
|
|
65
|
+
}
|
|
66
|
+
}, this.config.timeout);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
reject(error);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
handleMessage(data) {
|
|
74
|
+
try {
|
|
75
|
+
const response = JSON.parse(data.toString());
|
|
76
|
+
// Handle heartbeat response
|
|
77
|
+
if (response.type === 'PONG') {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// Handle order response
|
|
81
|
+
if (response.id) {
|
|
82
|
+
const pending = this.pendingRequests.get(response.id);
|
|
83
|
+
if (pending) {
|
|
84
|
+
clearTimeout(pending.timeout);
|
|
85
|
+
this.pendingRequests.delete(response.id);
|
|
86
|
+
if (response.success) {
|
|
87
|
+
pending.resolve(response.result);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
pending.reject(new Error(response.error || 'Unknown error'));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Emit unhandled responses
|
|
96
|
+
this.emit('response', response);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
console.error('❌ Failed to parse WebSocket message:', error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
startHeartbeat() {
|
|
104
|
+
this.heartbeatTimer = setInterval(() => {
|
|
105
|
+
if (this.isConnected && this.ws?.readyState === ws_1.default.OPEN) {
|
|
106
|
+
this.ws.send(JSON.stringify({ type: 'PING', timestamp: Date.now() }));
|
|
107
|
+
}
|
|
108
|
+
}, this.config.heartbeatInterval);
|
|
109
|
+
}
|
|
110
|
+
stopHeartbeat() {
|
|
111
|
+
if (this.heartbeatTimer) {
|
|
112
|
+
clearInterval(this.heartbeatTimer);
|
|
113
|
+
this.heartbeatTimer = null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
scheduleReconnect() {
|
|
117
|
+
if (this.reconnectAttempts >= this.config.maxReconnectAttempts) {
|
|
118
|
+
console.error('❌ Max reconnection attempts reached');
|
|
119
|
+
this.emit('maxReconnectAttemptsReached');
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.reconnectAttempts++;
|
|
123
|
+
console.log(`🔄 Scheduling reconnect attempt ${this.reconnectAttempts} in ${this.config.reconnectInterval}ms`);
|
|
124
|
+
this.reconnectTimer = setTimeout(() => {
|
|
125
|
+
this.connect().catch(console.error);
|
|
126
|
+
}, this.config.reconnectInterval);
|
|
127
|
+
}
|
|
128
|
+
async sendTransaction(txType, txInfo) {
|
|
129
|
+
if (!this.isConnected || !this.ws || this.ws.readyState !== ws_1.default.OPEN) {
|
|
130
|
+
throw new Error('WebSocket not connected');
|
|
131
|
+
}
|
|
132
|
+
const endTimer = performance_monitor_1.performanceMonitor.startTimer('ws_send_tx', {
|
|
133
|
+
txType: txType.toString()
|
|
134
|
+
});
|
|
135
|
+
try {
|
|
136
|
+
const requestId = `tx_${Date.now()}_${++this.messageId}`;
|
|
137
|
+
const request = {
|
|
138
|
+
id: requestId,
|
|
139
|
+
type: 'SEND_TX',
|
|
140
|
+
data: {
|
|
141
|
+
type: 'jsonapi/sendtx',
|
|
142
|
+
data: {
|
|
143
|
+
tx_type: txType,
|
|
144
|
+
tx_info: txInfo
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
timestamp: Date.now()
|
|
148
|
+
};
|
|
149
|
+
const result = await this.sendRequest(request);
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
endTimer();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async sendBatchTransactions(txTypes, txInfos) {
|
|
157
|
+
if (!this.isConnected || !this.ws || this.ws.readyState !== ws_1.default.OPEN) {
|
|
158
|
+
throw new Error('WebSocket not connected');
|
|
159
|
+
}
|
|
160
|
+
if (txTypes.length !== txInfos.length) {
|
|
161
|
+
throw new Error('txTypes and txInfos arrays must have the same length');
|
|
162
|
+
}
|
|
163
|
+
if (txTypes.length > 50) {
|
|
164
|
+
throw new Error('Batch size cannot exceed 50 transactions');
|
|
165
|
+
}
|
|
166
|
+
const endTimer = performance_monitor_1.performanceMonitor.startTimer('ws_send_batch_tx', {
|
|
167
|
+
batchSize: txTypes.length.toString()
|
|
168
|
+
});
|
|
169
|
+
try {
|
|
170
|
+
const requestId = `batch_${Date.now()}_${++this.messageId}`;
|
|
171
|
+
const request = {
|
|
172
|
+
id: requestId,
|
|
173
|
+
type: 'SEND_BATCH_TX',
|
|
174
|
+
data: {
|
|
175
|
+
type: 'jsonapi/sendtxbatch',
|
|
176
|
+
data: {
|
|
177
|
+
tx_types: txTypes,
|
|
178
|
+
tx_infos: txInfos
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
timestamp: Date.now()
|
|
182
|
+
};
|
|
183
|
+
const result = await this.sendRequest(request);
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
endTimer();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async batchOrders(orders) {
|
|
191
|
+
if (!this.isConnected || !this.ws || this.ws.readyState !== ws_1.default.OPEN) {
|
|
192
|
+
throw new Error('WebSocket not connected');
|
|
193
|
+
}
|
|
194
|
+
const endTimer = performance_monitor_1.performanceMonitor.startTimer('ws_batch_orders', {
|
|
195
|
+
count: orders.length.toString()
|
|
196
|
+
});
|
|
197
|
+
try {
|
|
198
|
+
const requestId = `batch_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
199
|
+
const request = {
|
|
200
|
+
id: requestId,
|
|
201
|
+
type: 'SEND_BATCH_TX',
|
|
202
|
+
data: {
|
|
203
|
+
type: 'jsonapi/sendtxbatch',
|
|
204
|
+
data: {
|
|
205
|
+
tx_types: orders.map(() => 14), // TX_TYPE_CREATE_ORDER for all
|
|
206
|
+
tx_infos: orders // Assuming orders are already signed tx_infos
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
timestamp: Date.now()
|
|
210
|
+
};
|
|
211
|
+
const result = await this.sendRequest(request);
|
|
212
|
+
return result;
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
endTimer();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
sendRequest(request) {
|
|
219
|
+
return new Promise((resolve, reject) => {
|
|
220
|
+
// Set up timeout
|
|
221
|
+
const timeout = setTimeout(() => {
|
|
222
|
+
this.pendingRequests.delete(request.id);
|
|
223
|
+
reject(new Error(`Request timeout: ${request.id}`));
|
|
224
|
+
}, this.config.timeout);
|
|
225
|
+
// Store pending request
|
|
226
|
+
this.pendingRequests.set(request.id, {
|
|
227
|
+
resolve,
|
|
228
|
+
reject,
|
|
229
|
+
timeout,
|
|
230
|
+
timestamp: Date.now()
|
|
231
|
+
});
|
|
232
|
+
// Send request
|
|
233
|
+
try {
|
|
234
|
+
this.ws.send(JSON.stringify(request));
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
clearTimeout(timeout);
|
|
238
|
+
this.pendingRequests.delete(request.id);
|
|
239
|
+
reject(error);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
async disconnect() {
|
|
244
|
+
return new Promise((resolve) => {
|
|
245
|
+
if (this.reconnectTimer) {
|
|
246
|
+
clearTimeout(this.reconnectTimer);
|
|
247
|
+
this.reconnectTimer = null;
|
|
248
|
+
}
|
|
249
|
+
this.stopHeartbeat();
|
|
250
|
+
// Reject all pending requests
|
|
251
|
+
for (const [, pending] of this.pendingRequests.entries()) {
|
|
252
|
+
clearTimeout(pending.timeout);
|
|
253
|
+
pending.reject(new Error('WebSocket disconnected'));
|
|
254
|
+
}
|
|
255
|
+
this.pendingRequests.clear();
|
|
256
|
+
if (this.ws) {
|
|
257
|
+
this.ws.on('close', () => {
|
|
258
|
+
this.ws = null;
|
|
259
|
+
this.isConnected = false;
|
|
260
|
+
resolve();
|
|
261
|
+
});
|
|
262
|
+
this.ws.close();
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
resolve();
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
isReady() {
|
|
270
|
+
return this.isConnected && this.ws?.readyState === ws_1.default.OPEN;
|
|
271
|
+
}
|
|
272
|
+
getConnectionStats() {
|
|
273
|
+
return {
|
|
274
|
+
isConnected: this.isConnected,
|
|
275
|
+
pendingRequests: this.pendingRequests.size,
|
|
276
|
+
reconnectAttempts: this.reconnectAttempts
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
exports.WebSocketOrderClient = WebSocketOrderClient;
|
|
281
|
+
//# sourceMappingURL=ws-order-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-order-client.js","sourceRoot":"","sources":["../../src/api/ws-order-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Lighter TypeScript SDK
|
|
3
3
|
*
|
|
4
4
|
* A comprehensive TypeScript SDK for interacting with the Lighter Protocol,
|
|
5
|
-
* a decentralized perpetual exchange built on
|
|
5
|
+
* a decentralized perpetual exchange built on zkProof.
|
|
6
6
|
*/
|
|
7
7
|
export { ApiClient } from './api/api-client';
|
|
8
8
|
export { AccountApi } from './api/account-api';
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Lighter TypeScript SDK
|
|
4
4
|
*
|
|
5
5
|
* A comprehensive TypeScript SDK for interacting with the Lighter Protocol,
|
|
6
|
-
* a decentralized perpetual exchange built on
|
|
6
|
+
* a decentralized perpetual exchange built on zkProof.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.VERSION = exports.DEFAULT_CONFIG = exports.LIGHTER_CONSTANTS = exports.generateRandomSeed = exports.createApiKey = exports.Config = exports.ConfigurationException = exports.ValidationException = exports.ServiceException = exports.TooManyRequestsException = exports.NotFoundException = exports.ForbiddenException = exports.UnauthorizedException = exports.BadRequestException = exports.ApiException = exports.LighterException = exports.WsClient = exports.createNodeWasmSignerClient = exports.NodeWasmSignerClient = exports.createWasmSignerClient = exports.WasmSignerClient = exports.createSignerServerClient = exports.SignerServerClient = exports.SignerClient = exports.CandlestickApi = exports.RootApi = exports.TransactionApi = exports.OrderApi = exports.BlockApi = exports.AccountApi = exports.ApiClient = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer-client.d.ts","sourceRoot":"","sources":["../../src/signer/signer-client.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAqB;IAGnC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,KAAK;IACrC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IACtC,MAAM,CAAC,QAAQ,CAAC,kCAAkC,KAAK;IACvD,MAAM,CAAC,QAAQ,CAAC,uCAAuC,KAAK;IAC5D,MAAM,CAAC,QAAQ,CAAC,gCAAgC,KAAK;IAErD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,WAAM;IAGvC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,KAAI;IAC1C,MAAM,CAAC,QAAQ,CAAC,0BAA0B,KAAI;IAC9C,MAAM,CAAC,QAAQ,CAAC,0BAA0B,MAAK;IAC/C,MAAM,CAAC,QAAQ,CAAC,0BAA0B,MAAK;IAC/C,MAAM,CAAC,QAAQ,CAAC,gBAAgB,MAAK;IACrC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,MAAK;IACrC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,MAAK;IACzC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,MAAK;IACzC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,MAAK;IAC9C,MAAM,CAAC,QAAQ,CAAC,oBAAoB,MAAK;IACzC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,MAAK;IACxC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,MAAK;IAGxC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,KAAI;IACxC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,KAAI;IAC9C,MAAM,CAAC,QAAQ,CAAC,sBAAsB,KAAI;IAC1C,MAAM,CAAC,QAAQ,CAAC,4BAA4B,KAAI;IAChD,MAAM,CAAC,QAAQ,CAAC,eAAe,KAAI;IAGnC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,KAAI;IAEjD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAI;IACrC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,MAAK;IAChD,MAAM,CAAC,QAAQ,CAAC,kBAAkB,KAAI;IACtC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,MAAK;IAC/C,MAAM,CAAC,QAAQ,CAAC,MAAM,MAAK;gBAGf,MAAM,EAAE,YAAY;IAahC,WAAW,IAAI,MAAM,GAAG,IAAI;IActB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"signer-client.d.ts","sourceRoot":"","sources":["../../src/signer/signer-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,7 +55,9 @@ class SignerClient {
|
|
|
55
55
|
orderTx.OrderExpiry = orderExpiry;
|
|
56
56
|
orderTx.ExpiredAt = orderExpiry;
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
if (process.env['NODE_ENV'] === 'development') {
|
|
59
|
+
console.log('Order transaction structure:', JSON.stringify(orderTx, null, 2));
|
|
60
|
+
}
|
|
59
61
|
// Sign the transaction
|
|
60
62
|
const signature = await this.signTransaction(orderTx);
|
|
61
63
|
// Create the final transaction info with signature
|
|
@@ -65,7 +67,7 @@ class SignerClient {
|
|
|
65
67
|
};
|
|
66
68
|
// Send transaction using the correct API
|
|
67
69
|
const txHash = await this.transactionApi.sendTx(SignerClient.TX_TYPE_CREATE_ORDER, JSON.stringify(txInfo));
|
|
68
|
-
return [orderTx, txHash.hash, null];
|
|
70
|
+
return [orderTx, txHash.hash || '', null];
|
|
69
71
|
}
|
|
70
72
|
catch (error) {
|
|
71
73
|
return [null, '', error instanceof Error ? error.message : 'Unknown error'];
|
|
@@ -126,7 +128,7 @@ class SignerClient {
|
|
|
126
128
|
};
|
|
127
129
|
// Send transaction using the correct API
|
|
128
130
|
const txHash = await this.transactionApi.sendTx(SignerClient.TX_TYPE_CANCEL_ORDER, JSON.stringify(txInfo));
|
|
129
|
-
return [cancelTx, txHash.hash, null];
|
|
131
|
+
return [cancelTx, txHash.hash || '', null];
|
|
130
132
|
}
|
|
131
133
|
catch (error) {
|
|
132
134
|
return [null, '', error instanceof Error ? error.message : 'Unknown error'];
|