@lifi/perps-sdk-provider-lighter 11.0.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/LighterProvider.d.ts.map +1 -1
- package/dist/cjs/LighterProvider.js +27 -1
- package/dist/cjs/LighterProvider.js.map +1 -1
- package/dist/cjs/accountConfig.d.ts.map +1 -1
- package/dist/cjs/accountConfig.js +2 -0
- package/dist/cjs/accountConfig.js.map +1 -1
- package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
- package/dist/cjs/signers/LighterSigner.js +2 -0
- package/dist/cjs/signers/LighterSigner.js.map +1 -1
- package/dist/cjs/utils/mapTwap.d.ts +4 -0
- package/dist/cjs/utils/mapTwap.d.ts.map +1 -0
- package/dist/cjs/utils/mapTwap.js +31 -0
- package/dist/cjs/utils/mapTwap.js.map +1 -0
- package/dist/cjs/utils/ohlcvInterval.d.ts +2 -1
- package/dist/cjs/utils/ohlcvInterval.d.ts.map +1 -1
- package/dist/cjs/utils/ohlcvInterval.js.map +1 -1
- package/dist/cjs/utils/wireEncoding.d.ts.map +1 -1
- package/dist/cjs/utils/wireEncoding.js +1 -0
- package/dist/cjs/utils/wireEncoding.js.map +1 -1
- package/dist/esm/LighterProvider.d.ts.map +1 -1
- package/dist/esm/LighterProvider.js +27 -1
- package/dist/esm/LighterProvider.js.map +1 -1
- package/dist/esm/accountConfig.d.ts.map +1 -1
- package/dist/esm/accountConfig.js +2 -0
- package/dist/esm/accountConfig.js.map +1 -1
- package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
- package/dist/esm/signers/LighterSigner.js +2 -0
- package/dist/esm/signers/LighterSigner.js.map +1 -1
- package/dist/esm/utils/mapTwap.d.ts +5 -0
- package/dist/esm/utils/mapTwap.d.ts.map +1 -0
- package/dist/esm/utils/mapTwap.js +25 -0
- package/dist/esm/utils/mapTwap.js.map +1 -0
- package/dist/esm/utils/ohlcvInterval.d.ts +2 -1
- package/dist/esm/utils/ohlcvInterval.d.ts.map +1 -1
- package/dist/esm/utils/ohlcvInterval.js.map +1 -1
- package/dist/esm/utils/wireEncoding.d.ts +2 -3
- package/dist/esm/utils/wireEncoding.d.ts.map +1 -1
- package/dist/esm/utils/wireEncoding.js +4 -4
- package/dist/esm/utils/wireEncoding.js.map +1 -1
- package/dist/types/LighterProvider.d.ts.map +1 -1
- package/dist/types/accountConfig.d.ts.map +1 -1
- package/dist/types/signers/LighterSigner.d.ts.map +1 -1
- package/dist/types/utils/mapTwap.d.ts +5 -0
- package/dist/types/utils/mapTwap.d.ts.map +1 -0
- package/dist/types/utils/ohlcvInterval.d.ts +2 -1
- package/dist/types/utils/ohlcvInterval.d.ts.map +1 -1
- package/dist/types/utils/wireEncoding.d.ts +2 -3
- package/dist/types/utils/wireEncoding.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/LighterProvider.ts +47 -1
- package/src/accountConfig.ts +2 -0
- package/src/signers/LighterSigner.ts +2 -0
- package/src/utils/mapTwap.ts +31 -0
- package/src/utils/ohlcvInterval.ts +3 -2
- package/src/utils/wireEncoding.ts +4 -3
|
@@ -377,6 +377,7 @@ export class LighterSigner {
|
|
|
377
377
|
switch (action) {
|
|
378
378
|
case ActionType.PLACE_ORDER:
|
|
379
379
|
case ActionType.PLACE_TRIGGER_ORDER:
|
|
380
|
+
case ActionType.PLACE_TWAP_ORDER:
|
|
380
381
|
return wasm.SignCreateOrder(
|
|
381
382
|
numberField(p, 'market_index'),
|
|
382
383
|
numberField(p, 'client_order_index'),
|
|
@@ -414,6 +415,7 @@ export class LighterSigner {
|
|
|
414
415
|
ctx.accountIndex
|
|
415
416
|
)
|
|
416
417
|
case ActionType.CANCEL_ORDER:
|
|
418
|
+
case ActionType.CANCEL_TWAP_ORDER:
|
|
417
419
|
return wasm.SignCancelOrder(
|
|
418
420
|
numberField(p, 'market_index'),
|
|
419
421
|
numberField(p, 'order_index'),
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { toMarketDisplay } from '@lifi/perps-sdk'
|
|
2
|
+
import {
|
|
3
|
+
type Market,
|
|
4
|
+
OrderSide,
|
|
5
|
+
type TwapOrder,
|
|
6
|
+
TwapOrderStatus,
|
|
7
|
+
} from '@lifi/perps-types'
|
|
8
|
+
import Big from 'big.js'
|
|
9
|
+
import type { LtOrder } from '../types/order.js'
|
|
10
|
+
|
|
11
|
+
/** Map an active Lighter `twap` parent order to the shared running-TWAP model. */
|
|
12
|
+
export const mapRunningTwap = (order: LtOrder, market: Market): TwapOrder => {
|
|
13
|
+
const filledSize = new Big(order.filled_base_amount)
|
|
14
|
+
return {
|
|
15
|
+
twapId: String(order.order_index),
|
|
16
|
+
market: toMarketDisplay(market),
|
|
17
|
+
side: order.is_ask ? OrderSide.SELL : OrderSide.BUY,
|
|
18
|
+
totalSize: order.initial_base_amount,
|
|
19
|
+
filledSize: order.filled_base_amount,
|
|
20
|
+
...(filledSize.eq(0)
|
|
21
|
+
? {}
|
|
22
|
+
: {
|
|
23
|
+
avgFillPrice: new Big(order.filled_quote_amount)
|
|
24
|
+
.div(filledSize)
|
|
25
|
+
.toString(),
|
|
26
|
+
}),
|
|
27
|
+
startedAt: new Date(order.created_at * 1000).toISOString(),
|
|
28
|
+
durationSeconds: (order.order_expiry - order.created_at * 1000) / 1000,
|
|
29
|
+
status: TwapOrderStatus.RUNNING,
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PerpsError } from '@lifi/perps-sdk'
|
|
2
|
+
import type { OhlcvInterval } from '@lifi/perps-types'
|
|
2
3
|
import { PerpsErrorCode } from '@lifi/perps-types'
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -8,7 +9,7 @@ import { PerpsErrorCode } from '@lifi/perps-types'
|
|
|
8
9
|
* direct match (3m, 2h, 8h, 3d, 1M) raise a validation error rather than
|
|
9
10
|
* silently rounding — the caller picks a supported timeframe.
|
|
10
11
|
*/
|
|
11
|
-
const LIGHTER_SUPPORTED_INTERVALS: Record<
|
|
12
|
+
const LIGHTER_SUPPORTED_INTERVALS: Partial<Record<OhlcvInterval, string>> = {
|
|
12
13
|
'1m': '1m',
|
|
13
14
|
'5m': '5m',
|
|
14
15
|
'15m': '15m',
|
|
@@ -26,7 +27,7 @@ const LIGHTER_SUPPORTED_INTERVALS: Record<string, string> = {
|
|
|
26
27
|
*
|
|
27
28
|
* @public
|
|
28
29
|
*/
|
|
29
|
-
export const mapInterval = (interval:
|
|
30
|
+
export const mapInterval = (interval: OhlcvInterval): string => {
|
|
30
31
|
const resolution = LIGHTER_SUPPORTED_INTERVALS[interval]
|
|
31
32
|
if (!resolution) {
|
|
32
33
|
throw new PerpsError(
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
LT_ORDER_TYPE_STOP_LOSS_LIMIT,
|
|
14
14
|
LT_ORDER_TYPE_TAKE_PROFIT,
|
|
15
15
|
LT_ORDER_TYPE_TAKE_PROFIT_LIMIT,
|
|
16
|
+
LT_ORDER_TYPE_TWAP,
|
|
16
17
|
LT_TIME_IN_FORCE_GTC,
|
|
17
18
|
LT_TIME_IN_FORCE_IOC,
|
|
18
19
|
LT_TIME_IN_FORCE_POST_ONLY,
|
|
@@ -61,10 +62,9 @@ export const leverageToFraction = (leverage: number): number => {
|
|
|
61
62
|
|
|
62
63
|
/**
|
|
63
64
|
* Map a LI.FI `OrderType` value to Lighter's integer wire type.
|
|
64
|
-
*
|
|
65
65
|
* Supported mappings are LIMIT → 0, MARKET → 1, STOP_MARKET → 2,
|
|
66
|
-
* STOP_LIMIT → 3, TAKE_PROFIT_MARKET → 4,
|
|
67
|
-
* Omitted or unknown values fall back to LIMIT.
|
|
66
|
+
* STOP_LIMIT → 3, TAKE_PROFIT_MARKET → 4, TAKE_PROFIT_LIMIT → 5, and
|
|
67
|
+
* TWAP → 6. Omitted or unknown values fall back to LIMIT.
|
|
68
68
|
*
|
|
69
69
|
* @param type - LI.FI order type value.
|
|
70
70
|
* @returns The corresponding Lighter order-type integer.
|
|
@@ -78,6 +78,7 @@ export const mapOrderTypeToInt = (type?: string): number => {
|
|
|
78
78
|
STOP_LIMIT: LT_ORDER_TYPE_STOP_LOSS_LIMIT,
|
|
79
79
|
TAKE_PROFIT_MARKET: LT_ORDER_TYPE_TAKE_PROFIT,
|
|
80
80
|
TAKE_PROFIT_LIMIT: LT_ORDER_TYPE_TAKE_PROFIT_LIMIT,
|
|
81
|
+
TWAP: LT_ORDER_TYPE_TWAP,
|
|
81
82
|
}
|
|
82
83
|
return map[type ?? 'LIMIT'] ?? LT_ORDER_TYPE_LIMIT
|
|
83
84
|
}
|