lighter-ts-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +440 -0
- package/dist/api/account-api.d.ts +89 -0
- package/dist/api/account-api.d.ts.map +1 -0
- package/dist/api/account-api.js +61 -0
- package/dist/api/account-api.js.map +1 -0
- package/dist/api/api-client.d.ts +23 -0
- package/dist/api/api-client.d.ts.map +1 -0
- package/dist/api/api-client.js +129 -0
- package/dist/api/api-client.js.map +1 -0
- package/dist/api/block-api.d.ts +24 -0
- package/dist/api/block-api.d.ts.map +1 -0
- package/dist/api/block-api.js +22 -0
- package/dist/api/block-api.js.map +1 -0
- package/dist/api/candlestick-api.d.ts +27 -0
- package/dist/api/candlestick-api.d.ts.map +1 -0
- package/dist/api/candlestick-api.js +18 -0
- package/dist/api/candlestick-api.js.map +1 -0
- package/dist/api/order-api.d.ts +76 -0
- package/dist/api/order-api.d.ts.map +1 -0
- package/dist/api/order-api.js +102 -0
- package/dist/api/order-api.js.map +1 -0
- package/dist/api/root-api.d.ts +8 -0
- package/dist/api/root-api.d.ts.map +1 -0
- package/dist/api/root-api.js +14 -0
- package/dist/api/root-api.js.map +1 -0
- package/dist/api/transaction-api.d.ts +58 -0
- package/dist/api/transaction-api.d.ts.map +1 -0
- package/dist/api/transaction-api.js +141 -0
- package/dist/api/transaction-api.js.map +1 -0
- package/dist/api/ws-client.d.ts +21 -0
- package/dist/api/ws-client.d.ts.map +1 -0
- package/dist/api/ws-client.js +139 -0
- package/dist/api/ws-client.js.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +99 -0
- package/dist/index.js.map +1 -0
- package/dist/signer/signer-client.d.ts +79 -0
- package/dist/signer/signer-client.d.ts.map +1 -0
- package/dist/signer/signer-client.js +213 -0
- package/dist/signer/signer-client.js.map +1 -0
- package/dist/signer/wasm-signer-client.d.ts +129 -0
- package/dist/signer/wasm-signer-client.d.ts.map +1 -0
- package/dist/signer/wasm-signer-client.js +607 -0
- package/dist/signer/wasm-signer-client.js.map +1 -0
- package/dist/types/index.d.ts +130 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/api-key-utils.d.ts +7 -0
- package/dist/utils/api-key-utils.d.ts.map +1 -0
- package/dist/utils/api-key-utils.js +31 -0
- package/dist/utils/api-key-utils.js.map +1 -0
- package/dist/utils/configuration.d.ts +19 -0
- package/dist/utils/configuration.d.ts.map +1 -0
- package/dist/utils/configuration.js +55 -0
- package/dist/utils/configuration.js.map +1 -0
- package/dist/utils/exceptions.d.ts +33 -0
- package/dist/utils/exceptions.d.ts.map +1 -0
- package/dist/utils/exceptions.js +76 -0
- package/dist/utils/exceptions.js.map +1 -0
- package/dist/utils/node-wasm-signer.d.ts +126 -0
- package/dist/utils/node-wasm-signer.d.ts.map +1 -0
- package/dist/utils/node-wasm-signer.js +286 -0
- package/dist/utils/node-wasm-signer.js.map +1 -0
- package/dist/utils/signer-server.d.ts +18 -0
- package/dist/utils/signer-server.d.ts.map +1 -0
- package/dist/utils/signer-server.js +79 -0
- package/dist/utils/signer-server.js.map +1 -0
- package/dist/utils/signer.d.ts +15 -0
- package/dist/utils/signer.d.ts.map +1 -0
- package/dist/utils/signer.js +68 -0
- package/dist/utils/signer.js.map +1 -0
- package/dist/utils/wasm-signer.d.ts +130 -0
- package/dist/utils/wasm-signer.d.ts.map +1 -0
- package/dist/utils/wasm-signer.js +178 -0
- package/dist/utils/wasm-signer.js.map +1 -0
- package/docs/API.md +195 -0
- package/docs/AccountApi.md +220 -0
- package/docs/GettingStarted.md +261 -0
- package/docs/OrderApi.md +199 -0
- package/docs/SignerClient.md +326 -0
- package/docs/TransactionApi.md +312 -0
- package/docs/WsClient.md +275 -0
- package/docs/types/Account.md +67 -0
- package/docs/types/ApiKeyPair.md +33 -0
- package/docs/types/CreateOrderParams.md +47 -0
- package/docs/types/MarketOrderParams.md +36 -0
- package/docs/types/SignerConfig.md +40 -0
- package/docs/types/WasmSignerConfig.md +30 -0
- package/examples/README.md +171 -0
- package/examples/account_info.ts +12 -0
- package/examples/create_cancel_order.ts +74 -0
- package/examples/create_market_order.ts +42 -0
- package/examples/create_market_order_max_slippage.ts +43 -0
- package/examples/create_sl_tp.ts +61 -0
- package/examples/create_with_multiple_keys.ts +58 -0
- package/examples/get_info.ts +58 -0
- package/examples/send_tx_batch.ts +87 -0
- package/examples/system_setup.ts +96 -0
- package/examples/transfer_update_leverage.ts +53 -0
- package/examples/ws.ts +24 -0
- package/examples/ws_async.ts +39 -0
- package/examples/ws_send_batch_tx.ts +113 -0
- package/examples/ws_send_tx.ts +94 -0
- package/package.json +71 -0
- package/wasm/lighter-signer.wasm +0 -0
- package/wasm/wasm_exec.js +402 -0
- package/wasm/wasm_exec_nodejs.js +402 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionApi = void 0;
|
|
4
|
+
class TransactionApi {
|
|
5
|
+
constructor(client) {
|
|
6
|
+
this.client = client;
|
|
7
|
+
}
|
|
8
|
+
async getBlock(params) {
|
|
9
|
+
const response = await this.client.get('/api/v1/block', {
|
|
10
|
+
by: params.by,
|
|
11
|
+
value: params.value,
|
|
12
|
+
});
|
|
13
|
+
return response.data;
|
|
14
|
+
}
|
|
15
|
+
async getBlocks(params) {
|
|
16
|
+
const response = await this.client.get('/api/v1/blocks', params);
|
|
17
|
+
return response.data;
|
|
18
|
+
}
|
|
19
|
+
async getCurrentHeight() {
|
|
20
|
+
const response = await this.client.get('/api/v1/currentHeight');
|
|
21
|
+
return response.data;
|
|
22
|
+
}
|
|
23
|
+
async getTransaction(params) {
|
|
24
|
+
const response = await this.client.get('/api/v1/tx', {
|
|
25
|
+
by: params.by,
|
|
26
|
+
value: params.value,
|
|
27
|
+
});
|
|
28
|
+
return response.data;
|
|
29
|
+
}
|
|
30
|
+
async getTransactions(params) {
|
|
31
|
+
const response = await this.client.get('/api/v1/txs', params);
|
|
32
|
+
return response.data;
|
|
33
|
+
}
|
|
34
|
+
async getBlockTransactions(params) {
|
|
35
|
+
const { by, value, ...paginationParams } = params;
|
|
36
|
+
const response = await this.client.get('/api/v1/blockTxs', {
|
|
37
|
+
by,
|
|
38
|
+
value,
|
|
39
|
+
...paginationParams,
|
|
40
|
+
});
|
|
41
|
+
return response.data;
|
|
42
|
+
}
|
|
43
|
+
async getAccountTransactions(accountIndex, params) {
|
|
44
|
+
const response = await this.client.get('/api/v1/accountTxs', {
|
|
45
|
+
account_index: accountIndex,
|
|
46
|
+
...params,
|
|
47
|
+
});
|
|
48
|
+
return response.data;
|
|
49
|
+
}
|
|
50
|
+
async getAccountPendingTransactions(accountIndex, params) {
|
|
51
|
+
const response = await this.client.get('/api/v1/accountPendingTxs', {
|
|
52
|
+
account_index: accountIndex,
|
|
53
|
+
...params,
|
|
54
|
+
});
|
|
55
|
+
return response.data;
|
|
56
|
+
}
|
|
57
|
+
async getPendingTransactions(params) {
|
|
58
|
+
const response = await this.client.get('/api/v1/pendingTxs', params);
|
|
59
|
+
return response.data;
|
|
60
|
+
}
|
|
61
|
+
async getNextNonce(accountIndex, apiKeyIndex) {
|
|
62
|
+
const response = await this.client.get('/api/v1/nextNonce', {
|
|
63
|
+
account_index: accountIndex,
|
|
64
|
+
api_key_index: apiKeyIndex,
|
|
65
|
+
});
|
|
66
|
+
return response.data;
|
|
67
|
+
}
|
|
68
|
+
async sendTransaction(params) {
|
|
69
|
+
const response = await this.client.post('/api/v1/sendTx', {
|
|
70
|
+
account_index: params.account_index,
|
|
71
|
+
api_key_index: params.api_key_index,
|
|
72
|
+
transaction: params.transaction,
|
|
73
|
+
});
|
|
74
|
+
return response.data;
|
|
75
|
+
}
|
|
76
|
+
async sendTx(txType, txInfo) {
|
|
77
|
+
// Use x-www-form-urlencoded to match Go client behavior
|
|
78
|
+
const params = new URLSearchParams();
|
|
79
|
+
params.append('tx_type', txType.toString());
|
|
80
|
+
params.append('tx_info', txInfo);
|
|
81
|
+
const response = await this.client.post('/api/v1/sendTx', params, {
|
|
82
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
83
|
+
});
|
|
84
|
+
return response.data;
|
|
85
|
+
}
|
|
86
|
+
// New: multipart with explicit indices, mirroring python usage on some endpoints
|
|
87
|
+
async sendTxWithIndices(txType, txInfo, accountIndex, apiKeyIndex) {
|
|
88
|
+
const params = new URLSearchParams();
|
|
89
|
+
params.append('tx_type', txType.toString());
|
|
90
|
+
params.append('tx_info', txInfo);
|
|
91
|
+
params.append('account_index', accountIndex.toString());
|
|
92
|
+
params.append('api_key_index', apiKeyIndex.toString());
|
|
93
|
+
const response = await this.client.post('/api/v1/sendTx', params, {
|
|
94
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
95
|
+
});
|
|
96
|
+
return response.data;
|
|
97
|
+
}
|
|
98
|
+
// JSON variant
|
|
99
|
+
async sendTxJson(txType, txInfo, accountIndex, apiKeyIndex) {
|
|
100
|
+
const payload = {
|
|
101
|
+
tx_type: txType,
|
|
102
|
+
tx_info: txInfo,
|
|
103
|
+
account_index: accountIndex,
|
|
104
|
+
api_key_index: apiKeyIndex,
|
|
105
|
+
};
|
|
106
|
+
const response = await this.client.post('/api/v1/sendTx', payload, {
|
|
107
|
+
headers: { 'Content-Type': 'application/json' },
|
|
108
|
+
});
|
|
109
|
+
return response.data;
|
|
110
|
+
}
|
|
111
|
+
async sendTransactionBatch(params) {
|
|
112
|
+
const response = await this.client.post('/api/v1/sendTxBatch', {
|
|
113
|
+
account_index: params.account_index,
|
|
114
|
+
api_key_index: params.api_key_index,
|
|
115
|
+
transactions: params.transactions,
|
|
116
|
+
});
|
|
117
|
+
return response.data;
|
|
118
|
+
}
|
|
119
|
+
async getTransactionFromL1TxHash(l1TxHash) {
|
|
120
|
+
const response = await this.client.get('/api/v1/txFromL1TxHash', {
|
|
121
|
+
l1_tx_hash: l1TxHash,
|
|
122
|
+
});
|
|
123
|
+
return response.data;
|
|
124
|
+
}
|
|
125
|
+
async getDepositHistory(accountIndex, params) {
|
|
126
|
+
const response = await this.client.get('/api/v1/deposit/history', {
|
|
127
|
+
account_index: accountIndex,
|
|
128
|
+
...params,
|
|
129
|
+
});
|
|
130
|
+
return response.data;
|
|
131
|
+
}
|
|
132
|
+
async getWithdrawHistory(accountIndex, params) {
|
|
133
|
+
const response = await this.client.get('/api/v1/withdraw/history', {
|
|
134
|
+
account_index: accountIndex,
|
|
135
|
+
...params,
|
|
136
|
+
});
|
|
137
|
+
return response.data;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.TransactionApi = TransactionApi;
|
|
141
|
+
//# sourceMappingURL=transaction-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-api.js","sourceRoot":"","sources":["../../src/api/transaction-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { WebSocketConfig, WebSocketSubscription } from '../types';
|
|
2
|
+
export declare class WsClient {
|
|
3
|
+
private ws;
|
|
4
|
+
private config;
|
|
5
|
+
private reconnectAttempts;
|
|
6
|
+
private reconnectTimer;
|
|
7
|
+
private subscriptions;
|
|
8
|
+
private isConnecting;
|
|
9
|
+
private isConnected;
|
|
10
|
+
constructor(config: WebSocketConfig);
|
|
11
|
+
connect(): Promise<void>;
|
|
12
|
+
disconnect(): void;
|
|
13
|
+
subscribe(subscription: WebSocketSubscription): void;
|
|
14
|
+
unsubscribe(channel: string): void;
|
|
15
|
+
send(message: any): void;
|
|
16
|
+
private attemptReconnect;
|
|
17
|
+
private resubscribeAll;
|
|
18
|
+
isConnectedToWebSocket(): boolean;
|
|
19
|
+
getSubscriptions(): WebSocketSubscription[];
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ws-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../../src/api/ws-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAElE,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,eAAe;IAQ5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkDxB,UAAU,IAAI,IAAI;IAelB,SAAS,CAAC,YAAY,EAAE,qBAAqB,GAAG,IAAI;IAiBpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgBlC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAQ/B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,cAAc;IAOf,sBAAsB,IAAI,OAAO;IAIjC,gBAAgB,IAAI,qBAAqB,EAAE;CAGnD"}
|
|
@@ -0,0 +1,139 @@
|
|
|
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.WsClient = void 0;
|
|
7
|
+
const ws_1 = __importDefault(require("ws"));
|
|
8
|
+
class WsClient {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.ws = null;
|
|
11
|
+
this.reconnectAttempts = 0;
|
|
12
|
+
this.reconnectTimer = null;
|
|
13
|
+
this.subscriptions = new Map();
|
|
14
|
+
this.isConnecting = false;
|
|
15
|
+
this.isConnected = false;
|
|
16
|
+
this.config = {
|
|
17
|
+
reconnectInterval: 5000,
|
|
18
|
+
maxReconnectAttempts: 5,
|
|
19
|
+
...config,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
connect() {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
if (this.isConnecting || this.isConnected) {
|
|
25
|
+
resolve();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.isConnecting = true;
|
|
29
|
+
try {
|
|
30
|
+
this.ws = new ws_1.default(this.config.url);
|
|
31
|
+
this.ws.on('open', () => {
|
|
32
|
+
this.isConnecting = false;
|
|
33
|
+
this.isConnected = true;
|
|
34
|
+
this.reconnectAttempts = 0;
|
|
35
|
+
this.config.onOpen?.();
|
|
36
|
+
// Resubscribe to all channels
|
|
37
|
+
this.resubscribeAll();
|
|
38
|
+
resolve();
|
|
39
|
+
});
|
|
40
|
+
this.ws.on('message', (data) => {
|
|
41
|
+
try {
|
|
42
|
+
const message = JSON.parse(data.toString());
|
|
43
|
+
this.config.onMessage?.(message);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('Failed to parse WebSocket message:', error);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
this.ws.on('error', (error) => {
|
|
50
|
+
this.isConnecting = false;
|
|
51
|
+
this.config.onError?.(error);
|
|
52
|
+
reject(error);
|
|
53
|
+
});
|
|
54
|
+
this.ws.on('close', () => {
|
|
55
|
+
this.isConnected = false;
|
|
56
|
+
this.config.onClose?.();
|
|
57
|
+
this.attemptReconnect();
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
this.isConnecting = false;
|
|
62
|
+
reject(error);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
disconnect() {
|
|
67
|
+
if (this.reconnectTimer) {
|
|
68
|
+
clearTimeout(this.reconnectTimer);
|
|
69
|
+
this.reconnectTimer = null;
|
|
70
|
+
}
|
|
71
|
+
if (this.ws) {
|
|
72
|
+
this.ws.close();
|
|
73
|
+
this.ws = null;
|
|
74
|
+
}
|
|
75
|
+
this.isConnected = false;
|
|
76
|
+
this.isConnecting = false;
|
|
77
|
+
}
|
|
78
|
+
subscribe(subscription) {
|
|
79
|
+
if (!this.isConnected || !this.ws) {
|
|
80
|
+
throw new Error('WebSocket is not connected');
|
|
81
|
+
}
|
|
82
|
+
const message = {
|
|
83
|
+
method: 'subscribe',
|
|
84
|
+
params: {
|
|
85
|
+
channel: subscription.channel,
|
|
86
|
+
...subscription.params,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
this.ws.send(JSON.stringify(message));
|
|
90
|
+
this.subscriptions.set(subscription.channel, subscription);
|
|
91
|
+
}
|
|
92
|
+
unsubscribe(channel) {
|
|
93
|
+
if (!this.isConnected || !this.ws) {
|
|
94
|
+
throw new Error('WebSocket is not connected');
|
|
95
|
+
}
|
|
96
|
+
const message = {
|
|
97
|
+
method: 'unsubscribe',
|
|
98
|
+
params: {
|
|
99
|
+
channel,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
this.ws.send(JSON.stringify(message));
|
|
103
|
+
this.subscriptions.delete(channel);
|
|
104
|
+
}
|
|
105
|
+
send(message) {
|
|
106
|
+
if (!this.isConnected || !this.ws) {
|
|
107
|
+
throw new Error('WebSocket is not connected');
|
|
108
|
+
}
|
|
109
|
+
this.ws.send(JSON.stringify(message));
|
|
110
|
+
}
|
|
111
|
+
attemptReconnect() {
|
|
112
|
+
if (this.reconnectAttempts >= (this.config.maxReconnectAttempts || 5)) {
|
|
113
|
+
console.error('Max reconnection attempts reached');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
this.reconnectAttempts++;
|
|
117
|
+
console.log(`Attempting to reconnect (${this.reconnectAttempts}/${this.config.maxReconnectAttempts})`);
|
|
118
|
+
this.reconnectTimer = setTimeout(() => {
|
|
119
|
+
this.connect().catch((error) => {
|
|
120
|
+
console.error('Reconnection failed:', error);
|
|
121
|
+
this.attemptReconnect();
|
|
122
|
+
});
|
|
123
|
+
}, this.config.reconnectInterval || 5000);
|
|
124
|
+
}
|
|
125
|
+
resubscribeAll() {
|
|
126
|
+
const subscriptions = Array.from(this.subscriptions.values());
|
|
127
|
+
for (const subscription of subscriptions) {
|
|
128
|
+
this.subscribe(subscription);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
isConnectedToWebSocket() {
|
|
132
|
+
return this.isConnected;
|
|
133
|
+
}
|
|
134
|
+
getSubscriptions() {
|
|
135
|
+
return Array.from(this.subscriptions.values());
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.WsClient = WsClient;
|
|
139
|
+
//# sourceMappingURL=ws-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../../src/api/ws-client.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA2B;AAG3B,MAAa,QAAQ;IASnB,YAAY,MAAuB;QAR3B,OAAE,GAAqB,IAAI,CAAC;QAE5B,sBAAiB,GAAG,CAAC,CAAC;QACtB,mBAAc,GAA0B,IAAI,CAAC;QAC7C,kBAAa,GAAuC,IAAI,GAAG,EAAE,CAAC;QAC9D,iBAAY,GAAG,KAAK,CAAC;QACrB,gBAAW,GAAG,KAAK,CAAC;QAG1B,IAAI,CAAC,MAAM,GAAG;YACZ,iBAAiB,EAAE,IAAI;YACvB,oBAAoB,EAAE,CAAC;YACvB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEzC,IAAI,CAAC,EAAG,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;oBACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;oBAEvB,8BAA8B;oBAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAoB,EAAE,EAAE;oBAC9C,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;oBACnC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;oBACpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;oBACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,UAAU;QACf,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEM,SAAS,CAAC,YAAmC;QAClD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE;gBACN,OAAO,EAAE,YAAY,CAAC,OAAO;gBAC7B,GAAG,YAAY,CAAC,MAAM;aACvB;SACF,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAEM,WAAW,CAAC,OAAe;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE;gBACN,OAAO;aACR;SACF,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEM,IAAI,CAAC,OAAY;QACtB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAEvG,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC7B,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,cAAc;QACpB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEM,sBAAsB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,gBAAgB;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;CACF;AA1JD,4BA0JC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lighter TypeScript SDK
|
|
3
|
+
*
|
|
4
|
+
* A comprehensive TypeScript SDK for interacting with the Lighter Protocol,
|
|
5
|
+
* a decentralized perpetual exchange built on zkSync.
|
|
6
|
+
*/
|
|
7
|
+
export { ApiClient } from './api/api-client';
|
|
8
|
+
export { AccountApi } from './api/account-api';
|
|
9
|
+
export { BlockApi } from './api/block-api';
|
|
10
|
+
export { OrderApi } from './api/order-api';
|
|
11
|
+
export { TransactionApi } from './api/transaction-api';
|
|
12
|
+
export { RootApi } from './api/root-api';
|
|
13
|
+
export { CandlestickApi } from './api/candlestick-api';
|
|
14
|
+
export { SignerClient } from './signer/wasm-signer-client';
|
|
15
|
+
export type { SignerConfig } from './signer/wasm-signer-client';
|
|
16
|
+
export { SignerServerClient, createSignerServerClient } from './utils/signer-server';
|
|
17
|
+
export type { SignerServerConfig, SignerServerResponse } from './utils/signer-server';
|
|
18
|
+
export { WasmSignerClient, createWasmSignerClient } from './utils/wasm-signer';
|
|
19
|
+
export { NodeWasmSignerClient, createNodeWasmSignerClient } from './utils/node-wasm-signer';
|
|
20
|
+
export type { WasmSignerConfig, CreateClientParams, CreateOrderParams, CancelOrderParams, CancelAllOrdersParams, TransferParams, UpdateLeverageParams, WasmSignerResponse } from './utils/wasm-signer';
|
|
21
|
+
export { WsClient } from './api/ws-client';
|
|
22
|
+
export { LighterException, ApiException, BadRequestException, UnauthorizedException, ForbiddenException, NotFoundException, TooManyRequestsException, ServiceException, ValidationException, ConfigurationException } from './utils/exceptions';
|
|
23
|
+
export type { Account, AccountPosition, AccountApiKeys, ApiKey, PublicPool, PublicPoolShare, Trade } from './api/account-api';
|
|
24
|
+
export type { OrderBook, OrderBookDetail, OrderBookOrders, Order, ExchangeStats, PriceLevel } from './api/order-api';
|
|
25
|
+
export type { Transaction, Block, NextNonce, TxHash, TxHashes } from './api/transaction-api';
|
|
26
|
+
export type { BlockQuery, BlocksQuery, CurrentHeightResponse } from './api/block-api';
|
|
27
|
+
export type { CandlestickQuery, FundingQuery } from './api/candlestick-api';
|
|
28
|
+
export type { OrderBookParams, TradeParams, TransactionParams, BlockParams, PaginationParams, Configuration, ApiResponse, ApiError, WebSocketConfig, WebSocketSubscription } from './types';
|
|
29
|
+
export { Config } from './utils/configuration';
|
|
30
|
+
export { createApiKey, generateRandomSeed } from './utils/api-key-utils';
|
|
31
|
+
export type { ApiKeyPair } from './utils/api-key-utils';
|
|
32
|
+
export declare const LIGHTER_CONSTANTS: {
|
|
33
|
+
readonly ORDER_TYPE_LIMIT: 0;
|
|
34
|
+
readonly ORDER_TYPE_MARKET: 1;
|
|
35
|
+
readonly ORDER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL: 0;
|
|
36
|
+
readonly ORDER_TIME_IN_FORCE_GOOD_TILL_TIME: 1;
|
|
37
|
+
readonly ORDER_TIME_IN_FORCE_FILL_OR_KILL: 2;
|
|
38
|
+
readonly CANCEL_ALL_TIF_IMMEDIATE: 0;
|
|
39
|
+
readonly CANCEL_ALL_TIF_SCHEDULED: 1;
|
|
40
|
+
readonly CANCEL_ALL_TIF_ABORT: 2;
|
|
41
|
+
readonly CROSS_MARGIN_MODE: 0;
|
|
42
|
+
readonly ISOLATED_MARGIN_MODE: 1;
|
|
43
|
+
readonly TX_TYPE_CREATE_ORDER: 1;
|
|
44
|
+
readonly TX_TYPE_CANCEL_ORDER: 2;
|
|
45
|
+
readonly TX_TYPE_CANCEL_ALL_ORDERS: 3;
|
|
46
|
+
readonly TX_TYPE_TRANSFER: 4;
|
|
47
|
+
readonly TX_TYPE_UPDATE_LEVERAGE: 20;
|
|
48
|
+
readonly NIL_TRIGGER_PRICE: 0;
|
|
49
|
+
readonly DEFAULT_28_DAY_ORDER_EXPIRY: -1;
|
|
50
|
+
readonly DEFAULT_IOC_EXPIRY: 0;
|
|
51
|
+
readonly DEFAULT_10_MIN_AUTH_EXPIRY: -1;
|
|
52
|
+
readonly MINUTE: 60;
|
|
53
|
+
readonly USDC_TICKER_SCALE: 1000000;
|
|
54
|
+
};
|
|
55
|
+
export declare const DEFAULT_CONFIG: {
|
|
56
|
+
readonly MAINNET_URL: "https://mainnet.zklighter.elliot.ai";
|
|
57
|
+
readonly TESTNET_URL: "https://testnet.zklighter.elliot.ai";
|
|
58
|
+
readonly DEFAULT_TIMEOUT: 30000;
|
|
59
|
+
readonly DEFAULT_RETRIES: 3;
|
|
60
|
+
};
|
|
61
|
+
export declare const VERSION = "1.0.0";
|
|
62
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACrF,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGtF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC5F,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,OAAO,EACP,eAAe,EACf,cAAc,EACd,MAAM,EACN,UAAU,EACV,eAAe,EACf,KAAK,EACN,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,KAAK,EACL,aAAa,EACb,UAAU,EACX,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,WAAW,EACX,KAAK,EACL,SAAS,EACT,MAAM,EACN,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,UAAU,EACV,WAAW,EACX,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,QAAQ,EACR,eAAe,EACf,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;CAiCpB,CAAC;AAGX,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAGX,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Lighter TypeScript SDK
|
|
4
|
+
*
|
|
5
|
+
* A comprehensive TypeScript SDK for interacting with the Lighter Protocol,
|
|
6
|
+
* a decentralized perpetual exchange built on zkSync.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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;
|
|
10
|
+
// Core API Classes
|
|
11
|
+
var api_client_1 = require("./api/api-client");
|
|
12
|
+
Object.defineProperty(exports, "ApiClient", { enumerable: true, get: function () { return api_client_1.ApiClient; } });
|
|
13
|
+
var account_api_1 = require("./api/account-api");
|
|
14
|
+
Object.defineProperty(exports, "AccountApi", { enumerable: true, get: function () { return account_api_1.AccountApi; } });
|
|
15
|
+
var block_api_1 = require("./api/block-api");
|
|
16
|
+
Object.defineProperty(exports, "BlockApi", { enumerable: true, get: function () { return block_api_1.BlockApi; } });
|
|
17
|
+
var order_api_1 = require("./api/order-api");
|
|
18
|
+
Object.defineProperty(exports, "OrderApi", { enumerable: true, get: function () { return order_api_1.OrderApi; } });
|
|
19
|
+
var transaction_api_1 = require("./api/transaction-api");
|
|
20
|
+
Object.defineProperty(exports, "TransactionApi", { enumerable: true, get: function () { return transaction_api_1.TransactionApi; } });
|
|
21
|
+
var root_api_1 = require("./api/root-api");
|
|
22
|
+
Object.defineProperty(exports, "RootApi", { enumerable: true, get: function () { return root_api_1.RootApi; } });
|
|
23
|
+
var candlestick_api_1 = require("./api/candlestick-api");
|
|
24
|
+
Object.defineProperty(exports, "CandlestickApi", { enumerable: true, get: function () { return candlestick_api_1.CandlestickApi; } });
|
|
25
|
+
// Signer Client
|
|
26
|
+
var wasm_signer_client_1 = require("./signer/wasm-signer-client");
|
|
27
|
+
Object.defineProperty(exports, "SignerClient", { enumerable: true, get: function () { return wasm_signer_client_1.SignerClient; } });
|
|
28
|
+
// Signer Server Client
|
|
29
|
+
var signer_server_1 = require("./utils/signer-server");
|
|
30
|
+
Object.defineProperty(exports, "SignerServerClient", { enumerable: true, get: function () { return signer_server_1.SignerServerClient; } });
|
|
31
|
+
Object.defineProperty(exports, "createSignerServerClient", { enumerable: true, get: function () { return signer_server_1.createSignerServerClient; } });
|
|
32
|
+
// WASM Signer Classes
|
|
33
|
+
var wasm_signer_1 = require("./utils/wasm-signer");
|
|
34
|
+
Object.defineProperty(exports, "WasmSignerClient", { enumerable: true, get: function () { return wasm_signer_1.WasmSignerClient; } });
|
|
35
|
+
Object.defineProperty(exports, "createWasmSignerClient", { enumerable: true, get: function () { return wasm_signer_1.createWasmSignerClient; } });
|
|
36
|
+
var node_wasm_signer_1 = require("./utils/node-wasm-signer");
|
|
37
|
+
Object.defineProperty(exports, "NodeWasmSignerClient", { enumerable: true, get: function () { return node_wasm_signer_1.NodeWasmSignerClient; } });
|
|
38
|
+
Object.defineProperty(exports, "createNodeWasmSignerClient", { enumerable: true, get: function () { return node_wasm_signer_1.createNodeWasmSignerClient; } });
|
|
39
|
+
// WebSocket Client
|
|
40
|
+
var ws_client_1 = require("./api/ws-client");
|
|
41
|
+
Object.defineProperty(exports, "WsClient", { enumerable: true, get: function () { return ws_client_1.WsClient; } });
|
|
42
|
+
// Exception Classes
|
|
43
|
+
var exceptions_1 = require("./utils/exceptions");
|
|
44
|
+
Object.defineProperty(exports, "LighterException", { enumerable: true, get: function () { return exceptions_1.LighterException; } });
|
|
45
|
+
Object.defineProperty(exports, "ApiException", { enumerable: true, get: function () { return exceptions_1.ApiException; } });
|
|
46
|
+
Object.defineProperty(exports, "BadRequestException", { enumerable: true, get: function () { return exceptions_1.BadRequestException; } });
|
|
47
|
+
Object.defineProperty(exports, "UnauthorizedException", { enumerable: true, get: function () { return exceptions_1.UnauthorizedException; } });
|
|
48
|
+
Object.defineProperty(exports, "ForbiddenException", { enumerable: true, get: function () { return exceptions_1.ForbiddenException; } });
|
|
49
|
+
Object.defineProperty(exports, "NotFoundException", { enumerable: true, get: function () { return exceptions_1.NotFoundException; } });
|
|
50
|
+
Object.defineProperty(exports, "TooManyRequestsException", { enumerable: true, get: function () { return exceptions_1.TooManyRequestsException; } });
|
|
51
|
+
Object.defineProperty(exports, "ServiceException", { enumerable: true, get: function () { return exceptions_1.ServiceException; } });
|
|
52
|
+
Object.defineProperty(exports, "ValidationException", { enumerable: true, get: function () { return exceptions_1.ValidationException; } });
|
|
53
|
+
Object.defineProperty(exports, "ConfigurationException", { enumerable: true, get: function () { return exceptions_1.ConfigurationException; } });
|
|
54
|
+
// Utility Classes
|
|
55
|
+
var configuration_1 = require("./utils/configuration");
|
|
56
|
+
Object.defineProperty(exports, "Config", { enumerable: true, get: function () { return configuration_1.Config; } });
|
|
57
|
+
var api_key_utils_1 = require("./utils/api-key-utils");
|
|
58
|
+
Object.defineProperty(exports, "createApiKey", { enumerable: true, get: function () { return api_key_utils_1.createApiKey; } });
|
|
59
|
+
Object.defineProperty(exports, "generateRandomSeed", { enumerable: true, get: function () { return api_key_utils_1.generateRandomSeed; } });
|
|
60
|
+
// Constants
|
|
61
|
+
exports.LIGHTER_CONSTANTS = {
|
|
62
|
+
// Order Types
|
|
63
|
+
ORDER_TYPE_LIMIT: 0,
|
|
64
|
+
ORDER_TYPE_MARKET: 1,
|
|
65
|
+
// Time in Force
|
|
66
|
+
ORDER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL: 0,
|
|
67
|
+
ORDER_TIME_IN_FORCE_GOOD_TILL_TIME: 1,
|
|
68
|
+
ORDER_TIME_IN_FORCE_FILL_OR_KILL: 2,
|
|
69
|
+
// Cancel All Orders Time in Force
|
|
70
|
+
CANCEL_ALL_TIF_IMMEDIATE: 0,
|
|
71
|
+
CANCEL_ALL_TIF_SCHEDULED: 1,
|
|
72
|
+
CANCEL_ALL_TIF_ABORT: 2,
|
|
73
|
+
// Margin Modes
|
|
74
|
+
CROSS_MARGIN_MODE: 0,
|
|
75
|
+
ISOLATED_MARGIN_MODE: 1,
|
|
76
|
+
// Transaction Types
|
|
77
|
+
TX_TYPE_CREATE_ORDER: 1,
|
|
78
|
+
TX_TYPE_CANCEL_ORDER: 2,
|
|
79
|
+
TX_TYPE_CANCEL_ALL_ORDERS: 3,
|
|
80
|
+
TX_TYPE_TRANSFER: 4,
|
|
81
|
+
TX_TYPE_UPDATE_LEVERAGE: 20,
|
|
82
|
+
// Other Constants
|
|
83
|
+
NIL_TRIGGER_PRICE: 0,
|
|
84
|
+
DEFAULT_28_DAY_ORDER_EXPIRY: -1,
|
|
85
|
+
DEFAULT_IOC_EXPIRY: 0,
|
|
86
|
+
DEFAULT_10_MIN_AUTH_EXPIRY: -1,
|
|
87
|
+
MINUTE: 60,
|
|
88
|
+
USDC_TICKER_SCALE: 1e6
|
|
89
|
+
};
|
|
90
|
+
// Default Configuration
|
|
91
|
+
exports.DEFAULT_CONFIG = {
|
|
92
|
+
MAINNET_URL: 'https://mainnet.zklighter.elliot.ai',
|
|
93
|
+
TESTNET_URL: 'https://testnet.zklighter.elliot.ai',
|
|
94
|
+
DEFAULT_TIMEOUT: 30000,
|
|
95
|
+
DEFAULT_RETRIES: 3
|
|
96
|
+
};
|
|
97
|
+
// Version
|
|
98
|
+
exports.VERSION = '1.0.0';
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mBAAmB;AACnB,+CAA6C;AAApC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,qGAAA,QAAQ,OAAA;AACjB,6CAA2C;AAAlC,qGAAA,QAAQ,OAAA;AACjB,yDAAuD;AAA9C,iHAAA,cAAc,OAAA;AACvB,2CAAyC;AAAhC,mGAAA,OAAO,OAAA;AAChB,yDAAuD;AAA9C,iHAAA,cAAc,OAAA;AAEvB,gBAAgB;AAChB,kEAA2D;AAAlD,kHAAA,YAAY,OAAA;AAGrB,uBAAuB;AACvB,uDAAqF;AAA5E,mHAAA,kBAAkB,OAAA;AAAE,yHAAA,wBAAwB,OAAA;AAGrD,sBAAsB;AACtB,mDAA+E;AAAtE,+GAAA,gBAAgB,OAAA;AAAE,qHAAA,sBAAsB,OAAA;AACjD,6DAA4F;AAAnF,wHAAA,oBAAoB,OAAA;AAAE,8HAAA,0BAA0B,OAAA;AAYzD,mBAAmB;AACnB,6CAA2C;AAAlC,qGAAA,QAAQ,OAAA;AAEjB,oBAAoB;AACpB,iDAW4B;AAV1B,8GAAA,gBAAgB,OAAA;AAChB,0GAAA,YAAY,OAAA;AACZ,iHAAA,mBAAmB,OAAA;AACnB,mHAAA,qBAAqB,OAAA;AACrB,gHAAA,kBAAkB,OAAA;AAClB,+GAAA,iBAAiB,OAAA;AACjB,sHAAA,wBAAwB,OAAA;AACxB,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,oHAAA,sBAAsB,OAAA;AA2DxB,kBAAkB;AAClB,uDAA+C;AAAtC,uGAAA,MAAM,OAAA;AACf,uDAAyE;AAAhE,6GAAA,YAAY,OAAA;AAAE,mHAAA,kBAAkB,OAAA;AAGzC,YAAY;AACC,QAAA,iBAAiB,GAAG;IAC/B,cAAc;IACd,gBAAgB,EAAE,CAAC;IACnB,iBAAiB,EAAE,CAAC;IAEpB,gBAAgB;IAChB,uCAAuC,EAAE,CAAC;IAC1C,kCAAkC,EAAE,CAAC;IACrC,gCAAgC,EAAE,CAAC;IAEnC,kCAAkC;IAClC,wBAAwB,EAAE,CAAC;IAC3B,wBAAwB,EAAE,CAAC;IAC3B,oBAAoB,EAAE,CAAC;IAEvB,eAAe;IACf,iBAAiB,EAAE,CAAC;IACpB,oBAAoB,EAAE,CAAC;IAEvB,oBAAoB;IACpB,oBAAoB,EAAE,CAAC;IACvB,oBAAoB,EAAE,CAAC;IACvB,yBAAyB,EAAE,CAAC;IAC5B,gBAAgB,EAAE,CAAC;IACnB,uBAAuB,EAAE,EAAE;IAE3B,kBAAkB;IAClB,iBAAiB,EAAE,CAAC;IACpB,2BAA2B,EAAE,CAAC,CAAC;IAC/B,kBAAkB,EAAE,CAAC;IACrB,0BAA0B,EAAE,CAAC,CAAC;IAC9B,MAAM,EAAE,EAAE;IACV,iBAAiB,EAAE,GAAG;CACd,CAAC;AAEX,wBAAwB;AACX,QAAA,cAAc,GAAG;IAC5B,WAAW,EAAE,qCAAqC;IAClD,WAAW,EAAE,qCAAqC;IAClD,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,CAAC;CACV,CAAC;AAEX,UAAU;AACG,QAAA,OAAO,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface SignerConfig {
|
|
2
|
+
url: string;
|
|
3
|
+
privateKey: string;
|
|
4
|
+
accountIndex: number;
|
|
5
|
+
apiKeyIndex: number;
|
|
6
|
+
signerServerUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CreateOrderParams {
|
|
9
|
+
marketIndex: number;
|
|
10
|
+
clientOrderIndex: number;
|
|
11
|
+
baseAmount: number;
|
|
12
|
+
price: number;
|
|
13
|
+
isAsk: boolean;
|
|
14
|
+
orderType: number;
|
|
15
|
+
timeInForce: number;
|
|
16
|
+
reduceOnly: boolean;
|
|
17
|
+
triggerPrice: number;
|
|
18
|
+
orderExpiry?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface CreateMarketOrderParams {
|
|
21
|
+
marketIndex: number;
|
|
22
|
+
clientOrderIndex: number;
|
|
23
|
+
baseAmount: number;
|
|
24
|
+
avgExecutionPrice: number;
|
|
25
|
+
isAsk: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface CancelOrderParams {
|
|
28
|
+
marketIndex: number;
|
|
29
|
+
orderIndex: number;
|
|
30
|
+
}
|
|
31
|
+
export interface ChangeApiKeyParams {
|
|
32
|
+
ethPrivateKey: string;
|
|
33
|
+
newPubkey: string;
|
|
34
|
+
}
|
|
35
|
+
export declare class SignerClient {
|
|
36
|
+
private config;
|
|
37
|
+
private apiClient;
|
|
38
|
+
private transactionApi;
|
|
39
|
+
private wallet;
|
|
40
|
+
static readonly ORDER_TYPE_LIMIT = 0;
|
|
41
|
+
static readonly ORDER_TYPE_MARKET = 1;
|
|
42
|
+
static readonly ORDER_TIME_IN_FORCE_GOOD_TILL_TIME = 1;
|
|
43
|
+
static readonly ORDER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL = 0;
|
|
44
|
+
static readonly ORDER_TIME_IN_FORCE_FILL_OR_KILL = 2;
|
|
45
|
+
static readonly USDC_TICKER_SCALE = 1000000;
|
|
46
|
+
static readonly TX_TYPE_CHANGE_PUB_KEY = 8;
|
|
47
|
+
static readonly TX_TYPE_CREATE_SUB_ACCOUNT = 9;
|
|
48
|
+
static readonly TX_TYPE_CREATE_PUBLIC_POOL = 10;
|
|
49
|
+
static readonly TX_TYPE_UPDATE_PUBLIC_POOL = 11;
|
|
50
|
+
static readonly TX_TYPE_TRANSFER = 12;
|
|
51
|
+
static readonly TX_TYPE_WITHDRAW = 13;
|
|
52
|
+
static readonly TX_TYPE_CREATE_ORDER = 14;
|
|
53
|
+
static readonly TX_TYPE_CANCEL_ORDER = 15;
|
|
54
|
+
static readonly TX_TYPE_CANCEL_ALL_ORDERS = 16;
|
|
55
|
+
static readonly TX_TYPE_MODIFY_ORDER = 17;
|
|
56
|
+
static readonly TX_TYPE_MINT_SHARES = 18;
|
|
57
|
+
static readonly TX_TYPE_BURN_SHARES = 19;
|
|
58
|
+
static readonly ORDER_TYPE_STOP_LOSS = 2;
|
|
59
|
+
static readonly ORDER_TYPE_STOP_LOSS_LIMIT = 3;
|
|
60
|
+
static readonly ORDER_TYPE_TAKE_PROFIT = 4;
|
|
61
|
+
static readonly ORDER_TYPE_TAKE_PROFIT_LIMIT = 5;
|
|
62
|
+
static readonly ORDER_TYPE_TWAP = 6;
|
|
63
|
+
static readonly ORDER_TIME_IN_FORCE_POST_ONLY = 2;
|
|
64
|
+
static readonly NIL_TRIGGER_PRICE = 0;
|
|
65
|
+
static readonly DEFAULT_28_DAY_ORDER_EXPIRY = -1;
|
|
66
|
+
static readonly DEFAULT_IOC_EXPIRY = 0;
|
|
67
|
+
static readonly DEFAULT_10_MIN_AUTH_EXPIRY = -1;
|
|
68
|
+
static readonly MINUTE = 60;
|
|
69
|
+
constructor(config: SignerConfig);
|
|
70
|
+
checkClient(): string | null;
|
|
71
|
+
createOrder(params: CreateOrderParams): Promise<[any, string, string | null]>;
|
|
72
|
+
createMarketOrder(params: CreateMarketOrderParams): Promise<any>;
|
|
73
|
+
cancelOrder(params: CancelOrderParams): Promise<[any, string, string | null]>;
|
|
74
|
+
changeApiKey(params: ChangeApiKeyParams): Promise<[any, string | null]>;
|
|
75
|
+
createAuthTokenWithExpiry(expiry: number): Promise<[string, string | null]>;
|
|
76
|
+
private signTransaction;
|
|
77
|
+
close(): Promise<void>;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=signer-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer-client.d.ts","sourceRoot":"","sources":["../../src/signer/signer-client.ts"],"names":[],"mappings":"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"}
|