@lifi/perps-sdk-provider-lighter 36.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 +10 -10
- package/dist/cjs/LighterProvider.js.map +1 -1
- package/dist/cjs/accountSummary.d.ts.map +1 -1
- package/dist/cjs/accountSummary.js +13 -6
- package/dist/cjs/accountSummary.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/index.d.ts +1 -1
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +1 -3
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/mapFill.js +3 -3
- 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/mapOpenPositions.d.ts +1 -2
- package/dist/cjs/utils/mapOpenPositions.d.ts.map +1 -1
- package/dist/cjs/utils/mapOpenPositions.js +1 -13
- package/dist/cjs/utils/mapOpenPositions.js.map +1 -1
- package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
- package/dist/cjs/utils/mapOrder.js +31 -47
- package/dist/cjs/utils/mapOrder.js.map +1 -1
- package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
- package/dist/cjs/utils/mapPosition.js +34 -16
- package/dist/cjs/utils/mapPosition.js.map +1 -1
- package/dist/cjs/utils/transferMargin.js +1 -1
- package/dist/cjs/utils/transferMargin.js.map +1 -1
- package/dist/cjs/utils/wireEncoding.d.ts +0 -2
- package/dist/cjs/utils/wireEncoding.d.ts.map +1 -1
- package/dist/cjs/utils/wireEncoding.js +1 -15
- package/dist/cjs/utils/wireEncoding.js.map +1 -1
- package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -1
- package/dist/cjs/websocket/LighterWsProvider.js +46 -26
- package/dist/cjs/websocket/LighterWsProvider.js.map +1 -1
- package/dist/cjs/websocket/orderBookSide.d.ts +2 -1
- package/dist/cjs/websocket/orderBookSide.d.ts.map +1 -1
- package/dist/cjs/websocket/orderBookSide.js +5 -3
- package/dist/cjs/websocket/orderBookSide.js.map +1 -1
- package/dist/esm/LighterProvider.d.ts.map +1 -1
- package/dist/esm/LighterProvider.js +13 -13
- package/dist/esm/LighterProvider.js.map +1 -1
- package/dist/esm/accountSummary.d.ts.map +1 -1
- package/dist/esm/accountSummary.js +14 -7
- package/dist/esm/accountSummary.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/index.d.ts +1 -1
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/mapFill.js +3 -3
- 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/mapOpenPositions.d.ts +1 -8
- package/dist/esm/utils/mapOpenPositions.d.ts.map +1 -1
- package/dist/esm/utils/mapOpenPositions.js +1 -18
- package/dist/esm/utils/mapOpenPositions.js.map +1 -1
- package/dist/esm/utils/mapOrder.d.ts +6 -3
- package/dist/esm/utils/mapOrder.d.ts.map +1 -1
- package/dist/esm/utils/mapOrder.js +39 -51
- package/dist/esm/utils/mapOrder.js.map +1 -1
- package/dist/esm/utils/mapPortfolioHistory.d.ts +2 -2
- package/dist/esm/utils/mapPortfolioHistory.js +2 -2
- package/dist/esm/utils/mapPosition.d.ts +4 -3
- package/dist/esm/utils/mapPosition.d.ts.map +1 -1
- package/dist/esm/utils/mapPosition.js +39 -20
- package/dist/esm/utils/mapPosition.js.map +1 -1
- package/dist/esm/utils/transferMargin.js +1 -1
- package/dist/esm/utils/transferMargin.js.map +1 -1
- package/dist/esm/utils/wireEncoding.d.ts +2 -28
- package/dist/esm/utils/wireEncoding.d.ts.map +1 -1
- package/dist/esm/utils/wireEncoding.js +2 -38
- package/dist/esm/utils/wireEncoding.js.map +1 -1
- package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -1
- package/dist/esm/websocket/LighterWsProvider.js +56 -27
- package/dist/esm/websocket/LighterWsProvider.js.map +1 -1
- package/dist/esm/websocket/orderBookSide.d.ts +3 -2
- package/dist/esm/websocket/orderBookSide.d.ts.map +1 -1
- package/dist/esm/websocket/orderBookSide.js +5 -3
- package/dist/esm/websocket/orderBookSide.js.map +1 -1
- package/dist/types/LighterProvider.d.ts.map +1 -1
- package/dist/types/accountSummary.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/index.d.ts +1 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/mapMarketContext.d.ts +2 -1
- package/dist/types/utils/mapMarketContext.d.ts.map +1 -1
- package/dist/types/utils/mapOpenPositions.d.ts +1 -8
- package/dist/types/utils/mapOpenPositions.d.ts.map +1 -1
- package/dist/types/utils/mapOrder.d.ts +6 -3
- package/dist/types/utils/mapOrder.d.ts.map +1 -1
- package/dist/types/utils/mapPortfolioHistory.d.ts +2 -2
- package/dist/types/utils/mapPosition.d.ts +4 -3
- package/dist/types/utils/mapPosition.d.ts.map +1 -1
- package/dist/types/utils/wireEncoding.d.ts +2 -28
- package/dist/types/utils/wireEncoding.d.ts.map +1 -1
- package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -1
- package/dist/types/websocket/orderBookSide.d.ts +3 -2
- package/dist/types/websocket/orderBookSide.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/LighterProvider.ts +22 -22
- package/src/accountSummary.ts +27 -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/index.ts +0 -2
- package/src/utils/mapFill.ts +3 -3
- package/src/utils/mapMarketContext.ts +18 -5
- package/src/utils/mapOpenPositions.ts +2 -30
- package/src/utils/mapOrder.ts +53 -71
- package/src/utils/mapPortfolioHistory.ts +2 -2
- package/src/utils/mapPosition.ts +50 -23
- package/src/utils/transferMargin.ts +1 -1
- package/src/utils/wireEncoding.ts +2 -43
- package/src/websocket/LighterWsProvider.ts +100 -60
- package/src/websocket/orderBookSide.ts +17 -4
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export type LtTrade = {
|
|
15
15
|
trade_id: number;
|
|
16
|
+
trade_id_str: string;
|
|
16
17
|
tx_hash: string;
|
|
17
18
|
type: string;
|
|
18
19
|
market_id: number;
|
|
@@ -21,6 +22,10 @@ export type LtTrade = {
|
|
|
21
22
|
usd_amount: string;
|
|
22
23
|
ask_id: number;
|
|
23
24
|
bid_id: number;
|
|
25
|
+
ask_id_str: string;
|
|
26
|
+
bid_id_str: string;
|
|
27
|
+
ask_client_id_str: string;
|
|
28
|
+
bid_client_id_str: string;
|
|
24
29
|
ask_account_id: number;
|
|
25
30
|
bid_account_id: number;
|
|
26
31
|
is_maker_ask: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/types/fill.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IAIjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IAIxB,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAKnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAKjC,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACzB"}
|
|
1
|
+
{"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../../src/types/fill.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IAIjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAGlB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IAIxB,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAKnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAKjC,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,oCAAoC,CAAC,EAAE,MAAM,CAAA;IAC7C,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CACzB"}
|
package/dist/types/types/ws.d.ts
CHANGED
|
@@ -34,7 +34,9 @@ export type LtWsMarketStats = {
|
|
|
34
34
|
mid_price: string;
|
|
35
35
|
open_interest: string;
|
|
36
36
|
last_trade_price: string;
|
|
37
|
+
/** Estimated next hourly funding rate, in percent. */
|
|
37
38
|
current_funding_rate: string;
|
|
39
|
+
/** Last settled hourly funding rate, in percent. */
|
|
38
40
|
funding_rate: string;
|
|
39
41
|
funding_timestamp: number;
|
|
40
42
|
daily_base_token_volume: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAelD;;;;;;;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;;;;;;;GAOG;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,qBAAqB,GAAG,WAAW,GAAG;IAChD,IAAI,EACA,wBAAwB,GACxB,oBAAoB,GACpB,+BAA+B,GAC/B,2BAA2B,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CACb,MAAM,EACN,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAAC,GACxE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAClD,GAAG,IAAI,CAAA;CACT,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"}
|
|
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"}
|
|
@@ -15,7 +15,7 @@ export { mapInterval } from './ohlcvInterval.js';
|
|
|
15
15
|
export { snapOrderPrice, snapOrderSize } from './orderFormatting.js';
|
|
16
16
|
export { toIsoFromMs, toIsoFromSeconds } from './time.js';
|
|
17
17
|
export { positionRemovableMargin } from './transferMargin.js';
|
|
18
|
-
export {
|
|
18
|
+
export { mapOrderTypeToInt, mapTimeInForceToInt, orderExpiryForTif, resolveTimeInForce, } from './wireEncoding.js';
|
|
19
19
|
export { lighterWithdrawableBalances } from './withdrawableBalances.js';
|
|
20
20
|
export type { LighterFastWithdrawal, LighterWithdrawalOptions, } from './withdrawalTypes.js';
|
|
21
21
|
export { lighterFastWithdrawal, lighterWithdrawalTypes, } from './withdrawalTypes.js';
|
|
@@ -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,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EACL,
|
|
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,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AACvE,YAAY,EACV,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { PerpsMarketDisplay, Position } from '@lifi/perps-types';
|
|
2
2
|
import type { LtAccountPosition } from '../types/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* True when the Lighter position row has a non-zero size. A malformed size
|
|
@@ -15,11 +15,4 @@ export declare const isOpenPosition: (p: LtAccountPosition) => boolean;
|
|
|
15
15
|
* @public
|
|
16
16
|
*/
|
|
17
17
|
export declare const mapOpenPositions: (positions: LtAccountPosition[], resolveMarket: (marketId: number) => PerpsMarketDisplay) => Position[];
|
|
18
|
-
/**
|
|
19
|
-
* Map every open Lighter position for account totals, which must not leave a
|
|
20
|
-
* position out.
|
|
21
|
-
*
|
|
22
|
-
* @throws {PerpsError} `SDKError` when `mapPosition` skips an open row.
|
|
23
|
-
*/
|
|
24
|
-
export declare const requireOpenPositions: (positions: LtAccountPosition[], resolveMarket: (marketId: number) => PerpsMarketDisplay) => Position[];
|
|
25
18
|
//# sourceMappingURL=mapOpenPositions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapOpenPositions.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"mapOpenPositions.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,iBAAiB,KAAG,OACR,CAAA;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,iBAAiB,EAAE,EAC9B,eAAe,CAAC,QAAQ,EAAE,MAAM,KAAK,kBAAkB,KACtD,QAAQ,EAIP,CAAA"}
|
|
@@ -2,11 +2,14 @@ import type { MarketDisplay, Order } from '@lifi/perps-types';
|
|
|
2
2
|
import type { LtOrder } from '../types/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Map a Lighter order with its venue identity, lifecycle, and execution fields.
|
|
5
|
-
* A row with an invalid
|
|
6
|
-
*
|
|
5
|
+
* Venue sizes and prices pass verbatim. A row with an invalid time gives
|
|
6
|
+
* `undefined`. An average price that cannot be derived is omitted.
|
|
7
7
|
*/
|
|
8
8
|
export declare const mapOrder: (order: LtOrder, market: MarketDisplay) => Order | undefined;
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Include terminal rows and their ids so consumers can update history and
|
|
11
|
+
* active caches. A row the mapper rejects is dropped and warns once.
|
|
12
|
+
*/
|
|
10
13
|
export declare const mapOrderUpdates: (rawOrders: LtOrder[], resolveMarket: (marketIndex: number) => MarketDisplay | undefined) => {
|
|
11
14
|
orders: Order[];
|
|
12
15
|
terminated: string[];
|
|
@@ -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"}
|
|
@@ -5,8 +5,8 @@ import type { LtPnLEntry } from '../types/pnl.js';
|
|
|
5
5
|
* Historical account values are anchored to the current account value. A
|
|
6
6
|
* snapshot with a non-finite value is skipped.
|
|
7
7
|
*
|
|
8
|
-
* @throws {PerpsError} `ValidationError` when `currentValue`
|
|
9
|
-
*
|
|
8
|
+
* @throws {PerpsError} `ValidationError` when `currentValue` does not match the
|
|
9
|
+
* decimal pattern.
|
|
10
10
|
*/
|
|
11
11
|
export declare const mapPortfolioHistory: (range: PortfolioHistoryRange, snapshots: LtPnLEntry[], currentValue: string) => PortfolioHistoryResponse;
|
|
12
12
|
//# sourceMappingURL=mapPortfolioHistory.d.ts.map
|
|
@@ -18,9 +18,10 @@ export declare const leverageFromImf: (imf: string) => string | undefined;
|
|
|
18
18
|
export declare const leverageFromScaledImf: (imf: number) => string | undefined;
|
|
19
19
|
/**
|
|
20
20
|
* Map a raw Lighter account position to the generic Position type. A row with
|
|
21
|
-
* an invalid size
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* an invalid size gives `undefined`. An invalid position value or a
|
|
22
|
+
* non-positive initial margin fraction keeps the row, leaves `leverage` and
|
|
23
|
+
* `initialMarginRequirement` absent, sets a cross `marginUsed` to `'0'` and
|
|
24
|
+
* warns once. Prices, PnL, funding and isolated margin pass through raw.
|
|
24
25
|
* @param market - Backend-resolved market identity for `pos.market_id`.
|
|
25
26
|
* @public
|
|
26
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"
|
|
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;AAOrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAQtD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAO5D,CAAA;AAsBD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,iBAAiB,EACtB,QAAQ,kBAAkB,KACzB,QAAQ,GAAG,SA+Cb,CAAA"}
|
|
@@ -1,33 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Lighter wire encoding for the WASM signer:
|
|
3
|
-
*
|
|
2
|
+
* Lighter wire encoding for the WASM signer: order-type/time-in-force/expiry
|
|
3
|
+
* resolution mirroring lighter-go's rules.
|
|
4
4
|
*/
|
|
5
|
-
/**
|
|
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.
|
|
15
|
-
* @public
|
|
16
|
-
*/
|
|
17
|
-
export declare const marginFractionToMaxLeverage: (fraction: number) => number;
|
|
18
|
-
/**
|
|
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.
|
|
28
|
-
* @public
|
|
29
|
-
*/
|
|
30
|
-
export declare const leverageToFraction: (leverage: number) => number;
|
|
31
5
|
/**
|
|
32
6
|
* Map a LI.FI `OrderType` value to Lighter's integer wire type.
|
|
33
7
|
* Supported mappings are LIMIT → 0, MARKET → 1, STOP_MARKET → 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wireEncoding.d.ts","sourceRoot":"","sources":["../../../src/utils/wireEncoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH
|
|
1
|
+
{"version":3,"file":"wireEncoding.d.ts","sourceRoot":"","sources":["../../../src/utils/wireEncoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAWjD,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LighterWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"LighterWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/LighterWsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { LtWsOrderBook } from '../types/index.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* Orders two decimal-string prices: a negative result puts `a` before `b`.
|
|
4
4
|
*
|
|
5
|
-
* @throws {PerpsError} `ValidationError` when a price
|
|
5
|
+
* @throws {PerpsError} `ValidationError` when a price does not match the decimal pattern.
|
|
6
6
|
*/
|
|
7
7
|
export type PriceOrder = (a: string, b: string) => number;
|
|
8
8
|
export declare const bidOrder: PriceOrder;
|
|
@@ -14,9 +14,10 @@ export declare const askOrder: PriceOrder;
|
|
|
14
14
|
export declare class OrderBookSide {
|
|
15
15
|
private readonly order;
|
|
16
16
|
private readonly providerKey;
|
|
17
|
+
private readonly marketId;
|
|
17
18
|
private readonly byPrice;
|
|
18
19
|
private readonly levels;
|
|
19
|
-
constructor(order: PriceOrder, providerKey: string);
|
|
20
|
+
constructor(order: PriceOrder, providerKey: string, marketId: string);
|
|
20
21
|
/**
|
|
21
22
|
* Applies snapshot or delta levels; a zero size deletes the level. A level
|
|
22
23
|
* with an invalid size also deletes the level at its price, so the book
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderBookSide.d.ts","sourceRoot":"","sources":["../../../src/websocket/orderBookSide.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;AAEzD,eAAO,MAAM,QAAQ,EAAE,UAAkD,CAAA;AACzE,eAAO,MAAM,QAAQ,EAAE,UAAkD,CAAA;AAOzE;;;GAGG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"orderBookSide.d.ts","sourceRoot":"","sources":["../../../src/websocket/orderBookSide.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;AAEzD,eAAO,MAAM,QAAQ,EAAE,UAAkD,CAAA;AACzE,eAAO,MAAM,QAAQ,EAAE,UAAkD,CAAA;AAOzE;;;GAGG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAGtB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM;IAGnC;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI;IA4C3C,QAAQ,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAIlD,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,KAAK;CAad"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk-provider-lighter",
|
|
3
|
-
"version": "
|
|
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": {
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"big.js": "^7.0.1",
|
|
46
46
|
"viem": "^2.55.18",
|
|
47
|
-
"@lifi/perps-types": "^
|
|
47
|
+
"@lifi/perps-types": "^22.0.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@lifi/perps-sdk": "^
|
|
50
|
+
"@lifi/perps-sdk": "^25.0.1"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
package/src/LighterProvider.ts
CHANGED
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
ACTIVE_ORDER_STATUSES,
|
|
3
3
|
calculateTransferable,
|
|
4
4
|
type DepositFlow,
|
|
5
|
+
divideDecimalString,
|
|
5
6
|
estimateLiquidationPriceAtMarketRate,
|
|
6
7
|
explorerTxUrl,
|
|
7
8
|
explorerTxUrlFromBase,
|
|
@@ -38,7 +39,7 @@ import {
|
|
|
38
39
|
type SignActionsContext,
|
|
39
40
|
type StorageAdapter,
|
|
40
41
|
safeAbsDecimalString,
|
|
41
|
-
|
|
42
|
+
safeAddDecimalStrings,
|
|
42
43
|
safeMultiplyDecimalString,
|
|
43
44
|
subtractDecimalString,
|
|
44
45
|
toPerpsMarketDisplay,
|
|
@@ -150,6 +151,7 @@ import {
|
|
|
150
151
|
LighterTokenRevokedError,
|
|
151
152
|
} from './utils/apiClient.js'
|
|
152
153
|
import { isAssetMarginEnabled } from './utils/assetCollateral.js'
|
|
154
|
+
import { fundingPercentToFraction } from './utils/fundingRate.js'
|
|
153
155
|
import {
|
|
154
156
|
fetchDetailedAccount,
|
|
155
157
|
type LighterFastWithdrawal,
|
|
@@ -168,7 +170,6 @@ import {
|
|
|
168
170
|
toIsoFromMs,
|
|
169
171
|
toIsoFromSeconds,
|
|
170
172
|
} from './utils/index.js'
|
|
171
|
-
import { requireOpenPositions } from './utils/mapOpenPositions.js'
|
|
172
173
|
import {
|
|
173
174
|
fetchRegisteredApiKey,
|
|
174
175
|
normalizeLighterPublicKey,
|
|
@@ -184,16 +185,11 @@ import { wireList } from './utils/wireList.js'
|
|
|
184
185
|
|
|
185
186
|
const ZERO_FEE_TIER = { maker: '0', taker: '0' }
|
|
186
187
|
|
|
187
|
-
/** The sum of `values`, or `undefined` when any term is not a decimal string. */
|
|
188
|
-
const safeSum = (values: readonly string[]): string | undefined =>
|
|
189
|
-
values.reduce<string | undefined>(
|
|
190
|
-
(sum, value) =>
|
|
191
|
-
sum === undefined ? undefined : safeAddDecimalString(sum, value),
|
|
192
|
-
'0'
|
|
193
|
-
)
|
|
194
|
-
|
|
195
188
|
const tickToFeeString = (tick: number): string =>
|
|
196
|
-
|
|
189
|
+
divideDecimalString(
|
|
190
|
+
numberToDecimalString(tick),
|
|
191
|
+
numberToDecimalString(LIGHTER_FEE_TICK_SCALE)
|
|
192
|
+
)
|
|
197
193
|
|
|
198
194
|
const projectFeeTier = (
|
|
199
195
|
limits: LtAccountLimits
|
|
@@ -1095,13 +1091,16 @@ export const createLighterProvider = (
|
|
|
1095
1091
|
? readOnlyTokenManager.get(params.address, localKey.accountIndex)
|
|
1096
1092
|
: Promise.resolve(undefined),
|
|
1097
1093
|
])
|
|
1098
|
-
const positions: Position[] =
|
|
1099
|
-
|
|
1100
|
-
(id) => toPerpsMarketDisplay(registry.require(String(id)))
|
|
1094
|
+
const positions: Position[] = mapOpenPositions(account.positions, (id) =>
|
|
1095
|
+
toPerpsMarketDisplay(registry.require(String(id)))
|
|
1101
1096
|
)
|
|
1102
1097
|
|
|
1103
|
-
const totalMarginUsed =
|
|
1104
|
-
|
|
1098
|
+
const totalMarginUsed = safeAddDecimalStrings(
|
|
1099
|
+
positions.map((p) => p.marginUsed)
|
|
1100
|
+
)
|
|
1101
|
+
const totalUnrealizedPnl = safeAddDecimalStrings(
|
|
1102
|
+
positions.map((p) => p.unrealizedPnl)
|
|
1103
|
+
)
|
|
1105
1104
|
|
|
1106
1105
|
const instanceMeta = providers.find((p) => p.key === providerKey)
|
|
1107
1106
|
const categories = instanceMeta?.categories ?? []
|
|
@@ -1618,7 +1617,7 @@ export const createLighterProvider = (
|
|
|
1618
1617
|
// `accountOrders` reaches active and inactive rows alike, so a reused
|
|
1619
1618
|
// client order index can match more than one row. Prefer the live one.
|
|
1620
1619
|
const matches = orders
|
|
1621
|
-
.filter((o) =>
|
|
1620
|
+
.filter((o) => o.client_order_id === clientOrderIndex)
|
|
1622
1621
|
.flatMap((o) => mapDetail(o) ?? [])
|
|
1623
1622
|
const hit =
|
|
1624
1623
|
matches.find((o) => isActiveOrderStatus(o.status)) ?? matches[0]
|
|
@@ -1628,8 +1627,7 @@ export const createLighterProvider = (
|
|
|
1628
1627
|
return hit
|
|
1629
1628
|
}
|
|
1630
1629
|
|
|
1631
|
-
const byOrderIndex = (o: LtOrder): boolean =>
|
|
1632
|
-
String(o.order_index) === params.id
|
|
1630
|
+
const byOrderIndex = (o: LtOrder): boolean => o.order_id === params.id
|
|
1633
1631
|
|
|
1634
1632
|
const active = await retryOnRevoked(params.address, token, (t) =>
|
|
1635
1633
|
fetchActiveOrders(
|
|
@@ -1811,10 +1809,12 @@ export const createLighterProvider = (
|
|
|
1811
1809
|
// `get`, not `require`: a market id the backend list no longer carries
|
|
1812
1810
|
// drops only its own row instead of rejecting the whole feed. The
|
|
1813
1811
|
// registry warns once per unresolved id. A delisted market still
|
|
1814
|
-
// 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.
|
|
1815
1814
|
...history.fundings.position_fundings.flatMap((f): ActivityItem[] => {
|
|
1816
1815
|
const market = marketRegistry.get(String(f.market_id))
|
|
1817
|
-
|
|
1816
|
+
const fundingRate = fundingPercentToFraction(f.rate)
|
|
1817
|
+
if (market === undefined || fundingRate === undefined) {
|
|
1818
1818
|
return []
|
|
1819
1819
|
}
|
|
1820
1820
|
return [
|
|
@@ -1826,7 +1826,7 @@ export const createLighterProvider = (
|
|
|
1826
1826
|
market,
|
|
1827
1827
|
amount: f.change,
|
|
1828
1828
|
positionSize: f.position_size,
|
|
1829
|
-
fundingRate
|
|
1829
|
+
fundingRate,
|
|
1830
1830
|
},
|
|
1831
1831
|
]
|
|
1832
1832
|
}),
|
package/src/accountSummary.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
addDecimalString,
|
|
3
|
+
createWarnOnce,
|
|
4
|
+
isDecimalString,
|
|
3
5
|
PerpsError,
|
|
6
|
+
safeAddDecimalStrings,
|
|
4
7
|
subtractDecimalString,
|
|
5
8
|
unknownToDecimalString,
|
|
6
9
|
} from '@lifi/perps-sdk'
|
|
@@ -55,6 +58,22 @@ export const lighterPortfolioValue = (
|
|
|
55
58
|
perpsEquity
|
|
56
59
|
)
|
|
57
60
|
|
|
61
|
+
const warnSkippedTermOnce = createWarnOnce()
|
|
62
|
+
|
|
63
|
+
const sumReadableTerms = (terms: readonly string[], field: string): string => {
|
|
64
|
+
const readable = terms.filter((term) => {
|
|
65
|
+
if (isDecimalString(term)) {
|
|
66
|
+
return true
|
|
67
|
+
}
|
|
68
|
+
warnSkippedTermOnce(
|
|
69
|
+
`${LIGHTER_PROVIDER_KEY}|${field}`,
|
|
70
|
+
`[${LIGHTER_PROVIDER_KEY}] skipping a \`${field}\` term that does not match the decimal pattern: '${String(term).slice(0, 64)}'`
|
|
71
|
+
)
|
|
72
|
+
return false
|
|
73
|
+
})
|
|
74
|
+
return safeAddDecimalStrings(readable) ?? '0'
|
|
75
|
+
}
|
|
76
|
+
|
|
58
77
|
/**
|
|
59
78
|
* Roll up settlement equity, spot holdings and non-settlement margin holdings.
|
|
60
79
|
* The settlement asset counts as `totalAssetValue` plus its spot-route balance,
|
|
@@ -105,11 +124,13 @@ export function getAccountSummary(
|
|
|
105
124
|
)
|
|
106
125
|
)
|
|
107
126
|
),
|
|
108
|
-
marginUsed:
|
|
109
|
-
.map((p) => p.marginUsed)
|
|
110
|
-
.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
.
|
|
127
|
+
marginUsed: sumReadableTerms(
|
|
128
|
+
positions.map((p) => p.marginUsed),
|
|
129
|
+
'position.marginUsed'
|
|
130
|
+
),
|
|
131
|
+
unrealizedPnl: sumReadableTerms(
|
|
132
|
+
positions.map((p) => p.unrealizedPnl),
|
|
133
|
+
'position.unrealizedPnl'
|
|
134
|
+
),
|
|
114
135
|
}
|
|
115
136
|
}
|
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/index.ts
CHANGED
|
@@ -23,10 +23,8 @@ export { snapOrderPrice, snapOrderSize } from './orderFormatting.js'
|
|
|
23
23
|
export { toIsoFromMs, toIsoFromSeconds } from './time.js'
|
|
24
24
|
export { positionRemovableMargin } from './transferMargin.js'
|
|
25
25
|
export {
|
|
26
|
-
leverageToFraction,
|
|
27
26
|
mapOrderTypeToInt,
|
|
28
27
|
mapTimeInForceToInt,
|
|
29
|
-
marginFractionToMaxLeverage,
|
|
30
28
|
orderExpiryForTif,
|
|
31
29
|
resolveTimeInForce,
|
|
32
30
|
} from './wireEncoding.js'
|
package/src/utils/mapFill.ts
CHANGED
|
@@ -130,7 +130,7 @@ export const mapFill = (
|
|
|
130
130
|
'fill',
|
|
131
131
|
'timestamp',
|
|
132
132
|
trade.timestamp,
|
|
133
|
-
'timestamp'
|
|
133
|
+
{ marketId: market.id, expected: 'timestamp' }
|
|
134
134
|
)
|
|
135
135
|
return undefined
|
|
136
136
|
}
|
|
@@ -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 {
|