@lifi/perps-sdk-provider-lighter 37.0.0 → 37.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 (62) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +6 -4
  3. package/dist/cjs/LighterProvider.js.map +1 -1
  4. package/dist/cjs/types/activity.d.ts.map +1 -1
  5. package/dist/cjs/types/fill.d.ts +5 -0
  6. package/dist/cjs/types/fill.d.ts.map +1 -1
  7. package/dist/cjs/types/ws.d.ts.map +1 -1
  8. package/dist/cjs/utils/fundingRate.d.ts +2 -0
  9. package/dist/cjs/utils/fundingRate.d.ts.map +1 -0
  10. package/dist/cjs/utils/fundingRate.js +8 -0
  11. package/dist/cjs/utils/fundingRate.js.map +1 -0
  12. package/dist/cjs/utils/mapFill.js +2 -2
  13. package/dist/cjs/utils/mapFill.js.map +1 -1
  14. package/dist/cjs/utils/mapMarketContext.d.ts.map +1 -1
  15. package/dist/cjs/utils/mapMarketContext.js +13 -4
  16. package/dist/cjs/utils/mapMarketContext.js.map +1 -1
  17. package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
  18. package/dist/cjs/utils/mapOrder.js +6 -5
  19. package/dist/cjs/utils/mapOrder.js.map +1 -1
  20. package/dist/esm/LighterProvider.d.ts.map +1 -1
  21. package/dist/esm/LighterProvider.js +8 -5
  22. package/dist/esm/LighterProvider.js.map +1 -1
  23. package/dist/esm/types/activity.d.ts +1 -0
  24. package/dist/esm/types/activity.d.ts.map +1 -1
  25. package/dist/esm/types/fill.d.ts +5 -0
  26. package/dist/esm/types/fill.d.ts.map +1 -1
  27. package/dist/esm/types/ws.d.ts +2 -0
  28. package/dist/esm/types/ws.d.ts.map +1 -1
  29. package/dist/esm/utils/fundingRate.d.ts +8 -0
  30. package/dist/esm/utils/fundingRate.d.ts.map +1 -0
  31. package/dist/esm/utils/fundingRate.js +10 -0
  32. package/dist/esm/utils/fundingRate.js.map +1 -0
  33. package/dist/esm/utils/mapFill.js +2 -2
  34. package/dist/esm/utils/mapFill.js.map +1 -1
  35. package/dist/esm/utils/mapMarketContext.d.ts +2 -1
  36. package/dist/esm/utils/mapMarketContext.d.ts.map +1 -1
  37. package/dist/esm/utils/mapMarketContext.js +15 -5
  38. package/dist/esm/utils/mapMarketContext.js.map +1 -1
  39. package/dist/esm/utils/mapOrder.d.ts.map +1 -1
  40. package/dist/esm/utils/mapOrder.js +7 -5
  41. package/dist/esm/utils/mapOrder.js.map +1 -1
  42. package/dist/types/LighterProvider.d.ts.map +1 -1
  43. package/dist/types/types/activity.d.ts +1 -0
  44. package/dist/types/types/activity.d.ts.map +1 -1
  45. package/dist/types/types/fill.d.ts +5 -0
  46. package/dist/types/types/fill.d.ts.map +1 -1
  47. package/dist/types/types/ws.d.ts +2 -0
  48. package/dist/types/types/ws.d.ts.map +1 -1
  49. package/dist/types/utils/fundingRate.d.ts +8 -0
  50. package/dist/types/utils/fundingRate.d.ts.map +1 -0
  51. package/dist/types/utils/mapMarketContext.d.ts +2 -1
  52. package/dist/types/utils/mapMarketContext.d.ts.map +1 -1
  53. package/dist/types/utils/mapOrder.d.ts.map +1 -1
  54. package/package.json +2 -2
  55. package/src/LighterProvider.ts +8 -6
  56. package/src/types/activity.ts +1 -0
  57. package/src/types/fill.ts +5 -0
  58. package/src/types/ws.ts +2 -0
  59. package/src/utils/fundingRate.ts +12 -0
  60. package/src/utils/mapFill.ts +2 -2
  61. package/src/utils/mapMarketContext.ts +18 -5
  62. package/src/utils/mapOrder.ts +8 -5
