@lifi/perps-sdk-provider-lighter 8.0.0 → 8.1.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 (156) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +3 -0
  3. package/dist/cjs/LighterProvider.js.map +1 -1
  4. package/dist/cjs/constants.d.ts.map +1 -1
  5. package/dist/cjs/constants.js.map +1 -1
  6. package/dist/cjs/signers/LighterKeyStore.d.ts.map +1 -1
  7. package/dist/cjs/signers/LighterKeyStore.js.map +1 -1
  8. package/dist/cjs/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  9. package/dist/cjs/signers/LighterReadOnlyTokenManager.js.map +1 -1
  10. package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
  11. package/dist/cjs/signers/LighterSigner.js.map +1 -1
  12. package/dist/cjs/signers/createAuthToken.d.ts.map +1 -1
  13. package/dist/cjs/signers/createAuthToken.js.map +1 -1
  14. package/dist/cjs/signers/wasmLoader.d.ts.map +1 -1
  15. package/dist/cjs/signers/wasmLoader.js.map +1 -1
  16. package/dist/cjs/types/account.d.ts.map +1 -1
  17. package/dist/cjs/types/action.d.ts.map +1 -1
  18. package/dist/cjs/types/action.js.map +1 -1
  19. package/dist/cjs/types/activity.d.ts.map +1 -1
  20. package/dist/cjs/types/asset.d.ts.map +1 -1
  21. package/dist/cjs/types/fill.d.ts.map +1 -1
  22. package/dist/cjs/types/order.d.ts.map +1 -1
  23. package/dist/cjs/types/submit.d.ts.map +1 -1
  24. package/dist/cjs/types/ws.d.ts.map +1 -1
  25. package/dist/cjs/utils/lighterAsset.d.ts.map +1 -1
  26. package/dist/cjs/utils/lighterAsset.js.map +1 -1
  27. package/dist/cjs/utils/ohlcvInterval.d.ts.map +1 -1
  28. package/dist/cjs/utils/ohlcvInterval.js.map +1 -1
  29. package/dist/cjs/utils/transferMargin.d.ts.map +1 -1
  30. package/dist/cjs/utils/transferMargin.js +1 -2
  31. package/dist/cjs/utils/transferMargin.js.map +1 -1
  32. package/dist/cjs/utils/wireEncoding.d.ts.map +1 -1
  33. package/dist/cjs/utils/wireEncoding.js.map +1 -1
  34. package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -1
  35. package/dist/cjs/websocket/LighterWsProvider.js.map +1 -1
  36. package/dist/esm/LighterProvider.d.ts.map +1 -1
  37. package/dist/esm/LighterProvider.js +7 -0
  38. package/dist/esm/LighterProvider.js.map +1 -1
  39. package/dist/esm/constants.d.ts +15 -2
  40. package/dist/esm/constants.d.ts.map +1 -1
  41. package/dist/esm/constants.js +15 -2
  42. package/dist/esm/constants.js.map +1 -1
  43. package/dist/esm/signers/LighterKeyStore.d.ts +31 -2
  44. package/dist/esm/signers/LighterKeyStore.d.ts.map +1 -1
  45. package/dist/esm/signers/LighterKeyStore.js +24 -1
  46. package/dist/esm/signers/LighterKeyStore.js.map +1 -1
  47. package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts +23 -3
  48. package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  49. package/dist/esm/signers/LighterReadOnlyTokenManager.js +4 -0
  50. package/dist/esm/signers/LighterReadOnlyTokenManager.js.map +1 -1
  51. package/dist/esm/signers/LighterSigner.d.ts +49 -7
  52. package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
  53. package/dist/esm/signers/LighterSigner.js +11 -1
  54. package/dist/esm/signers/LighterSigner.js.map +1 -1
  55. package/dist/esm/signers/createAuthToken.d.ts +8 -2
  56. package/dist/esm/signers/createAuthToken.d.ts.map +1 -1
  57. package/dist/esm/signers/createAuthToken.js.map +1 -1
  58. package/dist/esm/signers/wasmLoader.d.ts +14 -2
  59. package/dist/esm/signers/wasmLoader.d.ts.map +1 -1
  60. package/dist/esm/signers/wasmLoader.js.map +1 -1
  61. package/dist/esm/types/account.d.ts +58 -8
  62. package/dist/esm/types/account.d.ts.map +1 -1
  63. package/dist/esm/types/action.d.ts +72 -18
  64. package/dist/esm/types/action.d.ts.map +1 -1
  65. package/dist/esm/types/action.js +72 -18
  66. package/dist/esm/types/action.js.map +1 -1
  67. package/dist/esm/types/activity.d.ts +64 -10
  68. package/dist/esm/types/activity.d.ts.map +1 -1
  69. package/dist/esm/types/asset.d.ts +72 -12
  70. package/dist/esm/types/asset.d.ts.map +1 -1
  71. package/dist/esm/types/fill.d.ts +14 -2
  72. package/dist/esm/types/fill.d.ts.map +1 -1
  73. package/dist/esm/types/order.d.ts +27 -4
  74. package/dist/esm/types/order.d.ts.map +1 -1
  75. package/dist/esm/types/submit.d.ts +26 -4
  76. package/dist/esm/types/submit.d.ts.map +1 -1
  77. package/dist/esm/types/ws.d.ts +56 -8
  78. package/dist/esm/types/ws.d.ts.map +1 -1
  79. package/dist/esm/utils/lighterAsset.d.ts +7 -1
  80. package/dist/esm/utils/lighterAsset.d.ts.map +1 -1
  81. package/dist/esm/utils/lighterAsset.js +7 -1
  82. package/dist/esm/utils/lighterAsset.js.map +1 -1
  83. package/dist/esm/utils/ohlcvInterval.d.ts +6 -1
  84. package/dist/esm/utils/ohlcvInterval.d.ts.map +1 -1
  85. package/dist/esm/utils/ohlcvInterval.js +6 -1
  86. package/dist/esm/utils/ohlcvInterval.js.map +1 -1
  87. package/dist/esm/utils/transferMargin.d.ts.map +1 -1
  88. package/dist/esm/utils/transferMargin.js +2 -3
  89. package/dist/esm/utils/transferMargin.js.map +1 -1
  90. package/dist/esm/utils/wireEncoding.d.ts +58 -23
  91. package/dist/esm/utils/wireEncoding.d.ts.map +1 -1
  92. package/dist/esm/utils/wireEncoding.js +58 -23
  93. package/dist/esm/utils/wireEncoding.js.map +1 -1
  94. package/dist/esm/websocket/LighterWsProvider.d.ts +6 -0
  95. package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -1
  96. package/dist/esm/websocket/LighterWsProvider.js +6 -0
  97. package/dist/esm/websocket/LighterWsProvider.js.map +1 -1
  98. package/dist/types/LighterProvider.d.ts.map +1 -1
  99. package/dist/types/constants.d.ts +15 -2
  100. package/dist/types/constants.d.ts.map +1 -1
  101. package/dist/types/signers/LighterKeyStore.d.ts +31 -2
  102. package/dist/types/signers/LighterKeyStore.d.ts.map +1 -1
  103. package/dist/types/signers/LighterReadOnlyTokenManager.d.ts +23 -3
  104. package/dist/types/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  105. package/dist/types/signers/LighterSigner.d.ts +49 -7
  106. package/dist/types/signers/LighterSigner.d.ts.map +1 -1
  107. package/dist/types/signers/createAuthToken.d.ts +8 -2
  108. package/dist/types/signers/createAuthToken.d.ts.map +1 -1
  109. package/dist/types/signers/wasmLoader.d.ts +14 -2
  110. package/dist/types/signers/wasmLoader.d.ts.map +1 -1
  111. package/dist/types/types/account.d.ts +58 -8
  112. package/dist/types/types/account.d.ts.map +1 -1
  113. package/dist/types/types/action.d.ts +72 -18
  114. package/dist/types/types/action.d.ts.map +1 -1
  115. package/dist/types/types/activity.d.ts +64 -10
  116. package/dist/types/types/activity.d.ts.map +1 -1
  117. package/dist/types/types/asset.d.ts +72 -12
  118. package/dist/types/types/asset.d.ts.map +1 -1
  119. package/dist/types/types/fill.d.ts +14 -2
  120. package/dist/types/types/fill.d.ts.map +1 -1
  121. package/dist/types/types/order.d.ts +27 -4
  122. package/dist/types/types/order.d.ts.map +1 -1
  123. package/dist/types/types/submit.d.ts +26 -4
  124. package/dist/types/types/submit.d.ts.map +1 -1
  125. package/dist/types/types/ws.d.ts +56 -8
  126. package/dist/types/types/ws.d.ts.map +1 -1
  127. package/dist/types/utils/lighterAsset.d.ts +7 -1
  128. package/dist/types/utils/lighterAsset.d.ts.map +1 -1
  129. package/dist/types/utils/ohlcvInterval.d.ts +6 -1
  130. package/dist/types/utils/ohlcvInterval.d.ts.map +1 -1
  131. package/dist/types/utils/transferMargin.d.ts.map +1 -1
  132. package/dist/types/utils/wireEncoding.d.ts +58 -23
  133. package/dist/types/utils/wireEncoding.d.ts.map +1 -1
  134. package/dist/types/websocket/LighterWsProvider.d.ts +6 -0
  135. package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -1
  136. package/package.json +3 -3
  137. package/src/LighterProvider.ts +8 -0
  138. package/src/constants.ts +15 -2
  139. package/src/signers/LighterKeyStore.ts +31 -2
  140. package/src/signers/LighterReadOnlyTokenManager.ts +23 -3
  141. package/src/signers/LighterSigner.ts +49 -7
  142. package/src/signers/createAuthToken.ts +8 -2
  143. package/src/signers/wasmLoader.ts +14 -2
  144. package/src/types/account.ts +58 -8
  145. package/src/types/action.ts +72 -18
  146. package/src/types/activity.ts +64 -10
  147. package/src/types/asset.ts +72 -12
  148. package/src/types/fill.ts +14 -2
  149. package/src/types/order.ts +27 -4
  150. package/src/types/submit.ts +26 -4
  151. package/src/types/ws.ts +56 -8
  152. package/src/utils/lighterAsset.ts +7 -1
  153. package/src/utils/ohlcvInterval.ts +6 -1
  154. package/src/utils/transferMargin.ts +2 -6
  155. package/src/utils/wireEncoding.ts +58 -23
  156. package/src/websocket/LighterWsProvider.ts +6 -0
