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.
Files changed (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +440 -0
  3. package/dist/api/account-api.d.ts +89 -0
  4. package/dist/api/account-api.d.ts.map +1 -0
  5. package/dist/api/account-api.js +61 -0
  6. package/dist/api/account-api.js.map +1 -0
  7. package/dist/api/api-client.d.ts +23 -0
  8. package/dist/api/api-client.d.ts.map +1 -0
  9. package/dist/api/api-client.js +129 -0
  10. package/dist/api/api-client.js.map +1 -0
  11. package/dist/api/block-api.d.ts +24 -0
  12. package/dist/api/block-api.d.ts.map +1 -0
  13. package/dist/api/block-api.js +22 -0
  14. package/dist/api/block-api.js.map +1 -0
  15. package/dist/api/candlestick-api.d.ts +27 -0
  16. package/dist/api/candlestick-api.d.ts.map +1 -0
  17. package/dist/api/candlestick-api.js +18 -0
  18. package/dist/api/candlestick-api.js.map +1 -0
  19. package/dist/api/order-api.d.ts +76 -0
  20. package/dist/api/order-api.d.ts.map +1 -0
  21. package/dist/api/order-api.js +102 -0
  22. package/dist/api/order-api.js.map +1 -0
  23. package/dist/api/root-api.d.ts +8 -0
  24. package/dist/api/root-api.d.ts.map +1 -0
  25. package/dist/api/root-api.js +14 -0
  26. package/dist/api/root-api.js.map +1 -0
  27. package/dist/api/transaction-api.d.ts +58 -0
  28. package/dist/api/transaction-api.d.ts.map +1 -0
  29. package/dist/api/transaction-api.js +141 -0
  30. package/dist/api/transaction-api.js.map +1 -0
  31. package/dist/api/ws-client.d.ts +21 -0
  32. package/dist/api/ws-client.d.ts.map +1 -0
  33. package/dist/api/ws-client.js +139 -0
  34. package/dist/api/ws-client.js.map +1 -0
  35. package/dist/index.d.ts +62 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +99 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/signer/signer-client.d.ts +79 -0
  40. package/dist/signer/signer-client.d.ts.map +1 -0
  41. package/dist/signer/signer-client.js +213 -0
  42. package/dist/signer/signer-client.js.map +1 -0
  43. package/dist/signer/wasm-signer-client.d.ts +129 -0
  44. package/dist/signer/wasm-signer-client.d.ts.map +1 -0
  45. package/dist/signer/wasm-signer-client.js +607 -0
  46. package/dist/signer/wasm-signer-client.js.map +1 -0
  47. package/dist/types/index.d.ts +130 -0
  48. package/dist/types/index.d.ts.map +1 -0
  49. package/dist/types/index.js +3 -0
  50. package/dist/types/index.js.map +1 -0
  51. package/dist/utils/api-key-utils.d.ts +7 -0
  52. package/dist/utils/api-key-utils.d.ts.map +1 -0
  53. package/dist/utils/api-key-utils.js +31 -0
  54. package/dist/utils/api-key-utils.js.map +1 -0
  55. package/dist/utils/configuration.d.ts +19 -0
  56. package/dist/utils/configuration.d.ts.map +1 -0
  57. package/dist/utils/configuration.js +55 -0
  58. package/dist/utils/configuration.js.map +1 -0
  59. package/dist/utils/exceptions.d.ts +33 -0
  60. package/dist/utils/exceptions.d.ts.map +1 -0
  61. package/dist/utils/exceptions.js +76 -0
  62. package/dist/utils/exceptions.js.map +1 -0
  63. package/dist/utils/node-wasm-signer.d.ts +126 -0
  64. package/dist/utils/node-wasm-signer.d.ts.map +1 -0
  65. package/dist/utils/node-wasm-signer.js +286 -0
  66. package/dist/utils/node-wasm-signer.js.map +1 -0
  67. package/dist/utils/signer-server.d.ts +18 -0
  68. package/dist/utils/signer-server.d.ts.map +1 -0
  69. package/dist/utils/signer-server.js +79 -0
  70. package/dist/utils/signer-server.js.map +1 -0
  71. package/dist/utils/signer.d.ts +15 -0
  72. package/dist/utils/signer.d.ts.map +1 -0
  73. package/dist/utils/signer.js +68 -0
  74. package/dist/utils/signer.js.map +1 -0
  75. package/dist/utils/wasm-signer.d.ts +130 -0
  76. package/dist/utils/wasm-signer.d.ts.map +1 -0
  77. package/dist/utils/wasm-signer.js +178 -0
  78. package/dist/utils/wasm-signer.js.map +1 -0
  79. package/docs/API.md +195 -0
  80. package/docs/AccountApi.md +220 -0
  81. package/docs/GettingStarted.md +261 -0
  82. package/docs/OrderApi.md +199 -0
  83. package/docs/SignerClient.md +326 -0
  84. package/docs/TransactionApi.md +312 -0
  85. package/docs/WsClient.md +275 -0
  86. package/docs/types/Account.md +67 -0
  87. package/docs/types/ApiKeyPair.md +33 -0
  88. package/docs/types/CreateOrderParams.md +47 -0
  89. package/docs/types/MarketOrderParams.md +36 -0
  90. package/docs/types/SignerConfig.md +40 -0
  91. package/docs/types/WasmSignerConfig.md +30 -0
  92. package/examples/README.md +171 -0
  93. package/examples/account_info.ts +12 -0
  94. package/examples/create_cancel_order.ts +74 -0
  95. package/examples/create_market_order.ts +42 -0
  96. package/examples/create_market_order_max_slippage.ts +43 -0
  97. package/examples/create_sl_tp.ts +61 -0
  98. package/examples/create_with_multiple_keys.ts +58 -0
  99. package/examples/get_info.ts +58 -0
  100. package/examples/send_tx_batch.ts +87 -0
  101. package/examples/system_setup.ts +96 -0
  102. package/examples/transfer_update_leverage.ts +53 -0
  103. package/examples/ws.ts +24 -0
  104. package/examples/ws_async.ts +39 -0
  105. package/examples/ws_send_batch_tx.ts +113 -0
  106. package/examples/ws_send_tx.ts +94 -0
  107. package/package.json +71 -0
  108. package/wasm/lighter-signer.wasm +0 -0
  109. package/wasm/wasm_exec.js +402 -0
  110. package/wasm/wasm_exec_nodejs.js +402 -0
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SignerClient = void 0;
4
+ const api_client_1 = require("../api/api-client");
5
+ const transaction_api_1 = require("../api/transaction-api");
6
+ const signer_server_1 = require("../utils/signer-server");
7
+ class SignerClient {
8
+ constructor(config) {
9
+ this.config = config;
10
+ this.apiClient = new api_client_1.ApiClient({ host: config.url });
11
+ this.transactionApi = new transaction_api_1.TransactionApi(this.apiClient);
12
+ // Use signer server if URL is provided, otherwise fall back to local signer
13
+ if (config.signerServerUrl) {
14
+ this.wallet = (0, signer_server_1.createSignerServerClient)({ url: config.signerServerUrl });
15
+ }
16
+ else {
17
+ throw new Error('Signer server URL is required. Please provide signerServerUrl in config.');
18
+ }
19
+ }
20
+ checkClient() {
21
+ // Basic validation
22
+ if (!this.config.privateKey) {
23
+ return 'Private key is required';
24
+ }
25
+ if (this.config.accountIndex < 0) {
26
+ return 'Account index must be non-negative';
27
+ }
28
+ if (this.config.apiKeyIndex < 0) {
29
+ return 'API key index must be non-negative';
30
+ }
31
+ return null;
32
+ }
33
+ async createOrder(params) {
34
+ try {
35
+ // Get next nonce
36
+ const nextNonce = await this.transactionApi.getNextNonce(this.config.accountIndex, this.config.apiKeyIndex);
37
+ // Create order transaction structure - using correct field names from dashboard
38
+ const orderTx = {
39
+ AccountIndex: this.config.accountIndex,
40
+ ApiKeyIndex: this.config.apiKeyIndex,
41
+ MarketIndex: params.marketIndex,
42
+ ClientOrderIndex: params.clientOrderIndex,
43
+ BaseAmount: params.baseAmount,
44
+ Price: params.price,
45
+ IsAsk: params.isAsk ? 1 : 0,
46
+ Type: params.orderType,
47
+ TimeInForce: params.timeInForce,
48
+ ReduceOnly: params.reduceOnly ? 1 : 0,
49
+ TriggerPrice: params.triggerPrice,
50
+ Nonce: nextNonce.nonce
51
+ };
52
+ // Handle order expiry - use real timestamp for GTT orders (milliseconds)
53
+ const orderExpiry = params.orderExpiry ?? SignerClient.DEFAULT_28_DAY_ORDER_EXPIRY;
54
+ if (orderExpiry !== SignerClient.DEFAULT_28_DAY_ORDER_EXPIRY) {
55
+ orderTx.OrderExpiry = orderExpiry;
56
+ orderTx.ExpiredAt = orderExpiry;
57
+ }
58
+ console.log('Order transaction structure:', JSON.stringify(orderTx, null, 2));
59
+ // Sign the transaction
60
+ const signature = await this.signTransaction(orderTx);
61
+ // Create the final transaction info with signature
62
+ const txInfo = {
63
+ ...orderTx,
64
+ Sig: signature,
65
+ };
66
+ // Send transaction using the correct API
67
+ const txHash = await this.transactionApi.sendTx(SignerClient.TX_TYPE_CREATE_ORDER, JSON.stringify(txInfo));
68
+ return [orderTx, txHash.hash, null];
69
+ }
70
+ catch (error) {
71
+ return [null, '', error instanceof Error ? error.message : 'Unknown error'];
72
+ }
73
+ }
74
+ async createMarketOrder(params) {
75
+ try {
76
+ // Get next nonce
77
+ const nextNonce = await this.transactionApi.getNextNonce(this.config.accountIndex, this.config.apiKeyIndex);
78
+ // Create market order transaction structure
79
+ const orderTx = {
80
+ AccountIndex: this.config.accountIndex,
81
+ OrderBookIndex: params.marketIndex,
82
+ ClientOrderIndex: params.clientOrderIndex,
83
+ BaseAmount: params.baseAmount,
84
+ Price: params.avgExecutionPrice,
85
+ IsAsk: params.isAsk ? 1 : 0,
86
+ OrderType: SignerClient.ORDER_TYPE_MARKET,
87
+ TimeInForce: SignerClient.ORDER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL,
88
+ ReduceOnly: 0,
89
+ TriggerPrice: 0,
90
+ Nonce: nextNonce.nonce,
91
+ OrderExpiry: 1000000,
92
+ };
93
+ // Sign the transaction
94
+ const signature = await this.signTransaction(orderTx);
95
+ // Create the final transaction info with signature
96
+ const txInfo = {
97
+ ...orderTx,
98
+ Sig: signature,
99
+ };
100
+ // Send transaction using the correct API
101
+ const txHash = await this.transactionApi.sendTx(SignerClient.TX_TYPE_CREATE_ORDER, JSON.stringify(txInfo));
102
+ return txHash;
103
+ }
104
+ catch (error) {
105
+ throw error;
106
+ }
107
+ }
108
+ async cancelOrder(params) {
109
+ try {
110
+ // Get next nonce
111
+ const nextNonce = await this.transactionApi.getNextNonce(this.config.accountIndex, this.config.apiKeyIndex);
112
+ // Create cancel order transaction structure - using correct field names
113
+ const cancelTx = {
114
+ AccountIndex: this.config.accountIndex,
115
+ ApiKeyIndex: this.config.apiKeyIndex,
116
+ MarketIndex: params.marketIndex,
117
+ OrderIndex: params.orderIndex,
118
+ Nonce: nextNonce.nonce,
119
+ };
120
+ // Sign the transaction
121
+ const signature = await this.signTransaction(cancelTx);
122
+ // Create the final transaction info with signature
123
+ const txInfo = {
124
+ ...cancelTx,
125
+ Sig: signature,
126
+ };
127
+ // Send transaction using the correct API
128
+ const txHash = await this.transactionApi.sendTx(SignerClient.TX_TYPE_CANCEL_ORDER, JSON.stringify(txInfo));
129
+ return [cancelTx, txHash.hash, null];
130
+ }
131
+ catch (error) {
132
+ return [null, '', error instanceof Error ? error.message : 'Unknown error'];
133
+ }
134
+ }
135
+ async changeApiKey(params) {
136
+ try {
137
+ // Get next nonce
138
+ const nextNonce = await this.transactionApi.getNextNonce(this.config.accountIndex, this.config.apiKeyIndex);
139
+ // Create change API key transaction
140
+ const changeTx = {
141
+ eth_private_key: params.ethPrivateKey,
142
+ new_pubkey: params.newPubkey,
143
+ nonce: nextNonce.nonce,
144
+ };
145
+ // Sign the transaction
146
+ const signature = await this.signTransaction(changeTx);
147
+ // Send transaction
148
+ const txHash = await this.transactionApi.sendTransaction({
149
+ account_index: this.config.accountIndex,
150
+ api_key_index: this.config.apiKeyIndex,
151
+ transaction: signature,
152
+ });
153
+ return [txHash, null];
154
+ }
155
+ catch (error) {
156
+ return [null, error instanceof Error ? error.message : 'Unknown error'];
157
+ }
158
+ }
159
+ async createAuthTokenWithExpiry(expiry) {
160
+ try {
161
+ const timestamp = Math.floor(Date.now() / 1000);
162
+ const message = `${this.config.accountIndex}:${this.config.apiKeyIndex}:${timestamp + expiry}`;
163
+ // Sign the message using the signer server
164
+ const signature = await this.wallet.signTransaction(this.config.privateKey, { message });
165
+ return [signature, null];
166
+ }
167
+ catch (error) {
168
+ return ['', error instanceof Error ? error.message : 'Unknown error'];
169
+ }
170
+ }
171
+ async signTransaction(transaction) {
172
+ // Use the signer server to sign the transaction
173
+ return await this.wallet.signTransaction(this.config.privateKey, transaction);
174
+ }
175
+ async close() {
176
+ await this.apiClient.close();
177
+ }
178
+ }
179
+ exports.SignerClient = SignerClient;
180
+ // Constants from Python SDK
181
+ SignerClient.ORDER_TYPE_LIMIT = 0;
182
+ SignerClient.ORDER_TYPE_MARKET = 1;
183
+ SignerClient.ORDER_TIME_IN_FORCE_GOOD_TILL_TIME = 1;
184
+ SignerClient.ORDER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL = 0;
185
+ SignerClient.ORDER_TIME_IN_FORCE_FILL_OR_KILL = 2;
186
+ //static readonly DEFAULT_10_MIN_AUTH_EXPIRY = 600;
187
+ SignerClient.USDC_TICKER_SCALE = 1e6;
188
+ //tx type constants
189
+ SignerClient.TX_TYPE_CHANGE_PUB_KEY = 8;
190
+ SignerClient.TX_TYPE_CREATE_SUB_ACCOUNT = 9;
191
+ SignerClient.TX_TYPE_CREATE_PUBLIC_POOL = 10;
192
+ SignerClient.TX_TYPE_UPDATE_PUBLIC_POOL = 11;
193
+ SignerClient.TX_TYPE_TRANSFER = 12;
194
+ SignerClient.TX_TYPE_WITHDRAW = 13;
195
+ SignerClient.TX_TYPE_CREATE_ORDER = 14;
196
+ SignerClient.TX_TYPE_CANCEL_ORDER = 15;
197
+ SignerClient.TX_TYPE_CANCEL_ALL_ORDERS = 16;
198
+ SignerClient.TX_TYPE_MODIFY_ORDER = 17;
199
+ SignerClient.TX_TYPE_MINT_SHARES = 18;
200
+ SignerClient.TX_TYPE_BURN_SHARES = 19;
201
+ SignerClient.ORDER_TYPE_STOP_LOSS = 2;
202
+ SignerClient.ORDER_TYPE_STOP_LOSS_LIMIT = 3;
203
+ SignerClient.ORDER_TYPE_TAKE_PROFIT = 4;
204
+ SignerClient.ORDER_TYPE_TAKE_PROFIT_LIMIT = 5;
205
+ SignerClient.ORDER_TYPE_TWAP = 6;
206
+ // static readonly ORDER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL = 0
207
+ SignerClient.ORDER_TIME_IN_FORCE_POST_ONLY = 2;
208
+ SignerClient.NIL_TRIGGER_PRICE = 0;
209
+ SignerClient.DEFAULT_28_DAY_ORDER_EXPIRY = -1;
210
+ SignerClient.DEFAULT_IOC_EXPIRY = 0;
211
+ SignerClient.DEFAULT_10_MIN_AUTH_EXPIRY = -1;
212
+ SignerClient.MINUTE = 60;
213
+ //# sourceMappingURL=signer-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer-client.js","sourceRoot":"","sources":["../../src/signer/signer-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ export interface SignerConfig {
2
+ url: string;
3
+ privateKey: string;
4
+ accountIndex: number;
5
+ apiKeyIndex: number;
6
+ signerServerUrl?: string;
7
+ wasmConfig?: {
8
+ wasmPath: string;
9
+ wasmExecPath?: string;
10
+ };
11
+ }
12
+ export interface CreateOrderParams {
13
+ marketIndex: number;
14
+ clientOrderIndex: number;
15
+ baseAmount: number;
16
+ price: number;
17
+ isAsk: boolean;
18
+ orderType: number;
19
+ timeInForce: number;
20
+ reduceOnly: boolean;
21
+ triggerPrice: number;
22
+ orderExpiry?: number;
23
+ }
24
+ export interface CreateMarketOrderParams {
25
+ marketIndex: number;
26
+ clientOrderIndex: number;
27
+ baseAmount: number;
28
+ avgExecutionPrice: number;
29
+ isAsk: boolean;
30
+ }
31
+ export interface CancelOrderParams {
32
+ marketIndex: number;
33
+ orderIndex: number;
34
+ }
35
+ export interface ChangeApiKeyParams {
36
+ ethPrivateKey: string;
37
+ newPubkey: string;
38
+ }
39
+ export declare class SignerClient {
40
+ private config;
41
+ private apiClient;
42
+ private transactionApi;
43
+ private wallet;
44
+ private signerType;
45
+ private clientCreated;
46
+ static readonly ORDER_TYPE_LIMIT = 0;
47
+ static readonly ORDER_TYPE_MARKET = 1;
48
+ static readonly ORDER_TIME_IN_FORCE_GOOD_TILL_TIME = 1;
49
+ static readonly ORDER_TIME_IN_FORCE_IMMEDIATE_OR_CANCEL = 0;
50
+ static readonly ORDER_TIME_IN_FORCE_FILL_OR_KILL = 2;
51
+ static readonly USDC_TICKER_SCALE = 1000000;
52
+ static readonly TX_TYPE_CHANGE_PUB_KEY = 8;
53
+ static readonly TX_TYPE_CREATE_SUB_ACCOUNT = 9;
54
+ static readonly TX_TYPE_CREATE_PUBLIC_POOL = 10;
55
+ static readonly TX_TYPE_UPDATE_PUBLIC_POOL = 11;
56
+ static readonly TX_TYPE_TRANSFER = 12;
57
+ static readonly TX_TYPE_WITHDRAW = 13;
58
+ static readonly TX_TYPE_CREATE_ORDER = 14;
59
+ static readonly TX_TYPE_CANCEL_ORDER = 15;
60
+ static readonly TX_TYPE_CANCEL_ALL_ORDERS = 16;
61
+ static readonly TX_TYPE_MODIFY_ORDER = 17;
62
+ static readonly TX_TYPE_MINT_SHARES = 18;
63
+ static readonly TX_TYPE_BURN_SHARES = 19;
64
+ static readonly TX_TYPE_UPDATE_LEVERAGE = 20;
65
+ static readonly ORDER_TYPE_STOP_LOSS = 2;
66
+ static readonly ORDER_TYPE_STOP_LOSS_LIMIT = 3;
67
+ static readonly ORDER_TYPE_TAKE_PROFIT = 4;
68
+ static readonly ORDER_TYPE_TAKE_PROFIT_LIMIT = 5;
69
+ static readonly ORDER_TYPE_TWAP = 6;
70
+ static readonly ORDER_TIME_IN_FORCE_POST_ONLY = 2;
71
+ static readonly CANCEL_ALL_TIF_IMMEDIATE = 0;
72
+ static readonly CANCEL_ALL_TIF_SCHEDULED = 1;
73
+ static readonly CANCEL_ALL_TIF_ABORT = 2;
74
+ static readonly NIL_TRIGGER_PRICE = 0;
75
+ static readonly DEFAULT_28_DAY_ORDER_EXPIRY = -1;
76
+ static readonly DEFAULT_IOC_EXPIRY = 0;
77
+ static readonly DEFAULT_10_MIN_AUTH_EXPIRY = -1;
78
+ static readonly MINUTE = 60;
79
+ static readonly CROSS_MARGIN_MODE = 0;
80
+ static readonly ISOLATED_MARGIN_MODE = 1;
81
+ constructor(config: SignerConfig);
82
+ /**
83
+ * Initialize the signer (required for WASM signers)
84
+ */
85
+ initialize(): Promise<void>;
86
+ ensureWasmClient(): Promise<void>;
87
+ checkClient(): string | null;
88
+ createOrder(params: CreateOrderParams): Promise<[any, string, string | null]>;
89
+ createMarketOrder(params: CreateMarketOrderParams): Promise<[any, string, string | null]>;
90
+ cancelOrder(params: CancelOrderParams): Promise<[any, string, string | null]>;
91
+ changeApiKey(params: ChangeApiKeyParams): Promise<[any, string, string | null]>;
92
+ createAuthTokenWithExpiry(expirySeconds?: number): Promise<string>;
93
+ /**
94
+ * Generate a new API key pair using WASM signer
95
+ */
96
+ generateAPIKey(seed?: string): Promise<{
97
+ privateKey: string;
98
+ publicKey: string;
99
+ } | null>;
100
+ /**
101
+ * Withdraw USDC from account
102
+ */
103
+ withdraw(usdcAmount: number, nonce?: number): Promise<[any, string, string | null]>;
104
+ /**
105
+ * Create a sub account
106
+ */
107
+ createSubAccount(nonce?: number): Promise<[any, string | null]>;
108
+ /**
109
+ * Cancel all orders
110
+ */
111
+ cancelAllOrders(timeInForce: number, time: number, nonce?: number): Promise<[any, string | null]>;
112
+ /**
113
+ * Modify an existing order
114
+ */
115
+ modifyOrder(marketIndex: number, orderIndex: number, baseAmount: number, price: number, triggerPrice: number, nonce?: number): Promise<[any, string, string | null]>;
116
+ /**
117
+ * Transfer USDC to another account
118
+ */
119
+ transfer(toAccountIndex: number, usdcAmount: number, nonce?: number): Promise<[any, string, string | null]>;
120
+ /**
121
+ * Update leverage for a market
122
+ */
123
+ updateLeverage(marketIndex: number, marginMode: number, initialMarginFraction: number, nonce?: number): Promise<[any, string, string | null]>;
124
+ /**
125
+ * Close the API client connection
126
+ */
127
+ close(): Promise<void>;
128
+ }
129
+ //# sourceMappingURL=wasm-signer-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm-signer-client.d.ts","sourceRoot":"","sources":["../../src/signer/wasm-signer-client.ts"],"names":[],"mappings":"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"}