@@ -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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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Convert a Lighter funding rate, which the venue publishes in percent
3
+ * (`'0.0012'` is 0.0012 %), to the decimal fraction the SDK funding fields
4
+ * carry (`'0.000012'`). `undefined` with a warning when `percent` does not
5
+ * match the decimal pattern.
6
+ */
7
+ export declare const fundingPercentToFraction: (percent: string) => string | undefined;
8
+ //# sourceMappingURL=fundingRate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fundingRate.d.ts","sourceRoot":"","sources":["../../../src/utils/fundingRate.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,SAAS,MAAM,KAAG,MAAM,GAAG,SACf,CAAA"}
@@ -4,7 +4,8 @@ import type { LtWsMarketStats, LtWsSpotMarketStats } from '../types/index.js';
4
4
  * Map a Lighter market-stats record to a {@link MarketContext}: `index_price`
5
5
  * is the oracle, `mid_price` the mid. Perp records carry the venue
6
6
  * `mark_price`, funding and open interest; spot records have none, so mark
7
- * falls back to the mid and the perp-only fields stay `undefined`.
7
+ * falls back to the mid and the perp-only fields stay `undefined`. The venue
8
+ * funding rate is hourly percent; `funding.rate` is its decimal fraction.
8
9
  * @public
9
10
  */
10
11
  export declare const mapMarketContext: (stats: LtWsMarketStats | LtWsSpotMarketStats) => MarketContext;
@@ -1 +1 @@
1
- {"version":3,"file":"mapMarketContext.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarketContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AA6B7E;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,eAAe,GAAG,mBAAmB,KAC3C,aAuBF,CAAA"}
1
+ {"version":3,"file":"mapMarketContext.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarketContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AA4C7E;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,eAAe,GAAG,mBAAmB,KAC3C,aAoBF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAa,MAAM,mBAAmB,CAAA;AASxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AA+FhD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GACnB,OAAO,OAAO,EACd,QAAQ,aAAa,KACpB,KAAK,GAAG,SAwEV,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,OAAO,EAAE,EACpB,eAAe,CAAC,WAAW,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KAChE;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CA6BzC,CAAA"}
1
+ {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAa,MAAM,mBAAmB,CAAA;AASxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAkGhD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GACnB,OAAO,OAAO,EACd,QAAQ,aAAa,KACpB,KAAK,GAAG,SAwEV,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,OAAO,EAAE,EACpB,eAAe,CAAC,WAAW,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KAChE;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CA6BzC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-lighter",
3
- "version": "37.0.0",
3
+ "version": "37.0.1",
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": "^22.0.0"
48
48
  },
