@lifi/perps-sdk-provider-lighter 40.0.0 → 40.2.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 (46) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +2 -2
  3. package/dist/cjs/LighterProvider.js.map +1 -1
  4. package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
  5. package/dist/cjs/signers/LighterSigner.js +1 -20
  6. package/dist/cjs/signers/LighterSigner.js.map +1 -1
  7. package/dist/cjs/types/action.d.ts +14 -0
  8. package/dist/cjs/types/action.d.ts.map +1 -1
  9. package/dist/cjs/types/action.js +33 -1
  10. package/dist/cjs/types/action.js.map +1 -1
  11. package/dist/cjs/types/ws.d.ts +5 -0
  12. package/dist/cjs/types/ws.d.ts.map +1 -1
  13. package/dist/cjs/websocket/LighterWsProvider.d.ts +1 -0
  14. package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -1
  15. package/dist/cjs/websocket/LighterWsProvider.js +45 -11
  16. package/dist/cjs/websocket/LighterWsProvider.js.map +1 -1
  17. package/dist/esm/LighterProvider.d.ts.map +1 -1
  18. package/dist/esm/LighterProvider.js +2 -2
  19. package/dist/esm/LighterProvider.js.map +1 -1
  20. package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
  21. package/dist/esm/signers/LighterSigner.js +2 -22
  22. package/dist/esm/signers/LighterSigner.js.map +1 -1
  23. package/dist/esm/types/action.d.ts +67 -0
  24. package/dist/esm/types/action.d.ts.map +1 -1
  25. package/dist/esm/types/action.js +86 -3
  26. package/dist/esm/types/action.js.map +1 -1
  27. package/dist/esm/types/ws.d.ts +12 -0
  28. package/dist/esm/types/ws.d.ts.map +1 -1
  29. package/dist/esm/websocket/LighterWsProvider.d.ts +7 -2
  30. package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -1
  31. package/dist/esm/websocket/LighterWsProvider.js +57 -17
  32. package/dist/esm/websocket/LighterWsProvider.js.map +1 -1
  33. package/dist/types/LighterProvider.d.ts.map +1 -1
  34. package/dist/types/signers/LighterSigner.d.ts.map +1 -1
  35. package/dist/types/types/action.d.ts +67 -0
  36. package/dist/types/types/action.d.ts.map +1 -1
  37. package/dist/types/types/ws.d.ts +12 -0
  38. package/dist/types/types/ws.d.ts.map +1 -1
  39. package/dist/types/websocket/LighterWsProvider.d.ts +7 -2
  40. package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -1
  41. package/package.json +2 -2
  42. package/src/LighterProvider.ts +16 -8
  43. package/src/signers/LighterSigner.ts +6 -23
  44. package/src/types/action.ts +91 -0
  45. package/src/types/ws.ts +14 -0
  46. package/src/websocket/LighterWsProvider.ts +65 -19
@@ -1,3 +1,4 @@
1
+ import { ActionType } from '@lifi/perps-types';
1
2
  /**
2
3
  * Backend-provided params for SignCreateOrder.
3
4
  *
@@ -232,4 +233,70 @@ export declare const LT_NIL_TRIGGER_PRICE = 0;
232
233
  * @public
233
234
  */
234
235
  export declare const LT_DEFAULT_ORDER_EXPIRY = -1;