@@ -1,13 +1,30 @@
1
- /** @public */
1
+ /**
2
+ * Common envelope fields on every Lighter WebSocket frame.
3
+ *
4
+ * `channel` identifies the subscribed stream when present; `type` is the
5
+ * subscription, update, or control-frame discriminator.
6
+ *
7
+ * @public
8
+ */
2
9
  export type LtWsMessage = {
3
10
  channel?: string;
4
11
  type: string;
5
12
  };
6
- /** @public */
13
+ /**
14
+ * Lighter WebSocket keepalive frame.
15
+ *
16
+ * @public
17
+ */
7
18
  export type LtWsPingMessage = LtWsMessage & {
8
19
  type: 'ping';
9
20
  };
10
- /** @public */
21
+ /**
22
+ * Perpetual-market statistics pushed by Lighter's `market_stats` channels.
23
+ * Price, interest, volume, and funding values are decimal strings; the funding
24
+ * timestamp is a Unix timestamp in milliseconds.
25
+ *
26
+ * @public
27
+ */
11
28
  export type LtWsMarketStats = {
12
29
  market_id: number;
13
30
  index_price: string;
@@ -59,18 +76,32 @@ export type LtWsSpotMarketStatsAllMessage = LtWsMessage & {
59
76
  type: 'subscribed/spot_market_stats' | 'update/spot_market_stats';
60
77
  spot_market_stats?: LtWsSpotMarketStats | Record<string, LtWsSpotMarketStats>;
61
78
  };
62
- /** @public */
79
+ /**
80
+ * One bid or ask level in a Lighter order-book snapshot or delta. Price and
81
+ * size are decimal strings in the market's native precision.
82
+ *
83
+ * @public
84
+ */
63
85
  export type LtWsOrderBookLevel = {
64
86
  price: string;
65
87
  size: string;
66
88
  };
67
- /** @public */
89
+ /**
90
+ * Lighter order-book state containing ask and bid levels. `offset`, when
91
+ * present, identifies the sequence offset used for stateful delta updates.
92
+ *
93
+ * @public
94
+ */
68
95
  export type LtWsOrderBook = {
69
96
  asks: LtWsOrderBookLevel[];
70
97
  bids: LtWsOrderBookLevel[];
71
98
  offset?: number;
72
99
  };
73
- /** @public */
100
+ /**
101
+ * Subscription or update frame carrying a Lighter order-book snapshot/delta.
102
+ *
103
+ * @public
104
+ */
74
105
  export type LtWsOrderBookMessage = LtWsMessage & {
75
106
  type: 'subscribed/order_book' | 'update/order_book';
76
107
  order_book: LtWsOrderBook;
@@ -89,7 +120,11 @@ export type LtWsTrade = {
89
120
  is_maker_ask: boolean;
90
121
  timestamp: number;
91
122
  };
92
- /** @public */
123
+ /**
124
+ * Subscription or update frame carrying public trades from a Lighter market.
125
+ *
126
+ * @public
127
+ */
93
128
  export type LtWsTradeMessage = LtWsMessage & {
94
129
  type: 'subscribed/trade' | 'update/trade';
95
130
  trades?: LtWsTrade[];
@@ -118,7 +153,13 @@ export type LtWsAccountAllOrdersMessage = LtWsMessage & {
118
153
  orders?: Record<string, unknown[]> | unknown[];
119
154
  };
120
155
  };
121
- /** @public */
156
+ /**
157
+ * Authenticated account trade-history frame. Trade arrays may be flat or
158
+ * market-indexed depending on whether the frame is an initial snapshot or
159
+ * update.
160
+ *
161
+ * @public
162
+ */
122
163
  export type LtWsAccountAllTradesMessage = LtWsMessage & {
123
164
  type: 'subscribed/account_all_trades' | 'update/account_all_trades';
124
165
  trades?: Record<string, unknown[]> | unknown[];
@@ -149,6 +190,13 @@ export type LtWsUserStatsMessage = LtWsMessage & {
149
190
  };
150
191
  };
151
192
  };
193
+ /**
194
+ * Authenticated account-position frame. Position and funding maps are keyed
195
+ * by Lighter market index; the provider normalizes the payload before emitting
196
+ * account updates.
197
+ *
198
+ * @public
199
+ */
152
200
  export type LtWsAccountAllPositionsMessage = LtWsMessage & {
153
201
  type: 'subscribed/account_all_positions' | 'update/account_all_positions';
154
202
  positions?: Record<string, unknown>;
@@ -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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"}
@@ -1,4 +1,10 @@
1
1
  import type { Asset } from '@lifi/perps-types';
2
- /** @public */
2
+ /**
3
+ * Create the SDK asset descriptor for a Lighter asset identifier and display
4
+ * symbol. Lighter assets do not provide a package-level logo URI, so this
5
+ * helper leaves that field empty.
6
+ *
7
+ * @public
8
+ */
3
9
  export declare const lighterAsset: (id: string, displaySymbol: string) => Asset;
4
10
  //# sourceMappingURL=lighterAsset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lighterAsset.d.ts","sourceRoot":"","sources":["../../../src/utils/lighterAsset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,cAAc;AACd,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,EAAE,eAAe,MAAM,KAAG,KAK/D,CAAA"}
1
+ {"version":3,"file":"lighterAsset.d.ts","sourceRoot":"","sources":["../../../src/utils/lighterAsset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,EAAE,eAAe,MAAM,KAAG,KAK/D,CAAA"}
@@ -1,3 +1,8 @@
1
- /** @public */
1
+ /**
2
+ * Validate and map an SDK OHLCV interval to Lighter's resolution string.
3
+ * Unsupported intervals raise a validation error instead of being rounded.
4
+ *
5
+ * @public
6
+ */
2
7
  export declare const mapInterval: (interval: string) => string;
3
8
  //# sourceMappingURL=ohlcvInterval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ohlcvInterval.d.ts","sourceRoot":"","sources":["../../../src/utils/ohlcvInterval.ts"],"names":[],"mappings":"AAsBA,cAAc;AACd,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAU9C,CAAA"}
1
+ {"version":3,"file":"ohlcvInterval.d.ts","sourceRoot":"","sources":["../../../src/utils/ohlcvInterval.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAU9C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEb,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAA;AAK1B;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,GACjB,yBAAyB,GAAG,SAAS,CAcvC"}
1
+ {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,yBAAyB,EAE/B,MAAM,mBAAmB,CAAA;AAK1B;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,GACjB,yBAAyB,GAAG,SAAS,CAWvC"}
@@ -1,49 +1,84 @@
1
1
  /**
2
- * Lighter wire encoding for the WASM signer: scaled-integer decimal values,
3
- * basis-point margin fractions, and order-type/TIF/expiry resolution
4
- * mirroring the lighter-go signer's rules.
2
+ * Lighter wire encoding for the WASM signer: basis-point margin fractions and
3
+ * order-type/time-in-force/expiry resolution mirroring lighter-go's rules.
5
4
  */
6
5
  /**
7
- * Lighter uses basis-points (1/10000) for margin fractions.
8
- * Convert to a decimal multiplier: 1000 → 0.1 (10x leverage).
6
+ * Convert Lighter's initial-margin fraction to the largest whole-number
7
+ * leverage exposed by the provider.
8
+ *
9
+ * Lighter expresses margin fractions in basis points (`10_000` = 100%), so
10
+ * the conversion is `floor(10_000 / fraction)`. Non-finite or non-positive
11
+ * input uses the safe `1x` fallback.
12
+ *
13
+ * @param fraction - Lighter's basis-point initial-margin fraction.
14
+ * @returns The floored maximum leverage, or `1` for invalid input.
9
15
  * @public
10
16
  */
11
17
  export declare const marginFractionToMaxLeverage: (fraction: number) => number;
12
18
  /**
13
- * Convert leverage to margin fraction in basis points for WASM signer.
19
+ * Convert requested leverage to Lighter's basis-point margin fraction.
20
+ *
21
+ * The signer expects `round(10_000 / leverage)`, where the result is the
22
+ * margin requirement in basis points.
23
+ *
24
+ * @param leverage - Requested leverage multiplier.
25
+ * @returns The rounded basis-point margin fraction.
26
+ * @throws {PerpsError} With `ValidationError` when leverage is less than
27
+ * or equal to zero.
14
28
  * @public
15
29
  */
16
30
  export declare const leverageToFraction: (leverage: number) => number;
17
31
  /**
18
- * Map our OrderType enum to Lighter's integer order type.
32
+ * Map a LI.FI `OrderType` value to Lighter's integer wire type.
33
+ *
34
+ * Supported mappings are LIMIT → 0, MARKET → 1, STOP_MARKET → 2,
35
+ * STOP_LIMIT → 3, TAKE_PROFIT_MARKET → 4, and TAKE_PROFIT_LIMIT → 5.
36
+ * Omitted or unknown values fall back to LIMIT.
37
+ *
38
+ * @param type - LI.FI order type value.
39
+ * @returns The corresponding Lighter order-type integer.
19
40
  * @public
20
41
  */
21
42
  export declare const mapOrderTypeToInt: (type?: string) => number;
22
43
  /**
23
- * Lighter pairs each `order_type` with a permitted set of `time_in_force`
24
- * values: market-style orders (MARKET, STOP_MARKET, TAKE_PROFIT_MARKET) are
25
- * IOC by definition; limit-style orders may carry any TIF. The Go WASM
26
- * signer rejects mismatches with `OrderTimeInForce is not valid`. Resolve
27
- * the caller's optional `timeInForce` against the order type so unspecified
28
- * values land on the correct default and explicit values are validated up
29
- * front.
44
+ * Resolve a Lighter `time_in_force` value that is valid for an order type.
45
+ *
46
+ * Market-style orders (MARKET, STOP_MARKET, TAKE_PROFIT_MARKET) are IOC-only.
47
+ * Limit-style orders default to GTC when no TIF is supplied. An explicit
48
+ * non-IOC TIF on a market-style order raises a validation error. For
49
+ * limit-style orders, unknown TIF strings use the GTC fallback from
50
+ * {@link mapTimeInForceToInt}.
51
+ *
52
+ * @param orderTypeInt - Lighter order-type integer.
53
+ * @param tif - Optional LI.FI time-in-force value.
54
+ * @returns The validated Lighter time-in-force integer.
55
+ * @throws {PerpsError} With `ValidationError` for a market-style/TIF mismatch.
30
56
  * @public
31
57
  */
32
58
  export declare const resolveTimeInForce: (orderTypeInt: number, tif?: string) => number;
33
59
  /**
34
- * Map our TimeInForce enum to Lighter's integer time-in-force.
60
+ * Map a LI.FI time-in-force value to Lighter's integer wire value.
61
+ *
62
+ * IOC maps to 0, GTC maps to 1, and POST_ONLY maps to 2. Omitted or unknown
63
+ * values fall back to GTC.
64
+ *
65
+ * @param tif - LI.FI time-in-force value.
66
+ * @returns The corresponding Lighter time-in-force integer.
35
67
  * @public
36
68
  */
37
69
  export declare const mapTimeInForceToInt: (tif?: string) => number;
38
70
  /**
39
- * Pick the `order_expiry` value Lighter expects for a given TIF on a
40
- * regular limit order. `lighter-go/types/txtypes/create_order.go:121-128`
41
- * enforces:
42
- * - IOC limit orders → `OrderExpiry == NilOrderExpiry (0)`
43
- * - non-IOC limit orders → `OrderExpiry != NilOrderExpiry`
44
- * For non-IOC we pass the `-1` sentinel, which the WASM signer rewrites
45
- * to `now + 28d` (absolute ms). Trigger orders take a different rule —
46
- * see {@link LT_DEFAULT_ORDER_EXPIRY} call sites.
71
+ * Select the `order_expiry` sentinel required for a regular Lighter limit
72
+ * order from its resolved time-in-force.
73
+ *
74
+ * IOC uses Lighter's nil expiry (`0`). Every other TIF uses
75
+ * `LT_DEFAULT_ORDER_EXPIRY` (`-1`), which the WASM signer expands to its
76
+ * canonical future expiry (`now + 28d`) as an absolute Unix-millisecond
77
+ * timestamp. Trigger-order expiry handling is provider-specific; see
78
+ * {@link LT_DEFAULT_ORDER_EXPIRY} and its call sites.
79
+ *
80
+ * @param tifInt - Lighter time-in-force integer.
81
+ * @returns `0` for IOC, otherwise the default-expiry sentinel.
47
82
  * @public
48
83
  */
49
84
  export declare const orderExpiryForTif: (tifInt: number) => number;
@@ -1 +1 @@
1
- {"version":3,"file":"wireEncoding.d.ts","sourceRoot":"","sources":["../../../src/utils/wireEncoding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,KAAG,MAK9D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,MAQrD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAUjD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,MAAM,MAAM,KACX,MAgBF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,MAOlD,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAKlD,CAAA"}
1
+ {"version":3,"file":"wireEncoding.d.ts","sourceRoot":"","sources":["../../../src/utils/wireEncoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,KAAG,MAK9D,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,MAQrD,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAUjD,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,MAAM,MAAM,KACX,MAgBF,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,MAOlD,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAKlD,CAAA"}
@@ -69,6 +69,12 @@ export declare class LighterWsProvider extends WsProviderBase<SubState> {
69
69
  * `resolveAuthToken`. `undefined` when neither is available.
70
70
  */
71
71
  private authTokenResolver;
72
+ /**
73
+ * Subscribe to a live quote stream resolved through the registered Lighter
74
+ * market registry. Returns an unsubscribe function; quote subscription
75
+ * requires the provider to be constructed through `lighterWsProvider` with a
76
+ * bound {@link PerpsSDKClient}.
77
+ */
72
78
  subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
73
79
  protected openChannel(sub: Subscription): Promise<() => void>;
74
80
  protected onClose(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"LighterWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAKlB,cAAc,EACd,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAIV,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AA4EnC;;;;;;;;;;;;;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;AAkBD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;CAC5C;AAED;;;;;;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,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;IAWnB,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;cA4ChD,OAAO,IAAI,IAAI;cAMlB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,OAAO,GACR,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;YA2B5B,cAAc;YAsFd,mBAAmB;YAqBnB,iBAAiB;IAK/B,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqB1C,OAAO,CAAC,QAAQ;IAkFhB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAuDvB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,sBAAsB;IAiC9B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,mBAAmB;CAc5B;AAkID;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAC3B,UAAU,wBAAwB,KAAG,iBAEmB,CAAA"}
1
+ {"version":3,"file":"LighterWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAKlB,cAAc,EACd,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAIV,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AA4EnC;;;;;;;;;;;;;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;AAkBD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;CAC5C;AAED;;;;;;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,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;cA4ChD,OAAO,IAAI,IAAI;cAMlB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,OAAO,GACR,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;YA2B5B,cAAc;YAsFd,mBAAmB;YAqBnB,iBAAiB;IAK/B,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqB1C,OAAO,CAAC,QAAQ;IAkFhB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAuDvB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,sBAAsB;IAiC9B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,iBAAiB;IAuCzB,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,mBAAmB;CAc5B;AAkID;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iBAAiB,GAC3B,UAAU,wBAAwB,KAAG,iBAEmB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-lighter",
3
- "version": "8.0.0",
3
+ "version": "8.1.0",
4
4
  "description": "Lighter provider plugin for @lifi/perps-sdk",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -46,10 +46,10 @@
46
46
  "dependencies": {
47
47
  "big.js": "^7.0.1",
48
48
  "viem": "^2.48.8",
49
- "@lifi/perps-types": "^4.0.0"
49
+ "@lifi/perps-types": "^4.2.0"
50
50
  },
51
51
  "peerDependencies": {
52
- "@lifi/perps-sdk": "^6.0.0"
52
+ "@lifi/perps-sdk": "^6.2.0"
53
53
  },
54
54
  "publishConfig": {
55
55
  "access": "public"
@@ -1359,6 +1359,14 @@ export const lighterProvider = (
1359
1359
  return { knownPublicKey: local.apiKeyPublicKey }
1360
1360
  },
1361
1361
 
1362
+ /**
1363
+ * Lighter's WASM signer computes the L2 tx hash before submission, so an
1364
+ * execute result carries it and resolves against this instance's explorer.
1365
+ */
1366
+ resolveExplorerLink(txHash: string): string | undefined {
1367
+ return explorerTxUrlFromBase(explorerTxBaseUrl, txHash)
1368
+ },
1369
+
1362
1370
  async signActions(
1363
1371
  method: SigningMethod,
1364
1372
  steps: ActionStep[],
package/src/constants.ts CHANGED
@@ -22,6 +22,11 @@ export const LIGHTER_SPOT_CATEGORY_ID = 'spot'
22
22
  * @public
23
23
  */
24
24
  export const DEFAULT_LIGHTER_REST_URL = 'https://mainnet.zklighter.elliot.ai'
25
+ /**
26
+ * Default mainnet WebSocket stream URL for Lighter.
27
+ *
28
+ * @public
29
+ */
25
30
  export const DEFAULT_LIGHTER_WS_URL = 'wss://mainnet.zklighter.elliot.ai/stream'
26
31
 
27
32
  /**
@@ -85,9 +90,17 @@ export const LIGHTER_MAINNET_INSTANCE: LighterInstanceConfig = {
85
90
  */
86
91
  export const LIGHTER_RH_PROVIDER_KEY = 'lighter-rh'
87
92
 
88
- /** @public */
93
+ /**
94
+ * Default REST base URL for the Lighter Robinhood deployment.
95
+ *
96
+ * @public
97
+ */
89
98
  export const LIGHTER_RH_REST_URL = 'https://api.rh.lighter.xyz'
90
- /** @public */
99
+ /**
100
+ * Default WebSocket URL for the Lighter Robinhood deployment.
101
+ *
102
+ * @public
103
+ */
91
104
  export const LIGHTER_RH_WS_URL = 'wss://api.rh.lighter.xyz/stream'
92
105
 
93
106
  /**
@@ -11,7 +11,13 @@ import { LIGHTER_PROVIDER_KEY } from '../constants.js'
11
11
 
12
12
  const STORAGE_PREFIX = 'lifi-perps-lighter-key'
13
13
 
14
- /** @public */
14
+ /**
15
+ * Persisted Lighter API-key material associated with one L2 account.
16
+ * `apiKeyPrivateKey` is a Lighter-native signing key, not an Ethereum key;
17
+ * `apiKeyIndex` identifies its registered on-chain slot.
18
+ *
19
+ * @public
20
+ */
15
21
  export interface LighterApiKey {
16
22
  /** Lighter account index, looked up once via accountsByL1Address. */
17
23
  accountIndex: number
@@ -41,12 +47,23 @@ const isLighterApiKey = (value: unknown): value is LighterApiKey => {
41
47
  )
42
48
  }
43
49
 
44
- /** @public */
50
+ /**
51
+ * Storage-backed cache for Lighter API keys. Records are namespaced by L1
52
+ * address and provider instance so multiple Lighter deployments can share one
53
+ * {@link StorageAdapter} without collisions.
54
+ *
55
+ * @public
56
+ */
45
57
  export class LighterKeyStore {
46
58
  private readonly storage: StorageAdapter
47
59
  private readonly cache = new Map<string, LighterApiKey>()
48
60
  private providerKey: LighterProviderKey
49
61
 
62
+ /**
63
+ * Create a key store using `storage` and the optional provider namespace.
64
+ * The default provider key preserves the package's standard Lighter storage
65
+ * namespace.
66
+ */
50
67
  constructor(
51
68
  storage: StorageAdapter,
52
69
  providerKey: LighterProviderKey = LIGHTER_PROVIDER_KEY
@@ -74,6 +91,10 @@ export class LighterKeyStore {
74
91
  : `${STORAGE_PREFIX}:${this.providerKey}:${lower}`
75
92
  }
76
93
 
94
+ /**
95
+ * Load the API key for an L1 address, or `null` when no valid record exists.
96
+ * Invalid persisted records are ignored by the storage validation boundary.
97
+ */
77
98
  async get(address: Address): Promise<LighterApiKey | null> {
78
99
  const key = this.storageKey(address)
79
100
  const cached = this.cache.get(key)
@@ -88,12 +109,20 @@ export class LighterKeyStore {
88
109
  return parsed
89
110
  }
90
111
 
112
+ /**
113
+ * Persist an API key for an L1 address, replacing any existing record under
114
+ * that provider namespace.
115
+ */
91
116
  async set(address: Address, value: LighterApiKey): Promise<void> {
92
117
  const key = this.storageKey(address)
93
118
  this.cache.set(key, value)
94
119
  await this.storage.set(key, JSON.stringify(value))
95
120
  }
96
121
 
122
+ /**
123
+ * Remove the persisted API key for an L1 address and clear its in-memory
124
+ * cache entry.
125
+ */
97
126
  async remove(address: Address): Promise<void> {
98
127
  const key = this.storageKey(address)
99
128
  this.cache.delete(key)
@@ -69,7 +69,13 @@ export type LighterTokenFetcher = (params: {
69
69
  scopes: string
70
70
  }) => Promise<LighterCreateTokenResponse>
71
71
 
72
- /** @public */
72
+ /**
73
+ * Dependencies and overrides for {@link LighterReadOnlyTokenManager}.
74
+ * Storage and token-fetching defaults target the browser's local storage and
75
+ * Lighter's mainnet REST API.
76
+ *
77
+ * @public
78
+ */
73
79
  export interface LighterReadOnlyTokenManagerOptions {
74
80
  storage?: StorageAdapter
75
81
  /**
@@ -87,13 +93,23 @@ export interface LighterReadOnlyTokenManagerOptions {
87
93
  now?: () => number
88
94
  }
89
95
 
90
- /** @public */
96
+ /**
97
+ * Input to the read-only-token approval flow. Extends the shared approval
98
+ * parameters with the L1 address whose wallet authorizes token creation.
99
+ *
100
+ * @public
101
+ */
91
102
  export interface ApproveReadOnlyTokenInputs extends ApproveReadOnlyTokenParams {
92
103
  /** L1 wallet address that signs the create message. */
93
104
  address: Address
94
105
  }
95
106
 
96
- /** @public */
107
+ /**
108
+ * Result of approving or creating a Lighter read-only token. `config` is the
109
+ * account-state projection callers can persist alongside the token.
110
+ *
111
+ * @public
112
+ */
97
113
  export interface ApproveReadOnlyTokenResult {
98
114
  token: LighterReadOnlyToken
99
115
  /** Projection of the post-create Lighter account state. */
@@ -239,6 +255,10 @@ export class LighterReadOnlyTokenManager {
239
255
  await this.storage.set(key, JSON.stringify(token))
240
256
  }
241
257
 
258
+ /**
259
+ * Remove the stored token for an `(address, accountIndex)` pair and clear
260
+ * the corresponding cache entry.
261
+ */
242
262
  async remove(address: Address, accountIndex: number): Promise<void> {
243
263
  const key = this.storageKey(address, accountIndex)
244
264
  this.cache.delete(key)
@@ -21,7 +21,13 @@ import {
21
21
  // is process-global inside the Go runtime; we track which keys are already
22
22
  // initialized so CreateClient runs once per keypair.
23
23
 
24
- /** @public */
24
+ /**
25
+ * Credentials needed to initialize the Lighter WASM client for one account
26
+ * and API-key slot. The private key is Lighter-native signing material; the
27
+ * account and slot indexes select the registered L2 key.
28
+ *
29
+ * @public
30
+ */
25
31
  export interface LighterSignerContext {
26
32
  /** Lighter-native private key (from GenerateAPIKey, NOT an Ethereum key). */
27
33
  apiKeyPrivateKey: string
@@ -31,7 +37,12 @@ export interface LighterSignerContext {
31
37
  accountIndex: number
32
38
  }
33
39
 
34
- /** @public */
40
+ /**
41
+ * Configuration for {@link LighterSigner}, including optional WASM asset
42
+ * overrides and the Lighter REST base URL and signing chain ID.
43
+ *
44
+ * @public
45
+ */
35
46
  export interface LighterSignerConfig extends LoadLighterWasmOptions {
36
47
  /** Lighter REST API base URL. */
37
48
  apiUrl?: string
@@ -39,26 +50,47 @@ export interface LighterSignerConfig extends LoadLighterWasmOptions {
39
50
  chainId?: number
40
51
  }
41
52
 
42
- /** @public */
53
+ /**
54
+ * Signed Lighter transaction blob returned by the WASM signer. `txType`,
55
+ * `txInfo`, and `txHash` are passed to the venue's transaction submission
56
+ * endpoint; `txInfo` is an encoded transaction payload.
57
+ *
58
+ * @public
59
+ */
43
60
  export interface LighterSignedBlob {
44
61
  txType: number
45
62
  txInfo: string
46
63
  txHash: string
47
64
  }
48
65
 
49
- /** @public */
66
+ /**
67
+ * Signed REGISTER_API_KEY (ChangePubKey) result, including the EIP-191 message
68
+ * that the user's L1 wallet must countersign before submission.
69
+ *
70
+ * @public
71
+ */
50
72
  export interface ChangePubKeyResult extends LighterSignedBlob {
51
73
  /** EIP-191 message the L1 Ethereum wallet must sign to authorize the key rotation. */
52
74
  messageToSign: string
53
75
  }
54
76
 
55
- /** @public */
77
+ /**
78
+ * Signed APPROVE_INTEGRATOR result, including the EIP-191 L1 message required
79
+ * to authorize the integrator approval.
80
+ *
81
+ * @public
82
+ */
56
83
  export interface ApproveIntegratorResult extends LighterSignedBlob {
57
84
  /** EIP-191 `L2ApproveIntegrator` L1 body the user's wallet must countersign to authorize the integrator approval. */
58
85
  messageToSign: string
59
86
  }
60
87
 
61
- /** @public */
88
+ /**
89
+ * Lighter-native API keypair generated by the WASM signer. These keys are
90
+ * distinct from an Ethereum wallet keypair.
91
+ *
92
+ * @public
93
+ */
62
94
  export interface ApiKeyPair {
63
95
  publicKey: string
64
96
  privateKey: string
@@ -94,7 +126,13 @@ const LIGHTER_ROUTE_BY_DEX: Record<string, number> = {
94
126
  spot: LT_ROUTE_SPOT,
95
127
  }
96
128
 
97
- /** @public */
129
+ /**
130
+ * WASM-backed signer for Lighter API-key transactions and L1-countersigned
131
+ * hybrid flows. The instance memoizes WASM initialization and registered
132
+ * `(apiKeyIndex, accountIndex)` clients.
133
+ *
134
+ * @public
135
+ */
98
136
  export class LighterSigner {
99
137
  private readonly apiUrl: string
100
138
  private readonly chainId: number
@@ -112,6 +150,10 @@ export class LighterSigner {
112
150
  }
113
151
  }
114
152
 
153
+ /**
154
+ * Load and cache the Go WASM signer exports. Most signing methods initialize
155
+ * lazily, so callers only need this method when they want an explicit warm-up.
156
+ */
115
157
  async initialize(): Promise<void> {
116
158
  if (!this.wasm) {
117
159
  this.wasm = await loadLighterWasm(this.loaderOptions)
@@ -5,7 +5,13 @@ import type { LighterSigner } from './LighterSigner.js'
5
5
  const DEFAULT_LIFETIME_SECONDS = 60 * 60
6
6
  const DEFAULT_THRESHOLD_SECONDS = 30 * 86_400
7
7
 
8
- /** @public */
8
+ /**
9
+ * Inputs for creating a standard Lighter auth token. The signer and API-key
10
+ * fields identify the registered Lighter account; `lifetimeSeconds` is capped
11
+ * by Lighter's token policy and defaults to one hour.
12
+ *
13
+ * @public
14
+ */
9
15
  export interface CreateAuthTokenInputs {
10
16
  signer: LighterSigner
11
17
  apiKey: Pick<
@@ -17,7 +23,7 @@ export interface CreateAuthTokenInputs {
17
23
  * Defaults to 1 hour, matching the previous `PerpsClient` behaviour.
18
24
  */
19
25
  lifetimeSeconds?: number
20
- /** Optional clock injection for tests. */
26
+ /** Optional clock injection for deterministic token-expiry tests. */
21
27
  now?: () => number
22
28
  }
23
29