@lifi/perps-sdk-provider-lighter 7.0.0 → 8.0.1

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 (214) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +60 -27
  3. package/dist/cjs/LighterProvider.js.map +1 -1
  4. package/dist/cjs/accountSummary.d.ts.map +1 -1
  5. package/dist/cjs/accountSummary.js +33 -2
  6. package/dist/cjs/accountSummary.js.map +1 -1
  7. package/dist/cjs/constants.d.ts.map +1 -1
  8. package/dist/cjs/constants.js.map +1 -1
  9. package/dist/cjs/signers/LighterKeyStore.d.ts.map +1 -1
  10. package/dist/cjs/signers/LighterKeyStore.js.map +1 -1
  11. package/dist/cjs/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  12. package/dist/cjs/signers/LighterReadOnlyTokenManager.js.map +1 -1
  13. package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
  14. package/dist/cjs/signers/LighterSigner.js.map +1 -1
  15. package/dist/cjs/signers/createAuthToken.d.ts.map +1 -1
  16. package/dist/cjs/signers/createAuthToken.js.map +1 -1
  17. package/dist/cjs/signers/wasmLoader.d.ts.map +1 -1
  18. package/dist/cjs/signers/wasmLoader.js.map +1 -1
  19. package/dist/cjs/types/account.d.ts +1 -0
  20. package/dist/cjs/types/account.d.ts.map +1 -1
  21. package/dist/cjs/types/action.d.ts.map +1 -1
  22. package/dist/cjs/types/action.js.map +1 -1
  23. package/dist/cjs/types/activity.d.ts.map +1 -1
  24. package/dist/cjs/types/asset.d.ts.map +1 -1
  25. package/dist/cjs/types/fill.d.ts.map +1 -1
  26. package/dist/cjs/types/order.d.ts.map +1 -1
  27. package/dist/cjs/types/submit.d.ts.map +1 -1
  28. package/dist/cjs/types/ws.d.ts +5 -0
  29. package/dist/cjs/types/ws.d.ts.map +1 -1
  30. package/dist/cjs/utils/decimal.d.ts +5 -0
  31. package/dist/cjs/utils/decimal.d.ts.map +1 -0
  32. package/dist/cjs/utils/decimal.js +38 -0
  33. package/dist/cjs/utils/decimal.js.map +1 -0
  34. package/dist/cjs/utils/index.d.ts +3 -1
  35. package/dist/cjs/utils/index.d.ts.map +1 -1
  36. package/dist/cjs/utils/index.js +7 -1
  37. package/dist/cjs/utils/index.js.map +1 -1
  38. package/dist/cjs/utils/lighterAsset.d.ts.map +1 -1
  39. package/dist/cjs/utils/lighterAsset.js.map +1 -1
  40. package/dist/cjs/utils/mapOpenPositions.d.ts +2 -2
  41. package/dist/cjs/utils/mapOpenPositions.d.ts.map +1 -1
  42. package/dist/cjs/utils/mapOpenPositions.js.map +1 -1
  43. package/dist/cjs/utils/mapPosition.d.ts +3 -2
  44. package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
  45. package/dist/cjs/utils/mapPosition.js +30 -9
  46. package/dist/cjs/utils/mapPosition.js.map +1 -1
  47. package/dist/cjs/utils/ohlcvInterval.d.ts.map +1 -1
  48. package/dist/cjs/utils/ohlcvInterval.js.map +1 -1
  49. package/dist/cjs/utils/transferMargin.d.ts +3 -0
  50. package/dist/cjs/utils/transferMargin.d.ts.map +1 -0
  51. package/dist/cjs/utils/transferMargin.js +16 -0
  52. package/dist/cjs/utils/transferMargin.js.map +1 -0
  53. package/dist/cjs/utils/wireEncoding.d.ts.map +1 -1
  54. package/dist/cjs/utils/wireEncoding.js.map +1 -1
  55. package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -1
  56. package/dist/cjs/websocket/LighterWsProvider.js +20 -9
  57. package/dist/cjs/websocket/LighterWsProvider.js.map +1 -1
  58. package/dist/esm/LighterProvider.d.ts.map +1 -1
  59. package/dist/esm/LighterProvider.js +49 -11
  60. package/dist/esm/LighterProvider.js.map +1 -1
  61. package/dist/esm/accountSummary.d.ts +5 -4
  62. package/dist/esm/accountSummary.d.ts.map +1 -1
  63. package/dist/esm/accountSummary.js +35 -6
  64. package/dist/esm/accountSummary.js.map +1 -1
  65. package/dist/esm/constants.d.ts +15 -2
  66. package/dist/esm/constants.d.ts.map +1 -1
  67. package/dist/esm/constants.js +15 -2
  68. package/dist/esm/constants.js.map +1 -1
  69. package/dist/esm/signers/LighterKeyStore.d.ts +31 -2
  70. package/dist/esm/signers/LighterKeyStore.d.ts.map +1 -1
  71. package/dist/esm/signers/LighterKeyStore.js +24 -1
  72. package/dist/esm/signers/LighterKeyStore.js.map +1 -1
  73. package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts +23 -3
  74. package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  75. package/dist/esm/signers/LighterReadOnlyTokenManager.js +4 -0
  76. package/dist/esm/signers/LighterReadOnlyTokenManager.js.map +1 -1
  77. package/dist/esm/signers/LighterSigner.d.ts +49 -7
  78. package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
  79. package/dist/esm/signers/LighterSigner.js +11 -1
  80. package/dist/esm/signers/LighterSigner.js.map +1 -1
  81. package/dist/esm/signers/createAuthToken.d.ts +8 -2
  82. package/dist/esm/signers/createAuthToken.d.ts.map +1 -1
  83. package/dist/esm/signers/createAuthToken.js.map +1 -1
  84. package/dist/esm/signers/wasmLoader.d.ts +14 -2
  85. package/dist/esm/signers/wasmLoader.d.ts.map +1 -1
  86. package/dist/esm/signers/wasmLoader.js.map +1 -1
  87. package/dist/esm/types/account.d.ts +61 -8
  88. package/dist/esm/types/account.d.ts.map +1 -1
  89. package/dist/esm/types/action.d.ts +72 -18
  90. package/dist/esm/types/action.d.ts.map +1 -1
  91. package/dist/esm/types/action.js +72 -18
  92. package/dist/esm/types/action.js.map +1 -1
  93. package/dist/esm/types/activity.d.ts +64 -10
  94. package/dist/esm/types/activity.d.ts.map +1 -1
  95. package/dist/esm/types/asset.d.ts +72 -12
  96. package/dist/esm/types/asset.d.ts.map +1 -1
  97. package/dist/esm/types/fill.d.ts +14 -2
  98. package/dist/esm/types/fill.d.ts.map +1 -1
  99. package/dist/esm/types/order.d.ts +27 -4
  100. package/dist/esm/types/order.d.ts.map +1 -1
  101. package/dist/esm/types/submit.d.ts +26 -4
  102. package/dist/esm/types/submit.d.ts.map +1 -1
  103. package/dist/esm/types/ws.d.ts +65 -9
  104. package/dist/esm/types/ws.d.ts.map +1 -1
  105. package/dist/esm/utils/decimal.d.ts +15 -0
  106. package/dist/esm/utils/decimal.d.ts.map +1 -0
  107. package/dist/esm/utils/decimal.js +39 -0
  108. package/dist/esm/utils/decimal.js.map +1 -0
  109. package/dist/esm/utils/index.d.ts +3 -1
  110. package/dist/esm/utils/index.d.ts.map +1 -1
  111. package/dist/esm/utils/index.js +3 -1
  112. package/dist/esm/utils/index.js.map +1 -1
  113. package/dist/esm/utils/lighterAsset.d.ts +7 -1
  114. package/dist/esm/utils/lighterAsset.d.ts.map +1 -1
  115. package/dist/esm/utils/lighterAsset.js +7 -1
  116. package/dist/esm/utils/lighterAsset.js.map +1 -1
  117. package/dist/esm/utils/mapOpenPositions.d.ts +2 -2
  118. package/dist/esm/utils/mapOpenPositions.d.ts.map +1 -1
  119. package/dist/esm/utils/mapOpenPositions.js.map +1 -1
  120. package/dist/esm/utils/mapPosition.d.ts +10 -2
  121. package/dist/esm/utils/mapPosition.d.ts.map +1 -1
  122. package/dist/esm/utils/mapPosition.js +32 -11
  123. package/dist/esm/utils/mapPosition.js.map +1 -1
  124. package/dist/esm/utils/ohlcvInterval.d.ts +6 -1
  125. package/dist/esm/utils/ohlcvInterval.d.ts.map +1 -1
  126. package/dist/esm/utils/ohlcvInterval.js +6 -1
  127. package/dist/esm/utils/ohlcvInterval.js.map +1 -1
  128. package/dist/esm/utils/transferMargin.d.ts +11 -0
  129. package/dist/esm/utils/transferMargin.d.ts.map +1 -0
  130. package/dist/esm/utils/transferMargin.js +21 -0
  131. package/dist/esm/utils/transferMargin.js.map +1 -0
  132. package/dist/esm/utils/wireEncoding.d.ts +58 -23
  133. package/dist/esm/utils/wireEncoding.d.ts.map +1 -1
  134. package/dist/esm/utils/wireEncoding.js +58 -23
  135. package/dist/esm/utils/wireEncoding.js.map +1 -1
  136. package/dist/esm/websocket/LighterWsProvider.d.ts +6 -0
  137. package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -1
  138. package/dist/esm/websocket/LighterWsProvider.js +30 -13
  139. package/dist/esm/websocket/LighterWsProvider.js.map +1 -1
  140. package/dist/types/LighterProvider.d.ts.map +1 -1
  141. package/dist/types/accountSummary.d.ts +5 -4
  142. package/dist/types/accountSummary.d.ts.map +1 -1
  143. package/dist/types/constants.d.ts +15 -2
  144. package/dist/types/constants.d.ts.map +1 -1
  145. package/dist/types/signers/LighterKeyStore.d.ts +31 -2
  146. package/dist/types/signers/LighterKeyStore.d.ts.map +1 -1
  147. package/dist/types/signers/LighterReadOnlyTokenManager.d.ts +23 -3
  148. package/dist/types/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  149. package/dist/types/signers/LighterSigner.d.ts +49 -7
  150. package/dist/types/signers/LighterSigner.d.ts.map +1 -1
  151. package/dist/types/signers/createAuthToken.d.ts +8 -2
  152. package/dist/types/signers/createAuthToken.d.ts.map +1 -1
  153. package/dist/types/signers/wasmLoader.d.ts +14 -2
  154. package/dist/types/signers/wasmLoader.d.ts.map +1 -1
  155. package/dist/types/types/account.d.ts +61 -8
  156. package/dist/types/types/account.d.ts.map +1 -1
  157. package/dist/types/types/action.d.ts +72 -18
  158. package/dist/types/types/action.d.ts.map +1 -1
  159. package/dist/types/types/activity.d.ts +64 -10
  160. package/dist/types/types/activity.d.ts.map +1 -1
  161. package/dist/types/types/asset.d.ts +72 -12
  162. package/dist/types/types/asset.d.ts.map +1 -1
  163. package/dist/types/types/fill.d.ts +14 -2
  164. package/dist/types/types/fill.d.ts.map +1 -1
  165. package/dist/types/types/order.d.ts +27 -4
  166. package/dist/types/types/order.d.ts.map +1 -1
  167. package/dist/types/types/submit.d.ts +26 -4
  168. package/dist/types/types/submit.d.ts.map +1 -1
  169. package/dist/types/types/ws.d.ts +65 -9
  170. package/dist/types/types/ws.d.ts.map +1 -1
  171. package/dist/types/utils/decimal.d.ts +15 -0
  172. package/dist/types/utils/decimal.d.ts.map +1 -0
  173. package/dist/types/utils/index.d.ts +3 -1
  174. package/dist/types/utils/index.d.ts.map +1 -1
  175. package/dist/types/utils/lighterAsset.d.ts +7 -1
  176. package/dist/types/utils/lighterAsset.d.ts.map +1 -1
  177. package/dist/types/utils/mapOpenPositions.d.ts +2 -2
  178. package/dist/types/utils/mapOpenPositions.d.ts.map +1 -1
  179. package/dist/types/utils/mapPosition.d.ts +10 -2
  180. package/dist/types/utils/mapPosition.d.ts.map +1 -1
  181. package/dist/types/utils/ohlcvInterval.d.ts +6 -1
  182. package/dist/types/utils/ohlcvInterval.d.ts.map +1 -1
  183. package/dist/types/utils/transferMargin.d.ts +11 -0
  184. package/dist/types/utils/transferMargin.d.ts.map +1 -0
  185. package/dist/types/utils/wireEncoding.d.ts +58 -23
  186. package/dist/types/utils/wireEncoding.d.ts.map +1 -1
  187. package/dist/types/websocket/LighterWsProvider.d.ts +6 -0
  188. package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -1
  189. package/package.json +3 -3
  190. package/src/LighterProvider.ts +75 -9
  191. package/src/accountSummary.ts +38 -6
  192. package/src/constants.ts +15 -2
  193. package/src/signers/LighterKeyStore.ts +31 -2
  194. package/src/signers/LighterReadOnlyTokenManager.ts +23 -3
  195. package/src/signers/LighterSigner.ts +49 -7
  196. package/src/signers/createAuthToken.ts +8 -2
  197. package/src/signers/wasmLoader.ts +14 -2
  198. package/src/types/account.ts +61 -8
  199. package/src/types/action.ts +72 -18
  200. package/src/types/activity.ts +64 -10
  201. package/src/types/asset.ts +72 -12
  202. package/src/types/fill.ts +14 -2
  203. package/src/types/order.ts +27 -4
  204. package/src/types/submit.ts +26 -4
  205. package/src/types/ws.ts +65 -9
  206. package/src/utils/decimal.ts +52 -0
  207. package/src/utils/index.ts +3 -1
  208. package/src/utils/lighterAsset.ts +7 -1
  209. package/src/utils/mapOpenPositions.ts +2 -2
  210. package/src/utils/mapPosition.ts +40 -14
  211. package/src/utils/ohlcvInterval.ts +6 -1
  212. package/src/utils/transferMargin.ts +31 -0
  213. package/src/utils/wireEncoding.ts +58 -23
  214. package/src/websocket/LighterWsProvider.ts +47 -11