49
49
  "peerDependencies": {
50
- "@lifi/perps-sdk": "^25.0.0"
50
+ "@lifi/perps-sdk": "^25.0.1"
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
@@ -151,6 +151,7 @@ import {
151
151
  LighterTokenRevokedError,
152
152
  } from './utils/apiClient.js'
153
153
  import { isAssetMarginEnabled } from './utils/assetCollateral.js'
154
+ import { fundingPercentToFraction } from './utils/fundingRate.js'
154
155
  import {
155
156
  fetchDetailedAccount,
156
157
  type LighterFastWithdrawal,
@@ -1616,7 +1617,7 @@ export const createLighterProvider = (
1616
1617
  // `accountOrders` reaches active and inactive rows alike, so a reused
1617
1618
  // client order index can match more than one row. Prefer the live one.
1618
1619
  const matches = orders
1619
- .filter((o) => String(o.client_order_index) === clientOrderIndex)
1620
+ .filter((o) => o.client_order_id === clientOrderIndex)
1620
1621
  .flatMap((o) => mapDetail(o) ?? [])
1621
1622
  const hit =
1622
1623
  matches.find((o) => isActiveOrderStatus(o.status)) ?? matches[0]
@@ -1626,8 +1627,7 @@ export const createLighterProvider = (
1626
1627
  return hit
1627
1628
  }
1628
1629
 
1629
- const byOrderIndex = (o: LtOrder): boolean =>
1630
- String(o.order_index) === params.id
1630
+ const byOrderIndex = (o: LtOrder): boolean => o.order_id === params.id
1631
1631
 
1632
1632
  const active = await retryOnRevoked(params.address, token, (t) =>
1633
1633
  fetchActiveOrders(
@@ -1809,10 +1809,12 @@ export const createLighterProvider = (
1809
1809
  // `get`, not `require`: a market id the backend list no longer carries
1810
1810
  // drops only its own row instead of rejecting the whole feed. The
1811
1811
  // registry warns once per unresolved id. A delisted market still
1812
- // resolves, so its rows stay.
1812
+ // resolves, so its rows stay. A `rate` that does not match the decimal
1813
+ // pattern also drops only its own row.
1813
1814
  ...history.fundings.position_fundings.flatMap((f): ActivityItem[] => {
1814
1815
  const market = marketRegistry.get(String(f.market_id))
1815
- if (market === undefined) {
1816
+ const fundingRate = fundingPercentToFraction(f.rate)
1817
+ if (market === undefined || fundingRate === undefined) {
1816
1818
  return []
1817
1819
  }
1818
1820
  return [
@@ -1824,7 +1826,7 @@ export const createLighterProvider = (
1824
1826
  market,
1825
1827
  amount: f.change,
1826
1828
  positionSize: f.position_size,
1827
- fundingRate: f.rate,
1829
+ fundingRate,
1828
1830
  },
1829
1831
  ]
1830
1832
  }),
@@ -78,6 +78,7 @@ export interface LtPositionFunding {
78
78
  * `FundingActivity.amount`.
79
79
  */
80
80
  change: string
81
+ /** Hourly funding rate of this payment, in percent. */
81
82
  rate: string
82
83
  position_size: string
83
84
  position_side: string
package/src/types/fill.ts CHANGED
@@ -16,6 +16,7 @@
16
16
  */
17
17
  export type LtTrade = {
18
18
  trade_id: number
19
+ trade_id_str: string
19
20
  tx_hash: string
20
21
  type: string
21
22
  market_id: number
@@ -24,6 +25,10 @@ export type LtTrade = {
24
25
  usd_amount: string
25
26
  ask_id: number
26
27
  bid_id: number
28
+ ask_id_str: string
29
+ bid_id_str: string
30
+ ask_client_id_str: string
31
+ bid_client_id_str: string
27
32
  ask_account_id: number
28
33
  bid_account_id: number
29
34
  is_maker_ask: boolean
package/src/types/ws.ts CHANGED
@@ -48,7 +48,9 @@ export type LtWsMarketStats = {
48
48
  mid_price: string
49
49
  open_interest: string
50
50
  last_trade_price: string
51
+ /** Estimated next hourly funding rate, in percent. */
51
52
  current_funding_rate: string
53
+ /** Last settled hourly funding rate, in percent. */
52
54
  funding_rate: string
53
55
  funding_timestamp: number
54
56
  daily_base_token_volume: number
@@ -0,0 +1,12 @@
1
+ import { safeDivideDecimalString } from '@lifi/perps-sdk'
2
+
3
+ const PERCENT_PER_WHOLE = '100'
4
+
5
+ /**
6
+ * Convert a Lighter funding rate, which the venue publishes in percent
7
+ * (`'0.0012'` is 0.0012 %), to the decimal fraction the SDK funding fields
8
+ * carry (`'0.000012'`). `undefined` with a warning when `percent` does not
9
+ * match the decimal pattern.
10
+ */
11
+ export const fundingPercentToFraction = (percent: string): string | undefined =>
12
+ safeDivideDecimalString(percent, PERCENT_PER_WHOLE)
@@ -161,8 +161,8 @@ export const mapFill = (
161
161
  : tickToFeeAmount(trade.usd_amount, feeTick, integratorFeeTick)
162
162
 
163
163
  return {
164
- id: trade.trade_id.toString(),
165
- orderId: String(isBuyer ? trade.bid_id : trade.ask_id),
164
+ id: trade.trade_id_str,
165
+ orderId: isBuyer ? trade.bid_id_str : trade.ask_id_str,
166
166
  market,
167
167
  side: isBuyer ? OrderSide.BUY : OrderSide.SELL,
168
168
  type: OrderType.LIMIT,
@@ -1,6 +1,7 @@
1
1
  import { numberToDecimalString } from '@lifi/perps-sdk'
2
2
  import type { MarketContext } from '@lifi/perps-types'
3
3
  import type { LtWsMarketStats, LtWsSpotMarketStats } from '../types/index.js'
4
+ import { fundingPercentToFraction } from './fundingRate.js'
4
5
 
5
6
  const FUNDING_PERIOD_MS = 60 * 60 * 1000
6
7
 
@@ -29,11 +30,26 @@ const dailyFigures = (stats: {
29
30
  : {}),
30
31
  })
31
32
 
33
+ const fundingInfo = (
34
+ stats: LtWsMarketStats
35
+ ): Pick<MarketContext, 'funding'> => {
36
+ const rate = fundingPercentToFraction(stats.current_funding_rate)
37
+ return rate === undefined
38
+ ? {}
39
+ : {
40
+ funding: {
41
+ rate,
42
+ nextFundingTime: stats.funding_timestamp + FUNDING_PERIOD_MS,
43
+ },
44
+ }
45
+ }
46
+
32
47
  /**
33
48
  * Map a Lighter market-stats record to a {@link MarketContext}: `index_price`
34
49
  * is the oracle, `mid_price` the mid. Perp records carry the venue
35
50
  * `mark_price`, funding and open interest; spot records have none, so mark
36
- * falls back to the mid and the perp-only fields stay `undefined`.
51
+ * falls back to the mid and the perp-only fields stay `undefined`. The venue
52
+ * funding rate is hourly percent; `funding.rate` is its decimal fraction.
37
53
  * @public
38
54
  */
39
55
  export const mapMarketContext = (
@@ -48,10 +64,7 @@ export const mapMarketContext = (
48
64
  oraclePrice: stats.index_price,
49
65
  ...dailyFigures(stats),
50
66
  openInterest: stats.open_interest,
51
- funding: {
52
- rate: stats.current_funding_rate,
53
- nextFundingTime: stats.funding_timestamp + FUNDING_PERIOD_MS,
54
- },
67
+ ...fundingInfo(stats),
55
68
  }
56
69
  }
57
70
  return {
@@ -20,6 +20,9 @@ import { LIGHTER_PROVIDER_KEY } from '../constants.js'
20
20
  import type { LtOrder } from '../types/index.js'
21
21
  import { rowTimestampToIsoStringOrUndefined } from './rowTimestamp.js'
22
22
 
23
+ // Lighter sends client index 0 as the string "0" for an order placed without one.
24
+ const NO_CLIENT_ORDER_ID = '0'
25
+
23
26
  const mapOrderType = (type: string): Order['type'] => {
24
27
  switch (type.replace(/-/g, '_')) {
25
28
  case 'market':
@@ -142,10 +145,10 @@ export const mapOrder = (
142
145
  : undefined
143
146
  const status = mapOrderStatus(order)
144
147
  const base: OrderBase = {
145
- orderId: String(order.order_index),
146
- ...(order.client_order_index === 0
148
+ orderId: order.order_id,
149
+ ...(order.client_order_id === NO_CLIENT_ORDER_ID
147
150
  ? {}
148
- : { clientOrderId: String(order.client_order_index) }),
151
+ : { clientOrderId: order.client_order_id }),
149
152
  market,
150
153
  side: order.is_ask ? OrderSide.SELL : OrderSide.BUY,
151
154
  status,
@@ -218,12 +221,12 @@ export const mapOrderUpdates = (
218
221
  wsLog.droppedRow(
219
222
  LIGHTER_PROVIDER_KEY,
220
223
  'order',
221
- `${raw.order_index}: ${error.message}`
224
+ `${raw.order_id}: ${error.message}`
222
225
  )
223
226
  continue
224
227
  }
225
228
  if (!isActiveOrderStatus(status)) {
226
- terminated.push(String(raw.order_index))
229
+ terminated.push(raw.order_id)
227
230
  }
228
231
  if (order !== undefined) {
229
232
  orders.push(order)