236
+ /**
237
+ * Lighter tx type `TxTypeL2ChangePubKey`.
238
+ * @public
239
+ */
240
+ export declare const LT_TX_TYPE_CHANGE_PUB_KEY = 8;
241
+ /**
242
+ * Lighter tx type `TxTypeL2Transfer`.
243
+ * @public
244
+ */
245
+ export declare const LT_TX_TYPE_TRANSFER = 12;
246
+ /**
247
+ * Lighter tx type `TxTypeL2Withdraw`.
248
+ * @public
249
+ */
250
+ export declare const LT_TX_TYPE_WITHDRAW = 13;
251
+ /**
252
+ * Lighter tx type `TxTypeL2CreateOrder`.
253
+ * @public
254
+ */
255
+ export declare const LT_TX_TYPE_CREATE_ORDER = 14;
256
+ /**
257
+ * Lighter tx type `TxTypeL2CancelOrder`.
258
+ * @public
259
+ */
260
+ export declare const LT_TX_TYPE_CANCEL_ORDER = 15;
261
+ /**
262
+ * Lighter tx type `TxTypeL2CancelAllOrders`.
263
+ * @public
264
+ */
265
+ export declare const LT_TX_TYPE_CANCEL_ALL_ORDERS = 16;
266
+ /**
267
+ * Lighter tx type `TxTypeL2ModifyOrder`.
268
+ * @public
269
+ */
270
+ export declare const LT_TX_TYPE_MODIFY_ORDER = 17;
271
+ /**
272
+ * Lighter tx type `TxTypeL2UpdateLeverage`.
273
+ * @public
274
+ */
275
+ export declare const LT_TX_TYPE_UPDATE_LEVERAGE = 20;
276
+ /**
277
+ * Lighter tx type `TxTypeL2UpdateMargin`.
278
+ * @public
279
+ */
280
+ export declare const LT_TX_TYPE_UPDATE_MARGIN = 29;
281
+ /**
282
+ * Lighter tx type `TxTypeL2UpdateAccountConfig`.
283
+ * @public
284
+ */
285
+ export declare const LT_TX_TYPE_UPDATE_ACCOUNT_CONFIG = 41;
286
+ /**
287
+ * Lighter tx type `TxTypeL2UpdateAccountAssetConfig`.
288
+ * @public
289
+ */
290
+ export declare const LT_TX_TYPE_UPDATE_ACCOUNT_ASSET_CONFIG = 42;
291
+ /**
292
+ * Lighter tx type `TxTypeL2ApproveIntegrator`.
293
+ * @public
294
+ */
295
+ export declare const LT_TX_TYPE_APPROVE_INTEGRATOR = 45;
296
+ /**
297
+ * Lighter tx type of the signed tx the SDK's WASM signer emits for each
298
+ * action. An action without an entry has no Lighter signing path.
299
+ * @public
300
+ */
301
+ export declare const LT_TX_TYPE_BY_ACTION: Readonly<Partial<Record<ActionType, number>>>;
235
302
  //# sourceMappingURL=action.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { LtAccountAsset } from './account.js';
2
+ import type { LtCandle } from './asset.js';
2
3
  /**
3
4
  * Common envelope fields on every Lighter WebSocket frame.
4
5
  *
@@ -133,6 +134,17 @@ export type LtWsTradeMessage = LtWsMessage & {
133
134
  type: 'subscribed/trade' | 'update/trade';
134
135
  trades?: LtWsTrade[];
135
136
  };
137
+ /**
138
+ * Subscription or update frame of the public `candle/{market_id}/{resolution}`
139
+ * channel. The reply `channel` uses colons (`candle:1:1m`). Each bar also
140
+ * carries the quote volume `V` and a sequence `i`, which the SDK does not read.
141
+ *
142
+ * @public
143
+ */
144
+ export type LtWsCandleMessage = LtWsMessage & {
145
+ type: 'subscribed/candle' | 'update/candle';
146
+ candles?: LtCandle[];
147
+ };
136
148
  /**
137
149
  * Auth-channel payloads.
138
150
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"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"}
@@ -42,8 +42,8 @@ export interface LighterWsProviderOptions {
42
42
  }
43
43
  /**
44
44
  * Lighter WebSocket provider (extends {@link WsProviderBase}): subscribes to
45
- * Lighter's WS channels (orderbook, marketsContext, orders, positions), attaching auth
46
- * tokens to gated channels. Construct via {@link lighterWsProvider}.
45
+ * Lighter's WS channels (orderbook, candle, marketsContext, orders,
46
+ * positions), attaching auth tokens to gated channels. Construct via {@link lighterWsProvider}.
47
47
  *
48
48
  * @public
49
49
  */
@@ -123,6 +123,11 @@ export declare class LighterWsProvider extends WsProviderBase<SubState> {
123
123
  private handleMarketStats;
124
124
  private handleOrderBook;
125
125
  private handleTrades;
126
+ /**
127
+ * One emit per bar. The reply channel (`candle:1:1m`) names the interval,
128
+ * because Lighter resolution strings equal the `OhlcvInterval` values.
129
+ */
130
+ private handleCandles;
126
131
  private marketIdFromChannel;
127
132
  }
