@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.
- package/dist/cjs/LighterProvider.d.ts.map +1 -1
- package/dist/cjs/LighterProvider.js +6 -4
- package/dist/cjs/LighterProvider.js.map +1 -1
- package/dist/cjs/types/activity.d.ts.map +1 -1
- package/dist/cjs/types/fill.d.ts +5 -0
- package/dist/cjs/types/fill.d.ts.map +1 -1
- package/dist/cjs/types/ws.d.ts.map +1 -1
- package/dist/cjs/utils/fundingRate.d.ts +2 -0
- package/dist/cjs/utils/fundingRate.d.ts.map +1 -0
- package/dist/cjs/utils/fundingRate.js +8 -0
- package/dist/cjs/utils/fundingRate.js.map +1 -0
- package/dist/cjs/utils/mapFill.js +2 -2
- package/dist/cjs/utils/mapFill.js.map +1 -1
- package/dist/cjs/utils/mapMarketContext.d.ts.map +1 -1
- package/dist/cjs/utils/mapMarketContext.js +13 -4
- package/dist/cjs/utils/mapMarketContext.js.map +1 -1
- package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
- package/dist/cjs/utils/mapOrder.js +6 -5
- package/dist/cjs/utils/mapOrder.js.map +1 -1
- package/dist/esm/LighterProvider.d.ts.map +1 -1
- package/dist/esm/LighterProvider.js +8 -5
- package/dist/esm/LighterProvider.js.map +1 -1
- package/dist/esm/types/activity.d.ts +1 -0
- package/dist/esm/types/activity.d.ts.map +1 -1
- package/dist/esm/types/fill.d.ts +5 -0
- package/dist/esm/types/fill.d.ts.map +1 -1
- package/dist/esm/types/ws.d.ts +2 -0
- package/dist/esm/types/ws.d.ts.map +1 -1
- package/dist/esm/utils/fundingRate.d.ts +8 -0
- package/dist/esm/utils/fundingRate.d.ts.map +1 -0
- package/dist/esm/utils/fundingRate.js +10 -0
- package/dist/esm/utils/fundingRate.js.map +1 -0
- package/dist/esm/utils/mapFill.js +2 -2
- package/dist/esm/utils/mapFill.js.map +1 -1
- package/dist/esm/utils/mapMarketContext.d.ts +2 -1
- package/dist/esm/utils/mapMarketContext.d.ts.map +1 -1
- package/dist/esm/utils/mapMarketContext.js +15 -5
- package/dist/esm/utils/mapMarketContext.js.map +1 -1
- package/dist/esm/utils/mapOrder.d.ts.map +1 -1
- package/dist/esm/utils/mapOrder.js +7 -5
- package/dist/esm/utils/mapOrder.js.map +1 -1
- package/dist/types/LighterProvider.d.ts.map +1 -1
- package/dist/types/types/activity.d.ts +1 -0
- package/dist/types/types/activity.d.ts.map +1 -1
- package/dist/types/types/fill.d.ts +5 -0
- package/dist/types/types/fill.d.ts.map +1 -1
- package/dist/types/types/ws.d.ts +2 -0
- package/dist/types/types/ws.d.ts.map +1 -1
- package/dist/types/utils/fundingRate.d.ts +8 -0
- package/dist/types/utils/fundingRate.d.ts.map +1 -0
- package/dist/types/utils/mapMarketContext.d.ts +2 -1
- package/dist/types/utils/mapMarketContext.d.ts.map +1 -1
- package/dist/types/utils/mapOrder.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/LighterProvider.ts +8 -6
- package/src/types/activity.ts +1 -0
- package/src/types/fill.ts +5 -0
- package/src/types/ws.ts +2 -0
- package/src/utils/fundingRate.ts +12 -0
- package/src/utils/mapFill.ts +2 -2
- package/src/utils/mapMarketContext.ts +18 -5
- 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;
|
|
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;
|
|
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.
|
|
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.
|
|
50
|
+
"@lifi/perps-sdk": "^25.0.1"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
package/src/LighterProvider.ts
CHANGED
|
@@ -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) =>
|
|
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
|
-
|
|
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
|
|
1829
|
+
fundingRate,
|
|
1828
1830
|
},
|
|
1829
1831
|
]
|
|
1830
1832
|
}),
|
package/src/types/activity.ts
CHANGED
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)
|
package/src/utils/mapFill.ts
CHANGED
|
@@ -161,8 +161,8 @@ export const mapFill = (
|
|
|
161
161
|
: tickToFeeAmount(trade.usd_amount, feeTick, integratorFeeTick)
|
|
162
162
|
|
|
163
163
|
return {
|
|
164
|
-
id: trade.
|
|
165
|
-
orderId:
|
|
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
|
-
|
|
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 {
|
package/src/utils/mapOrder.ts
CHANGED
|
@@ -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:
|
|
146
|
-
...(order.
|
|
148
|
+
orderId: order.order_id,
|
|
149
|
+
...(order.client_order_id === NO_CLIENT_ORDER_ID
|
|
147
150
|
? {}
|
|
148
|
-
: { clientOrderId:
|
|
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.
|
|
224
|
+
`${raw.order_id}: ${error.message}`
|
|
222
225
|
)
|
|
223
226
|
continue
|
|
224
227
|
}
|
|
225
228
|
if (!isActiveOrderStatus(status)) {
|
|
226
|
-
terminated.push(
|
|
229
|
+
terminated.push(raw.order_id)
|
|
227
230
|
}
|
|
228
231
|
if (order !== undefined) {
|
|
229
232
|
orders.push(order)
|