@@ -1,10 +1,21 @@
1
- /** @public */
1
+ /**
2
+ * Request body for Lighter's `/api/v1/sendTx` endpoint. `tx_type` and
3
+ * `tx_info` are the signed WASM transaction envelope; `price_protection` is an
4
+ * optional venue-side execution guard.
5
+ *
6
+ * @public
7
+ */
2
8
  export interface LtSendTxRequest {
3
9
  tx_type: number;
4
10
  tx_info: string;
5
11
  price_protection?: boolean;
6
12
  }
7
- /** @public */
13
+ /**
14
+ * Response from Lighter's `/api/v1/sendTx` endpoint. `tx_hash` identifies the
15
+ * submitted transaction; timing and quota fields are optional venue estimates.
16
+ *
17
+ * @public
18
+ */
8
19
  export interface LtSendTxResponse {
9
20
  code: number;
10
21
  message: string;
@@ -12,12 +23,23 @@ export interface LtSendTxResponse {
12
23
  predicted_execution_time_ms?: number;
13
24
  volume_quota_remaining?: number;
14
25
  }
15
- /** @public */
26
+ /**
27
+ * Batch request body for Lighter's transaction submission endpoint.
28
+ * `tx_types` is a JSON-encoded number array and `tx_infos` a JSON-encoded
29
+ * string array; corresponding entries are submitted in array order.
30
+ *
31
+ * @public
32
+ */
16
33
  export interface LtSendTxBatchRequest {
17
34
  tx_types: string;
18
35
  tx_infos: string;
19
36
  }
20
- /** @public */
37
+ /**
38
+ * Batch submission response from Lighter. Each `tx_hash` corresponds to the
39
+ * transaction at the same index in the submitted batch.
40
+ *
41
+ * @public
42
+ */
21
43
  export interface LtSendTxBatchResponse {
22
44
  code: number;
23
45
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/types/submit.ts"],"names":[],"mappings":"AAEA,cAAc;AACd,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,cAAc;AACd,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,cAAc;AACd,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,cAAc;AACd,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/types/submit.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB"}
@@ -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[];
@@ -131,7 +172,10 @@ export type LtWsAccountAllTradesMessage = LtWsMessage & {
131
172
  };
132
173
  };
133
174
  /**
134
- * `user_stats/{account_index}` frame; decimal strings in USD.
175
+ * `user_stats/{account_index}` frame; decimal strings in USD. The top-level
176
+ * figures span the whole account (`available_balance` = total withdrawable,
177
+ * including isolated positions' excess margin); `cross_stats` scopes them to
178
+ * the cross pool, whose `available_balance` is the free tradable collateral.
135
179
  * @public
136
180
  */
137
181
  export type LtWsUserStatsMessage = LtWsMessage & {
@@ -139,8 +183,20 @@ export type LtWsUserStatsMessage = LtWsMessage & {
139
183
  collateral?: string;
140
184
  portfolio_value?: string;
141
185
  available_balance?: string;
186
+ cross_stats?: {
187
+ collateral: string;
188
+ portfolio_value: string;
189
+ available_balance: string;
190
+ };
142
191
  };
143
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
+ */
144
200
  export type LtWsAccountAllPositionsMessage = LtWsMessage & {
145
201
  type: 'subscribed/account_all_positions' | 'update/account_all_positions';
146
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":"AAYA;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,wBAAwB,EAAE,MAAM,CAAA;IAChC,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG;IACpD,IAAI,EAAE,yBAAyB,GAAG,qBAAqB,CAAA;IACvD,YAAY,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CACjE,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,wBAAwB,EAAE,MAAM,CAAA;IAChC,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,6BAA6B,GAAG,WAAW,GAAG;IACxD,IAAI,EAAE,8BAA8B,GAAG,0BAA0B,CAAA;IACjE,iBAAiB,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAC9E,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,kBAAkB,EAAE,CAAA;IAC1B,IAAI,EAAE,kBAAkB,EAAE,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG;IAC/C,IAAI,EAAE,uBAAuB,GAAG,mBAAmB,CAAA;IACnD,UAAU,EAAE,aAAa,CAAA;CAC1B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAC3C,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAAA;IACzC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAA;CACrB,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG;IACtD,IAAI,EAAE,+BAA+B,GAAG,2BAA2B,CAAA;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAA;IAC9C,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAA;KAAE,CAAA;CAC1D,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG;IACtD,IAAI,EAAE,+BAA+B,GAAG,2BAA2B,CAAA;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAA;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAA;KAAE,CAAA;CAC1D,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG;IAC/C,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,WAAW,CAAC,EAAE;YACZ,UAAU,EAAE,MAAM,CAAA;YAClB,eAAe,EAAE,MAAM,CAAA;YACvB,iBAAiB,EAAE,MAAM,CAAA;SAC1B,CAAA;KACF,CAAA;CACF,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,8BAA8B,GAAG,WAAW,GAAG;IACzD,IAAI,EAAE,kCAAkC,GAAG,8BAA8B,CAAA;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAC/C,CAAA"}
@@ -0,0 +1,15 @@
1
+ import Big from 'big.js';
2
+ /**
3
+ * Exact-decimal parse of a venue decimal string; null when absent or
4
+ * unparsable, so callers can gate on presence before deriving.
5
+ * @public
6
+ */
7
+ export declare const toBigOrNull: (value: string | undefined) => Big | null;
8
+ /**
9
+ * Parse a required venue decimal and identify the bad field on failure.
10
+ * @public
11
+ */
12
+ export declare const toRequiredBig: (value: string | undefined, field: string) => Big;
13
+ /** Parse a required venue decimal that must be greater than zero. */
14
+ export declare const toPositiveRequiredBig: (value: string | undefined, field: string) => Big;
15
+ //# sourceMappingURL=decimal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../../src/utils/decimal.ts"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,GAAG,GAAG,IAS7D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,MAAM,GAAG,SAAS,EACzB,OAAO,MAAM,KACZ,GASF,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,GAAG,SAAS,EACzB,OAAO,MAAM,KACZ,GASF,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { PerpsError } from '@lifi/perps-sdk';
2
+ import { PerpsErrorCode } from '@lifi/perps-types';
3
+ import Big from 'big.js';
4
+ /**
5
+ * Exact-decimal parse of a venue decimal string; null when absent or
6
+ * unparsable, so callers can gate on presence before deriving.
7
+ * @public
8
+ */
9
+ export const toBigOrNull = (value) => {
10
+ if (value === undefined) {
11
+ return null;
12
+ }
13
+ try {
14
+ return new Big(value);
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ };
20
+ /**
21
+ * Parse a required venue decimal and identify the bad field on failure.
22
+ * @public
23
+ */
24
+ export const toRequiredBig = (value, field) => {
25
+ const parsed = toBigOrNull(value);
26
+ if (parsed !== null) {
27
+ return parsed;
28
+ }
29
+ throw new PerpsError(PerpsErrorCode.SDKError, `Lighter field \`${field}\` is not a valid decimal.`);
30
+ };
31
+ /** Parse a required venue decimal that must be greater than zero. */
32
+ export const toPositiveRequiredBig = (value, field) => {
33
+ const parsed = toRequiredBig(value, field);
34
+ if (parsed.lte(0)) {
35
+ throw new PerpsError(PerpsErrorCode.SDKError, `Lighter field \`${field}\` must be greater than zero.`);
36
+ }
37
+ return parsed;
38
+ };
39
+ //# sourceMappingURL=decimal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal.js","sourceRoot":"","sources":["../../../src/utils/decimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAyB,EAAc,EAAE;IACnE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAyB,EACzB,KAAa,EACR,EAAE;IACP,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,mBAAmB,KAAK,4BAA4B,CACrD,CAAA;AACH,CAAC,CAAA;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAyB,EACzB,KAAa,EACR,EAAE;IACP,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC1C,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,mBAAmB,KAAK,+BAA+B,CACxD,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -2,6 +2,7 @@ export type { LighterActivityCursor } from './activityCursor.js';
2
2
  export { decodeActivityCursor, encodeActivityCursor, } from './activityCursor.js';
3
3
  export { LighterApiClient } from './apiClient.js';
4
4
  export { assetMarginModeInt, isAssetMarginEnabled } from './assetCollateral.js';
5
+ export { toBigOrNull, toRequiredBig } from './decimal.js';
5
6
  export { fetchDetailedAccount } from './fetchDetailedAccount.js';
6
7
  export { lighterAsset } from './lighterAsset.js';
7
8
  export { estimateLiquidationPrice } from './liquidation.js';
@@ -9,9 +10,10 @@ export { mapFill } from './mapFill.js';
9
10
  export { mapMarketContext } from './mapMarketContext.js';
10
11
  export { mapOpenPositions } from './mapOpenPositions.js';
11
12
  export { classifyAndMapOrders, isTriggerOrder, isTriggerType, mapOrder, mapOrderDetail, mapStatusReason, mapTriggerOrder, } from './mapOrder.js';
12
- export { mapPosition } from './mapPosition.js';
13
+ export { leverageFromImf, mapPosition } from './mapPosition.js';
13
14
  export { mapInterval } from './ohlcvInterval.js';
14
15
  export { formatOrderPrice, formatOrderSize } from './orderFormatting.js';
15
16
  export { toIsoFromMs, toIsoFromSeconds } from './time.js';
17
+ export { positionMarginConstraints } from './transferMargin.js';
16
18
  export { leverageToFraction, mapOrderTypeToInt, mapTimeInForceToInt, marginFractionToMaxLeverage, orderExpiryForTif, resolveTimeInForce, } from './wireEncoding.js';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,QAAQ,EACR,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,QAAQ,EACR,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA"}
@@ -4,6 +4,7 @@
4
4
  export { decodeActivityCursor, encodeActivityCursor, } from './activityCursor.js';
5
5
  export { LighterApiClient } from './apiClient.js';
6
6
  export { assetMarginModeInt, isAssetMarginEnabled } from './assetCollateral.js';
7
+ export { toBigOrNull, toRequiredBig } from './decimal.js';
7
8
  export { fetchDetailedAccount } from './fetchDetailedAccount.js';
8
9
  export { lighterAsset } from './lighterAsset.js';
9
10
  export { estimateLiquidationPrice } from './liquidation.js';
@@ -11,9 +12,10 @@ export { mapFill } from './mapFill.js';
11
12
  export { mapMarketContext } from './mapMarketContext.js';
12
13
  export { mapOpenPositions } from './mapOpenPositions.js';
13
14
  export { classifyAndMapOrders, isTriggerOrder, isTriggerType, mapOrder, mapOrderDetail, mapStatusReason, mapTriggerOrder, } from './mapOrder.js';
14
- export { mapPosition } from './mapPosition.js';
15
+ export { leverageFromImf, mapPosition } from './mapPosition.js';
15
16
  export { mapInterval } from './ohlcvInterval.js';
16
17
  export { formatOrderPrice, formatOrderSize } from './orderFormatting.js';
17
18
  export { toIsoFromMs, toIsoFromSeconds } from './time.js';
19
+ export { positionMarginConstraints } from './transferMargin.js';
18
20
  export { leverageToFraction, mapOrderTypeToInt, mapTimeInForceToInt, marginFractionToMaxLeverage, orderExpiryForTif, resolveTimeInForce, } from './wireEncoding.js';
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,oDAAoD;AAGpD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,QAAQ,EACR,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,oDAAoD;AAGpD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,QAAQ,EACR,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA"}
@@ -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,5 +1,11 @@
1
1
  import { LIGHTER_PROVIDER_KEY } from '../constants.js';
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 const lighterAsset = (id, displaySymbol) => ({
4
10
  providerId: LIGHTER_PROVIDER_KEY,
5
11
  id,
@@ -1 +1 @@
1
- {"version":3,"file":"lighterAsset.js","sourceRoot":"","sources":["../../../src/utils/lighterAsset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD,cAAc;AACd,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,aAAqB,EAAS,EAAE,CAAC,CAAC;IACzE,UAAU,EAAE,oBAAoB;IAChC,EAAE;IACF,aAAa;IACb,OAAO,EAAE,EAAE;CACZ,CAAC,CAAA"}
1
+ {"version":3,"file":"lighterAsset.js","sourceRoot":"","sources":["../../../src/utils/lighterAsset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,aAAqB,EAAS,EAAE,CAAC,CAAC;IACzE,UAAU,EAAE,oBAAoB;IAChC,EAAE;IACF,aAAa;IACb,OAAO,EAAE,EAAE;CACZ,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { MarketDisplay, Position } from '@lifi/perps-types';
1
+ import type { PerpsMarketDisplay, Position } from '@lifi/perps-types';
2
2
  import type { LtAccountPosition } from '../types/index.js';
3
3
  /**
4
4
  * Map raw Lighter account positions to open {@link Position}s, dropping
@@ -7,5 +7,5 @@ import type { LtAccountPosition } from '../types/index.js';
7
7
  *
8
8
  * @public
9
9
  */
10
- export declare const mapOpenPositions: (positions: LtAccountPosition[], resolveMarket: (marketId: number) => MarketDisplay) => Position[];
10
+ export declare const mapOpenPositions: (positions: LtAccountPosition[], resolveMarket: (marketId: number) => PerpsMarketDisplay) => Position[];
11
11
  //# sourceMappingURL=mapOpenPositions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapOpenPositions.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,iBAAiB,EAAE,EAC9B,eAAe,CAAC,QAAQ,EAAE,MAAM,KAAK,aAAa,KACjD,QAAQ,EAGgD,CAAA"}
1
+ {"version":3,"file":"mapOpenPositions.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,iBAAiB,EAAE,EAC9B,eAAe,CAAC,QAAQ,EAAE,MAAM,KAAK,kBAAkB,KACtD,QAAQ,EAGgD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapOpenPositions.js","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,SAA8B,EAC9B,aAAkD,EACtC,EAAE,CACd,SAAS;KACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"mapOpenPositions.js","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,SAA8B,EAC9B,aAAuD,EAC3C,EAAE,CACd,SAAS;KACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA"}
@@ -1,9 +1,17 @@
1
- import type { MarketDisplay, Position } from '@lifi/perps-types';
1
+ import type { PerpsMarketDisplay, Position } from '@lifi/perps-types';
2
2
  import type { LtAccountPosition } from '../types/index.js';
3
+ /**
4
+ * Display leverage from an IMF percent string: `100 / IMF` in exact decimal
5
+ * arithmetic before conversion to `number`. This value is for displaying the
6
+ * venue setting; provider risk calculations consume the original decimal IMF
7
+ * instead. `undefined` for a non-positive or unparsable IMF.
8
+ * @public
9
+ */
10
+ export declare const leverageFromImf: (imf: string) => number | undefined;
3
11
  /**
4
12
  * Map a raw Lighter account position to the generic Position type.
5
13
  * @param market - Backend-resolved market identity for `pos.market_id`.
6
14
  * @public
7
15
  */
8
- export declare const mapPosition: (pos: LtAccountPosition, market: MarketDisplay) => Position;
16
+ export declare const mapPosition: (pos: LtAccountPosition, market: PerpsMarketDisplay) => Position;
9
17
  //# sourceMappingURL=mapPosition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,iBAAiB,EACtB,QAAQ,aAAa,KACpB,QA4BF,CAAA"}
1
+ {"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAI1D;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAWtD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,iBAAiB,EACtB,QAAQ,kBAAkB,KACzB,QAgCF,CAAA"}
@@ -1,33 +1,54 @@
1
1
  import { MarginMode, PositionSide } from '@lifi/perps-types';
2
+ import Big from 'big.js';
2
3
  import { LT_MARGIN_MODE_ISOLATED } from '../types/index.js';
4
+ import { toPositiveRequiredBig, toRequiredBig } from './decimal.js';
5
+ /**
6
+ * Display leverage from an IMF percent string: `100 / IMF` in exact decimal
7
+ * arithmetic before conversion to `number`. This value is for displaying the
8
+ * venue setting; provider risk calculations consume the original decimal IMF
9
+ * instead. `undefined` for a non-positive or unparsable IMF.
10
+ * @public
11
+ */
12
+ export const leverageFromImf = (imf) => {
13
+ let parsed;
14
+ try {
15
+ parsed = new Big(imf);
16
+ }
17
+ catch {
18
+ return undefined;
19
+ }
20
+ if (parsed.lte(0)) {
21
+ return undefined;
22
+ }
23
+ return new Big(100).div(parsed).toNumber();
24
+ };
3
25
  /**
4
26
  * Map a raw Lighter account position to the generic Position type.
5
27
  * @param market - Backend-resolved market identity for `pos.market_id`.
6
28
  * @public
7
29
  */
8
30
  export const mapPosition = (pos, market) => {
9
- const size = parseFloat(pos.position);
31
+ const size = toRequiredBig(pos.position, 'position');
10
32
  const isIsolated = pos.margin_mode === LT_MARGIN_MODE_ISOLATED;
11
- // `allocated_margin` is only populated for isolated positions (always "0"
12
- // on cross accounts). For cross, derive margin as
13
- // `position_value × initial_margin_fraction / 100` (IMF is in percent).
14
- const positionValue = Math.abs(parseFloat(pos.position_value));
15
- const imf = parseFloat(pos.initial_margin_fraction);
33
+ const positionValue = toRequiredBig(pos.position_value, 'position_value').abs();
34
+ const imf = toPositiveRequiredBig(pos.initial_margin_fraction, 'initial_margin_fraction');
35
+ const initialMarginRequirement = positionValue.times(imf).div(100);
16
36
  const marginUsed = isIsolated
17
37
  ? pos.allocated_margin
18
- : ((positionValue * imf) / 100).toString();
38
+ : initialMarginRequirement.toFixed();
19
39
  return {
20
40
  market,
21
41
  side: pos.sign >= 0 ? PositionSide.LONG : PositionSide.SHORT,
22
- size: Math.abs(size).toString(),
42
+ size: size.abs().toFixed(),
23
43
  entryPrice: pos.avg_entry_price,
24
- markPrice: pos.position_value === '0' || size === 0
44
+ markPrice: positionValue.eq(0) || size.eq(0)
25
45
  ? '0'
26
- : (parseFloat(pos.position_value) / Math.abs(size)).toString(),
46
+ : positionValue.div(size.abs()).toFixed(),
27
47
  liquidationPrice: pos.liquidation_price,
28
48
  unrealizedPnl: pos.unrealized_pnl,
29
- leverage: imf > 0 ? Math.round(100 / imf) : 1,
49
+ leverage: leverageFromImf(pos.initial_margin_fraction) ?? 1,
30
50
  marginUsed,
51
+ initialMarginRequirement: initialMarginRequirement.toFixed(),
31
52
  marginMode: isIsolated ? MarginMode.ISOLATED : MarginMode.CROSS,
32
53
  };
33
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mapPosition.js","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAsB,EACtB,MAAqB,EACX,EAAE;IACZ,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,KAAK,uBAAuB,CAAA;IAE9D,0EAA0E;IAC1E,kDAAkD;IAClD,wEAAwE;IACxE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;IAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,UAAU;QAC3B,CAAC,CAAC,GAAG,CAAC,gBAAgB;QACtB,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;IAE5C,OAAO;QACL,MAAM;QACN,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK;QAC5D,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAC/B,UAAU,EAAE,GAAG,CAAC,eAAe;QAC/B,SAAS,EACP,GAAG,CAAC,cAAc,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC;YACtC,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;QAClE,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;QACvC,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,UAAU;QACV,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK;KAChE,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"mapPosition.js","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAsB,EAAE;IACjE,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;AAC5C,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAsB,EACtB,MAA0B,EAChB,EAAE;IACZ,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,KAAK,uBAAuB,CAAA;IAC9D,MAAM,aAAa,GAAG,aAAa,CACjC,GAAG,CAAC,cAAc,EAClB,gBAAgB,CACjB,CAAC,GAAG,EAAE,CAAA;IACP,MAAM,GAAG,GAAG,qBAAqB,CAC/B,GAAG,CAAC,uBAAuB,EAC3B,yBAAyB,CAC1B,CAAA;IACD,MAAM,wBAAwB,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,UAAU;QAC3B,CAAC,CAAC,GAAG,CAAC,gBAAgB;QACtB,CAAC,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAA;IAEtC,OAAO;QACL,MAAM;QACN,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK;QAC5D,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;QAC1B,UAAU,EAAE,GAAG,CAAC,eAAe;QAC/B,SAAS,EACP,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;QAC7C,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;QACvC,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC;QAC3D,UAAU;QACV,wBAAwB,EAAE,wBAAwB,CAAC,OAAO,EAAE;QAC5D,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK;KAChE,CAAA;AACH,CAAC,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"}
@@ -18,7 +18,12 @@ const LIGHTER_SUPPORTED_INTERVALS = {
18
18
  '1d': '1d',
19
19
  '1w': '1w',
20
20
  };
21
- /** @public */
21
+ /**
22
+ * Validate and map an SDK OHLCV interval to Lighter's resolution string.
23
+ * Unsupported intervals raise a validation error instead of being rounded.
24
+ *
25
+ * @public
26
+ */
22
27
  export const mapInterval = (interval) => {
23
28
  const resolution = LIGHTER_SUPPORTED_INTERVALS[interval];
24
29
  if (!resolution) {
@@ -1 +1 @@
1
- {"version":3,"file":"ohlcvInterval.js","sourceRoot":"","sources":["../../../src/utils/ohlcvInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD;;;;;;GAMG;AACH,MAAM,2BAA2B,GAA2B;IAC1D,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAA;AAED,cAAc;AACd,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE;IACtD,MAAM,UAAU,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,4CAA4C,QAAQ,KAAK;YACvD,cAAc,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACvE,CAAA;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
1
+ {"version":3,"file":"ohlcvInterval.js","sourceRoot":"","sources":["../../../src/utils/ohlcvInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD;;;;;;GAMG;AACH,MAAM,2BAA2B,GAA2B;IAC1D,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE;IACtD,MAAM,UAAU,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,4CAA4C,QAAQ,KAAK;YACvD,cAAc,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACvE,CAAA;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { type Position, type PositionMarginConstraints } from '@lifi/perps-types';
2
+ /**
3
+ * Lighter's exact isolated-margin requirement. Lighter publishes no separate
4
+ * notional floor, so the provider-normalized initial-margin requirement is
5
+ * the retained amount.
6
+ *
7
+ * @see https://docs.lighter.xyz/trading/liquidations-and-llp-insurance-fund
8
+ * @public
9
+ */
10
+ export declare function positionMarginConstraints(position: Position): PositionMarginConstraints | undefined;
11
+ //# sourceMappingURL=transferMargin.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,21 @@
1
+ import { positionSupportsMarginAdjustment, } from '@lifi/perps-types';
2
+ import { toPositiveRequiredBig } from './decimal.js';
3
+ const AMOUNT_INCREMENT = '0.000001';
4
+ /**
5
+ * Lighter's exact isolated-margin requirement. Lighter publishes no separate
6
+ * notional floor, so the provider-normalized initial-margin requirement is
7
+ * the retained amount.
8
+ *
9
+ * @see https://docs.lighter.xyz/trading/liquidations-and-llp-insurance-fund
10
+ * @public
11
+ */
12
+ export function positionMarginConstraints(position) {
13
+ if (!positionSupportsMarginAdjustment(position)) {
14
+ return undefined;
15
+ }
16
+ return {
17
+ minimumMarginRequirement: toPositiveRequiredBig(position.initialMarginRequirement, 'initialMarginRequirement').toFixed(),
18
+ amountIncrement: AMOUNT_INCREMENT,
19
+ };
20
+ }
21
+ //# sourceMappingURL=transferMargin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferMargin.js","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gCAAgC,GACjC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAEnC;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAkB;IAElB,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO;QACL,wBAAwB,EAAE,qBAAqB,CAC7C,QAAQ,CAAC,wBAAwB,EACjC,0BAA0B,CAC3B,CAAC,OAAO,EAAE;QACX,eAAe,EAAE,gBAAgB;KAClC,CAAA;AACH,CAAC"}