128
133
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"LighterWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LighterWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAQlB,cAAc,EACd,KAAK,iBAAiB,EAGvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AA0FnC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AAEhC,UAAU,QAAQ;IAChB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAA;CACnB;AAeD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;CAC5C;AAqDD;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAE5B;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAEnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,cAAc,CAAoC;IAE1D;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2C;IAE9E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAGlC;IAEH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IAErD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;IAC9D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqC;gBAGxE,KAAK,GAAE,MAA+B,EACtC,WAAW,GAAE,MAA6B,EAC1C,OAAO,GAAE,wBAA6B,EACtC,MAAM,CAAC,EAAE,cAAc;IAsBzB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;;;OAKG;IACG,cAAc,CAClB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;cAkBN,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IA6DnE;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;cASP,OAAO,IAAI,IAAI;cAOlB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,OAAO,GACR,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3B;;;;;;;OAOG;YACW,gBAAgB;IAsB9B,2FAA2F;YAC7E,mBAAmB;IAYjC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;YA0B5B,cAAc;YAiGd,mBAAmB;YAqBnB,iBAAiB;IAK/B,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqB1C,OAAO,CAAC,QAAQ;IA+GhB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAwEvB,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB;IAyCxB,qEAAqE;IACrE,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,sBAAsB;IAsC9B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,YAAY;IAwBpB;;;OAGG;IACH,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,mBAAmB;CAc5B;AA+GD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,wBAAwB,KACjC,iBAKA,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-lighter",
3
- "version": "40.0.0",
3
+ "version": "40.2.0",
4
4
  "description": "Lighter provider plugin for @lifi/perps-sdk",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -47,7 +47,7 @@
47
47
  "@lifi/perps-types": "^24.0.0"
48
48
  },
49
49
  "peerDependencies": {
50
- "@lifi/perps-sdk": "^27.0.0"
50
+ "@lifi/perps-sdk": "^27.2.0"
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
@@ -1000,12 +1000,16 @@ export const createLighterProvider = (
1000
1000
  const limits =
1001
1001
  token === undefined
1002
1002
  ? undefined
1003
- : await retryOnRevoked(address, token, (resolvedToken) =>
1004
- fetchAccountLimits(
1005
- apiClient(),
1006
- localKey.accountIndex,
1007
- resolvedToken
1008
- )
1003
+ : await retryWithStandardToken(
1004
+ address,
1005
+ localKey,
1006
+ token,
1007
+ (resolvedToken) =>
1008
+ fetchAccountLimits(
1009
+ apiClient(),
1010
+ localKey.accountIndex,
1011
+ resolvedToken
1012
+ )
1009
1013
  )
1010
1014
  userTierName = limits?.user_tier_name
1011
1015
  } catch (err) {
@@ -1082,8 +1086,12 @@ export const createLighterProvider = (
1082
1086
  getMarketsContext(requireClient(), { provider: providerKey }, opts),
1083
1087
  token === undefined
1084
1088
  ? Promise.resolve(undefined)
1085
- : retryOnRevoked(params.address, token, (resolvedToken) =>
1086
- fetchAccountLimits(client, account.index, resolvedToken)
1089
+ : retryWithStandardToken(
1090
+ params.address,
1091
+ localKey,
1092
+ token,
1093
+ (resolvedToken) =>
1094
+ fetchAccountLimits(client, account.index, resolvedToken)
1087
1095
  ),
1088
1096
  apiKeyRegistered
1089
1097
  ? readOnlyTokenManager.get(params.address, localKey.accountIndex)
@@ -4,7 +4,11 @@ import {
4
4
  PerpsError,
5
5
  } from '@lifi/perps-sdk'
6
6
  import { ActionType, PerpsErrorCode } from '@lifi/perps-types'
7
- import { LT_ROUTE_PERP, LT_ROUTE_SPOT } from '../types/action.js'
7
+ import {
8
+ LT_ROUTE_PERP,
9
+ LT_ROUTE_SPOT,
10
+ LT_TX_TYPE_BY_ACTION,
11
+ } from '../types/action.js'
8
12
  import { assetMarginModeInt } from '../utils/assetCollateral.js'
9
13
  import {
10
14
  callLighterWasm,
@@ -78,27 +82,6 @@ export type LighterL1CountersignedAction =
78
82
  | ActionType.APPROVE_INTEGRATOR
79
83
  | ActionType.TRANSFER
80
84
 
81
- // lighter-go `types/txtypes/constants.go`.
82
- const TX_TYPE_BY_ACTION: Partial<Record<ActionType, number>> = {
83
- [ActionType.REGISTER_API_KEY]: 8,
84
- [ActionType.TRANSFER]: 12,
85
- [ActionType.SEND_ASSET]: 12,
86
- [ActionType.WITHDRAWAL]: 13,
87
- [ActionType.PLACE_ORDER]: 14,
88
- [ActionType.PLACE_TRIGGER_ORDER]: 14,
89
- [ActionType.PLACE_TWAP_ORDER]: 14,
90
- [ActionType.CANCEL_ORDER]: 15,
91
- [ActionType.CANCEL_TWAP_ORDER]: 15,
92
- [ActionType.CANCEL_ALL_ORDERS]: 16,
93
- [ActionType.MODIFY_ORDER]: 17,
94
- [ActionType.UPDATE_LEVERAGE]: 20,
95
- [ActionType.UPDATE_POSITION_MARGIN]: 29,
96
- [ActionType.ACCOUNT_MODE]: 41,
97
- [ActionType.UPDATE_ASSET_COLLATERAL]: 42,
98
- [ActionType.APPROVE_INTEGRATOR]: 45,
99
- [ActionType.REVOKE_INTEGRATOR]: 45,
100
- }
101
-
102
85
  // Nil sentinels from lighter-go `types/txtypes/constants.go`: the Go side
103
86
  // leaves the matching `L2TxAttributes` entry unset.
104
87
  const NIL_INTEGRATOR_INDEX = 0
@@ -389,7 +372,7 @@ export class LighterSigner {
389
372
  skipNonce: boolean,
390
373
  call: LighterWasmCall<LighterWasmTx>
391
374
  ): Promise<LighterSignedBlob> {
392
- const txType = TX_TYPE_BY_ACTION[action]
375
+ const txType = LT_TX_TYPE_BY_ACTION[action]
393
376
  if (txType === undefined) {
394
377
  throw new PerpsError(
395
378
  PerpsErrorCode.ValidationError,
@@ -1,3 +1,5 @@
1
+ import { ActionType } from '@lifi/perps-types'
2
+
1
3
  // Shapes of `wasmSignParams` per action. The backend populates these and the
2
4
  // SDK passes them to the WASM signer alongside SDK-managed fields (nonce,
3
5
  // account_index, api_key_index).
@@ -252,3 +254,92 @@ export const LT_NIL_TRIGGER_PRICE = 0
252
254
  * @public
253
255
  */
254
256
  export const LT_DEFAULT_ORDER_EXPIRY = -1
257
+
258
+ // Tx type values from lighter-go `types/txtypes/constants.go`.
259
+ /**
260
+ * Lighter tx type `TxTypeL2ChangePubKey`.
261
+ * @public
262
+ */
263
+ export const LT_TX_TYPE_CHANGE_PUB_KEY = 8
264
+ /**
265
+ * Lighter tx type `TxTypeL2Transfer`.
266
+ * @public
267
+ */
268
+ export const LT_TX_TYPE_TRANSFER = 12
269
+ /**
270
+ * Lighter tx type `TxTypeL2Withdraw`.
271
+ * @public
272
+ */
273
+ export const LT_TX_TYPE_WITHDRAW = 13
274
+ /**
275
+ * Lighter tx type `TxTypeL2CreateOrder`.
276
+ * @public
277
+ */
278
+ export const LT_TX_TYPE_CREATE_ORDER = 14
279
+ /**
280
+ * Lighter tx type `TxTypeL2CancelOrder`.
281
+ * @public
282
+ */
283
+ export const LT_TX_TYPE_CANCEL_ORDER = 15
284
+ /**
285
+ * Lighter tx type `TxTypeL2CancelAllOrders`.
286
+ * @public
287
+ */
288
+ export const LT_TX_TYPE_CANCEL_ALL_ORDERS = 16
289
+ /**
290
+ * Lighter tx type `TxTypeL2ModifyOrder`.
291
+ * @public
292
+ */
293
+ export const LT_TX_TYPE_MODIFY_ORDER = 17
294
+ /**
295
+ * Lighter tx type `TxTypeL2UpdateLeverage`.
296
+ * @public
297
+ */
298
+ export const LT_TX_TYPE_UPDATE_LEVERAGE = 20
299
+ /**
300
+ * Lighter tx type `TxTypeL2UpdateMargin`.
301
+ * @public
302
+ */
303
+ export const LT_TX_TYPE_UPDATE_MARGIN = 29
304
+ /**
305
+ * Lighter tx type `TxTypeL2UpdateAccountConfig`.
306
+ * @public
307
+ */
308
+ export const LT_TX_TYPE_UPDATE_ACCOUNT_CONFIG = 41
309
+ /**
310
+ * Lighter tx type `TxTypeL2UpdateAccountAssetConfig`.
311
+ * @public
312
+ */
313
+ export const LT_TX_TYPE_UPDATE_ACCOUNT_ASSET_CONFIG = 42
314
+ /**
315
+ * Lighter tx type `TxTypeL2ApproveIntegrator`.
316
+ * @public
317
+ */
318
+ export const LT_TX_TYPE_APPROVE_INTEGRATOR = 45
319
+
320
+ /**
321
+ * Lighter tx type of the signed tx the SDK's WASM signer emits for each
322
+ * action. An action without an entry has no Lighter signing path.
323
+ * @public
324
+ */
325
+ export const LT_TX_TYPE_BY_ACTION: Readonly<
326
+ Partial<Record<ActionType, number>>
327
+ > = Object.freeze({
328
+ [ActionType.REGISTER_API_KEY]: LT_TX_TYPE_CHANGE_PUB_KEY,
329
+ [ActionType.TRANSFER]: LT_TX_TYPE_TRANSFER,
330
+ [ActionType.SEND_ASSET]: LT_TX_TYPE_TRANSFER,
331
+ [ActionType.WITHDRAWAL]: LT_TX_TYPE_WITHDRAW,
332
+ [ActionType.PLACE_ORDER]: LT_TX_TYPE_CREATE_ORDER,
333
+ [ActionType.PLACE_TRIGGER_ORDER]: LT_TX_TYPE_CREATE_ORDER,
334
+ [ActionType.PLACE_TWAP_ORDER]: LT_TX_TYPE_CREATE_ORDER,
335
+ [ActionType.CANCEL_ORDER]: LT_TX_TYPE_CANCEL_ORDER,
336
+ [ActionType.CANCEL_TWAP_ORDER]: LT_TX_TYPE_CANCEL_ORDER,
337
+ [ActionType.CANCEL_ALL_ORDERS]: LT_TX_TYPE_CANCEL_ALL_ORDERS,
338
+ [ActionType.MODIFY_ORDER]: LT_TX_TYPE_MODIFY_ORDER,
339
+ [ActionType.UPDATE_LEVERAGE]: LT_TX_TYPE_UPDATE_LEVERAGE,
340
+ [ActionType.UPDATE_POSITION_MARGIN]: LT_TX_TYPE_UPDATE_MARGIN,
341
+ [ActionType.ACCOUNT_MODE]: LT_TX_TYPE_UPDATE_ACCOUNT_CONFIG,
342
+ [ActionType.UPDATE_ASSET_COLLATERAL]: LT_TX_TYPE_UPDATE_ACCOUNT_ASSET_CONFIG,
343
+ [ActionType.APPROVE_INTEGRATOR]: LT_TX_TYPE_APPROVE_INTEGRATOR,
344
+ [ActionType.REVOKE_INTEGRATOR]: LT_TX_TYPE_APPROVE_INTEGRATOR,
345
+ })
package/src/types/ws.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { LtAccountAsset } from './account.js'
2
+ import type { LtCandle } from './asset.js'
2
3
 
3
4
  // The Lighter stream server sends JSON messages of shape:
4
5
  // { type: 'subscribed/<channel>' | 'update/<channel>' | 'ping',
@@ -11,6 +12,7 @@ import type { LtAccountAsset } from './account.js'
11
12
  // - spot_market_stats/all → context across all spot markets
12
13
  // - spot_market_stats/{id} → context for one spot market
13
14
  // - order_book/{market_id} → bids/asks per market (stateful with deltas)
15
+ // - candle/{market_id}/{resolution} → OHLCV bars per market and resolution
14
16
  // - account_all/{account} → per-asset spot and margin-route balances
15
17
 
16
18
  /**
@@ -156,6 +158,18 @@ export type LtWsTradeMessage = LtWsMessage & {
156
158
  trades?: LtWsTrade[]
157
159
  }
158
160
 
161
+ /**
162
+ * Subscription or update frame of the public `candle/{market_id}/{resolution}`
163
+ * channel. The reply `channel` uses colons (`candle:1:1m`). Each bar also
164
+ * carries the quote volume `V` and a sequence `i`, which the SDK does not read.
165
+ *
166
+ * @public
167
+ */
168
+ export type LtWsCandleMessage = LtWsMessage & {
169
+ type: 'subscribed/candle' | 'update/candle'
170
+ candles?: LtCandle[]
171
+ }
172
+
159
173
  /**
160
174
  * Auth-channel payloads.
161
175
  *
@@ -5,6 +5,7 @@ import {
5
5
  getMarketRegistry,
6
6
  isDecimalStringGreaterThan,
7
7
  type MarketRegistry,
8
+ numberToDecimalString,
8
9
  PerpsError,
9
10
  type PerpsProvider,
10
11
  type PerpsSDKClient,
@@ -51,6 +52,7 @@ import type {
51
52
  LtWsAccountAllOrdersMessage,
52
53
  LtWsAccountAllPositionsMessage,
53
54
  LtWsAccountAllTradesMessage,
55
+ LtWsCandleMessage,
54
56
  LtWsMarketStats,
55
57
  LtWsMarketStatsAllMessage,
56
58
  LtWsMessage,
@@ -65,6 +67,7 @@ import {
65
67
  fetchDetailedAccount,
66
68
  isOpenPosition,
67
69
  mapFill,
70
+ mapInterval,
68
71
  mapMarketContext,
69
72
  mapOrderUpdates,
70
73
  mapPosition,
@@ -74,8 +77,9 @@ import { askOrder, bidOrder, OrderBookSide } from './orderBookSide.js'
74
77
 
75
78
  // Public channels: `marketsContext` (market_stats/all + spot_market_stats/all),
76
79
  // `marketContext` (market_stats/N or spot_market_stats/N), `orderbook`
77
- // (order_book/N), `trades` (trade/N), `accountSummary` (user_stats/N +
78
- // account_all/N, priced by the `marketsContext` spot marks).
80
+ // (order_book/N), `trades` (trade/N), `candle` (candle/N/resolution),
81
+ // `accountSummary` (user_stats/N + account_all/N, priced by the
82
+ // `marketsContext` spot marks).
79
83
  // Authenticated channels (resolve an auth token per subscribe send):
80
84
  // - orderUpdates → account_all_orders/{account_index}
81
85
  // - fills → account_all_trades/{account_index}
@@ -228,8 +232,8 @@ const safeHeldPortfolioValue = createSafeFunction(
228
232
 
229
233
  /**
230
234
  * Lighter WebSocket provider (extends {@link WsProviderBase}): subscribes to
231
- * Lighter's WS channels (orderbook, marketsContext, orders, positions), attaching auth
232
- * tokens to gated channels. Construct via {@link lighterWsProvider}.
235
+ * Lighter's WS channels (orderbook, candle, marketsContext, orders,
236
+ * positions), attaching auth tokens to gated channels. Construct via {@link lighterWsProvider}.
233
237
  *
234
238
  * @public
235
239
  */
@@ -488,6 +492,7 @@ export class LighterWsProvider extends WsProviderBase<SubState> {
488
492
  case 'accountSummary':
489
493
  return `accountSummary:${sub.address.toLowerCase()}`
490
494
  case 'candle':
495
+ return `candle:${sub.marketId}:${sub.interval}`
491
496
  case 'spotBalances':
492
497
  case 'availableToTrade':
493
498
  throw new Error(`Lighter WS does not support channel: ${sub.channel}.`)
@@ -528,25 +533,18 @@ export class LighterWsProvider extends WsProviderBase<SubState> {
528
533
  return [{ channel: `${prefix}/${market.id}`, needsAuth: false }]
529
534
  }
530
535
  if (sub.channel === 'orderbook') {
531
- const id = Number(sub.marketId)
532
- if (!Number.isFinite(id)) {
533
- throw new Error(
534
- `Lighter WS: unknown market for marketId '${sub.marketId}'. ` +
535
- 'MarketId must be a numeric market_id string.'
536
- )
537
- }
536
+ const id = numericMarketId(sub.marketId)
538
537
  return [{ channel: `order_book/${id}`, needsAuth: false }]
539
538
  }
540
539
  if (sub.channel === 'trades') {
541
- const id = Number(sub.marketId)
542
- if (!Number.isFinite(id)) {
543
- throw new Error(
544
- `Lighter WS: unknown market for marketId '${sub.marketId}'. ` +
545
- 'MarketId must be a numeric market_id string.'
546
- )
547
- }
540
+ const id = numericMarketId(sub.marketId)
548
541
  return [{ channel: `trade/${id}`, needsAuth: false }]
549
542
  }
543
+ if (sub.channel === 'candle') {
544
+ const id = numericMarketId(sub.marketId)
545
+ const resolution = mapInterval(sub.interval)
546
+ return [{ channel: `candle/${id}/${resolution}`, needsAuth: false }]
547
+ }
550
548
  if (sub.channel === 'accountSummary') {
551
549
  // Rejects the subscribe for a provider key with no settlement asset,
552
550
  // instead of every later frame.
@@ -691,6 +689,11 @@ export class LighterWsProvider extends WsProviderBase<SubState> {
691
689
  return
692
690
  }
693
691
 
692
+ if (msg.type === 'subscribed/candle' || msg.type === 'update/candle') {
693
+ this.handleCandles(msg as LtWsCandleMessage)
694
+ return
695
+ }
696
+
694
697
  if (
695
698
  msg.type === 'subscribed/account_all_orders' ||
696
699
  msg.type === 'update/account_all_orders'
@@ -1103,6 +1106,37 @@ export class LighterWsProvider extends WsProviderBase<SubState> {
1103
1106
  })
1104
1107
  }
1105
1108
 
1109
+ /**
1110
+ * One emit per bar. The reply channel (`candle:1:1m`) names the interval,
1111
+ * because Lighter resolution strings equal the `OhlcvInterval` values.
1112
+ */
1113
+ private handleCandles(msg: LtWsCandleMessage): void {
1114
+ const [prefix, rawMarketId, interval] = msg.channel?.split(/[:/]/) ?? []
1115
+ const marketId = Number(rawMarketId)
1116
+ if (
1117
+ prefix !== 'candle' ||
1118
+ !rawMarketId ||
1119
+ !Number.isFinite(marketId) ||
1120
+ !interval
1121
+ ) {
1122
+ return
1123
+ }
1124
+ const key = `candle:${marketId}:${interval}`
1125
+ for (const bar of msg.candles ?? []) {
1126
+ this.emit(key, {
1127
+ channel: 'candle',
1128
+ data: {
1129
+ t: bar.t,
1130
+ o: numberToDecimalString(bar.o),
1131
+ h: numberToDecimalString(bar.h),
1132
+ l: numberToDecimalString(bar.l),
1133
+ c: numberToDecimalString(bar.c),
1134
+ v: numberToDecimalString(bar.v),
1135
+ },
1136
+ })
1137
+ }
1138
+ }
1139
+
1106
1140
  private marketIdFromChannel(
1107
1141
  channel: string | undefined,
1108
1142
  prefix = 'order_book'
@@ -1133,6 +1167,18 @@ function hasAuthTokenResolver(
1133
1167
  )
1134
1168
  }
1135
1169
 
1170
+ /** The numeric Lighter `market_id` of a public-channel subscription. */
1171
+ function numericMarketId(marketId: string): number {
1172
+ const id = Number(marketId)
1173
+ if (!Number.isFinite(id)) {
1174
+ throw new Error(
1175
+ `Lighter WS: unknown market for marketId '${marketId}'. ` +
1176
+ 'MarketId must be a numeric market_id string.'
1177
+ )
1178
+ }
1179
+ return id
1180
+ }
1181
+
1136
1182
  const isObject = (v: unknown): v is Record<string, unknown> =>
1137
1183
  typeof v === 'object' && v !== null
1138
1184
 
@@ -1238,5 +1284,5 @@ export const lighterWsProvider = (
1238
1284
  Object.assign(
1239
1285
  ({ provider, wsUrl, client }: WsProviderFactoryParams) =>
1240
1286
  new LighterWsProvider(wsUrl, provider, options, client),
1241
- { streamsCandles: false, streamsAvailableToTrade: false }
1287
+ { streamsCandles: true, streamsAvailableToTrade: false }
1242
1288
  )