@lifi/perps-sdk-provider-lighter 9.0.0 → 10.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 +4 -0
- package/dist/cjs/LighterProvider.js.map +1 -1
- package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
- package/dist/cjs/signers/LighterSigner.js +25 -5
- package/dist/cjs/signers/LighterSigner.js.map +1 -1
- package/dist/cjs/types/account.d.ts +4 -1
- package/dist/cjs/types/account.d.ts.map +1 -1
- package/dist/cjs/types/action.d.ts +4 -1
- package/dist/cjs/types/action.d.ts.map +1 -1
- package/dist/cjs/types/action.js.map +1 -1
- package/dist/cjs/utils/assetCollateral.d.ts +2 -1
- package/dist/cjs/utils/assetCollateral.d.ts.map +1 -1
- package/dist/cjs/utils/assetCollateral.js +1 -1
- package/dist/cjs/utils/assetCollateral.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +3 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/withdrawableBalances.d.ts +4 -0
- package/dist/cjs/utils/withdrawableBalances.d.ts.map +1 -0
- package/dist/cjs/utils/withdrawableBalances.js +21 -0
- package/dist/cjs/utils/withdrawableBalances.js.map +1 -0
- package/dist/esm/LighterProvider.d.ts.map +1 -1
- package/dist/esm/LighterProvider.js +5 -1
- package/dist/esm/LighterProvider.js.map +1 -1
- package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
- package/dist/esm/signers/LighterSigner.js +25 -11
- package/dist/esm/signers/LighterSigner.js.map +1 -1
- package/dist/esm/types/account.d.ts +17 -6
- package/dist/esm/types/account.d.ts.map +1 -1
- package/dist/esm/types/action.d.ts +14 -2
- package/dist/esm/types/action.d.ts.map +1 -1
- package/dist/esm/types/action.js.map +1 -1
- package/dist/esm/utils/assetCollateral.d.ts +3 -2
- package/dist/esm/utils/assetCollateral.d.ts.map +1 -1
- package/dist/esm/utils/assetCollateral.js +5 -5
- package/dist/esm/utils/assetCollateral.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/withdrawableBalances.d.ts +12 -0
- package/dist/esm/utils/withdrawableBalances.d.ts.map +1 -0
- package/dist/esm/utils/withdrawableBalances.js +25 -0
- package/dist/esm/utils/withdrawableBalances.js.map +1 -0
- package/dist/types/LighterProvider.d.ts.map +1 -1
- package/dist/types/signers/LighterSigner.d.ts.map +1 -1
- package/dist/types/types/account.d.ts +17 -6
- package/dist/types/types/account.d.ts.map +1 -1
- package/dist/types/types/action.d.ts +14 -2
- package/dist/types/types/action.d.ts.map +1 -1
- package/dist/types/utils/assetCollateral.d.ts +3 -2
- package/dist/types/utils/assetCollateral.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/withdrawableBalances.d.ts +12 -0
- package/dist/types/utils/withdrawableBalances.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/LighterProvider.ts +14 -0
- package/src/signers/LighterSigner.ts +32 -15
- package/src/types/account.ts +18 -6
- package/src/types/action.ts +14 -2
- package/src/utils/assetCollateral.ts +8 -6
- package/src/utils/index.ts +1 -0
- package/src/utils/withdrawableBalances.ts +31 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uBAAuB,EAAE,MAAM,CAAA;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,yBAAyB,EAAE,MAAM,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,14 +63,26 @@ export type LtUpdateMarginWasmParams = {
|
|
|
63
63
|
direction: number;
|
|
64
64
|
};
|
|
65
65
|
/**
|
|
66
|
-
* Backend-provided params for SignWithdraw.
|
|
66
|
+
* Backend-provided params for SignWithdraw. The asset and route are the
|
|
67
|
+
* caller's selection, not a signer default, and the remaining fields are the
|
|
68
|
+
* venue metadata the signer needs to scale and bounds-check `amount` without
|
|
69
|
+
* an asset registry of its own.
|
|
67
70
|
*
|
|
68
71
|
* @public
|
|
69
72
|
*/
|
|
70
73
|
export type LtWithdrawWasmParams = {
|
|
74
|
+
/** Lighter L2 `asset_id` being withdrawn. */
|
|
71
75
|
asset_index: number;
|
|
76
|
+
/** {@link LT_ROUTE_PERP} or {@link LT_ROUTE_SPOT}; anything else is rejected. */
|
|
72
77
|
route_type: number;
|
|
73
|
-
amount
|
|
78
|
+
/** Decimal amount in the asset's own units, unscaled. */
|
|
79
|
+
amount: string;
|
|
80
|
+
/** The asset's L2 precision — the exponent `amount` is scaled by. */
|
|
81
|
+
decimals: number;
|
|
82
|
+
/** Venue minimum for a single withdrawal, in the asset's own units. */
|
|
83
|
+
min_withdrawal_amount: string;
|
|
84
|
+
/** Asset symbol, named in a sub-minimum rejection. */
|
|
85
|
+
symbol: string;
|
|
74
86
|
};
|
|
75
87
|
/**
|
|
76
88
|
* Backend-provided params for SignCancelAllOrders.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,wBAAwB,EAAE,MAAM,CAAA;IAChC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,wBAAwB,EAAE,MAAM,CAAA;IAChC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { LtAssetMarginMode } from '../types/account.js';
|
|
1
2
|
/** Map the user-facing `enabled` flag to Lighter's `AssetMarginMode` wire int. */
|
|
2
3
|
export declare function assetMarginModeInt(enabled: boolean): number;
|
|
3
|
-
/** Decode Lighter's `margin_mode`
|
|
4
|
-
export declare function isAssetMarginEnabled(marginMode:
|
|
4
|
+
/** Decode Lighter's `margin_mode` on an account asset back to `enabled`. */
|
|
5
|
+
export declare function isAssetMarginEnabled(marginMode: LtAssetMarginMode): boolean;
|
|
5
6
|
//# sourceMappingURL=assetCollateral.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetCollateral.d.ts","sourceRoot":"","sources":["../../../src/utils/assetCollateral.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assetCollateral.d.ts","sourceRoot":"","sources":["../../../src/utils/assetCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAS5D,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE3D;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAE3E"}
|
|
@@ -16,4 +16,5 @@ export { formatOrderPrice, formatOrderSize } from './orderFormatting.js';
|
|
|
16
16
|
export { toIsoFromMs, toIsoFromSeconds } from './time.js';
|
|
17
17
|
export { positionMarginConstraints } from './transferMargin.js';
|
|
18
18
|
export { leverageToFraction, mapOrderTypeToInt, mapTimeInForceToInt, marginFractionToMaxLeverage, orderExpiryForTif, resolveTimeInForce, } from './wireEncoding.js';
|
|
19
|
+
export { lighterWithdrawableBalances } from './withdrawableBalances.js';
|
|
19
20
|
//# 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,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
|
+
{"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;AAC1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProviderWithdrawableBalance } from '@lifi/perps-sdk';
|
|
2
|
+
import type { LtAccountAsset } from '../types/account.js';
|
|
3
|
+
/**
|
|
4
|
+
* Split each held asset into the two routes a Lighter withdrawal can name:
|
|
5
|
+
* spot draws on `balance` net of `locked_balance`, perps draws on
|
|
6
|
+
* `margin_balance`. Routes with nothing left to draw are dropped; the
|
|
7
|
+
* per-asset venue minimum is applied by the caller holding the asset registry.
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export declare const lighterWithdrawableBalances: (assets: LtAccountAsset[]) => ProviderWithdrawableBalance[];
|
|
12
|
+
//# sourceMappingURL=withdrawableBalances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawableBalances.d.ts","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGzD;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GACtC,QAAQ,cAAc,EAAE,KACvB,2BAA2B,EAgB7B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk-provider-lighter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
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.48.8",
|
|
47
|
-
"@lifi/perps-types": "^5.
|
|
47
|
+
"@lifi/perps-types": "^5.1.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@lifi/perps-sdk": "^6.
|
|
50
|
+
"@lifi/perps-sdk": "^6.3.0"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
package/src/LighterProvider.ts
CHANGED
|
@@ -18,6 +18,8 @@ import {
|
|
|
18
18
|
type ProviderGetOrdersParams,
|
|
19
19
|
type ProviderGetPositionsParams,
|
|
20
20
|
type ProviderGetQuoteParams,
|
|
21
|
+
type ProviderGetWithdrawableBalancesParams,
|
|
22
|
+
type ProviderWithdrawableBalance,
|
|
21
23
|
resolveQuote,
|
|
22
24
|
resolveRetryPolicy,
|
|
23
25
|
type SDKRequestOptions,
|
|
@@ -105,6 +107,7 @@ import {
|
|
|
105
107
|
formatOrderSize,
|
|
106
108
|
leverageFromImf,
|
|
107
109
|
lighterAsset,
|
|
110
|
+
lighterWithdrawableBalances,
|
|
108
111
|
mapFill,
|
|
109
112
|
mapOpenPositions,
|
|
110
113
|
mapOrderDetail,
|
|
@@ -846,6 +849,17 @@ export const createLighterProvider = (
|
|
|
846
849
|
)
|
|
847
850
|
},
|
|
848
851
|
|
|
852
|
+
async getWithdrawableBalances(
|
|
853
|
+
params: ProviderGetWithdrawableBalancesParams,
|
|
854
|
+
opts?: SDKRequestOptions
|
|
855
|
+
): Promise<ProviderWithdrawableBalance[]> {
|
|
856
|
+
const account = await fetchDetailedAccount(
|
|
857
|
+
apiClient(opts),
|
|
858
|
+
params.address
|
|
859
|
+
)
|
|
860
|
+
return lighterWithdrawableBalances(account.assets)
|
|
861
|
+
},
|
|
862
|
+
|
|
849
863
|
async getPositions(
|
|
850
864
|
params: ProviderGetPositionsParams,
|
|
851
865
|
opts?: SDKRequestOptions
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { scaleToInteger } from '@lifi/perps-sdk'
|
|
1
2
|
import { ActionType } from '@lifi/perps-types'
|
|
3
|
+
import Big from 'big.js'
|
|
2
4
|
import { LT_ROUTE_PERP, LT_ROUTE_SPOT } from '../types/action.js'
|
|
3
5
|
import { assetMarginModeInt } from '../utils/assetCollateral.js'
|
|
4
6
|
import {
|
|
@@ -99,10 +101,6 @@ const SKIP_NONCE_DISABLED = 0
|
|
|
99
101
|
// CancelAll across every market (lighter-go `NilMarketIndex`); a real index
|
|
100
102
|
// scopes the cancel to a single market.
|
|
101
103
|
const NIL_MARKET_INDEX = 255
|
|
102
|
-
// Collateral withdrawals and transfers ride the perps route (lighter-go
|
|
103
|
-
// `AssetRouteType_Perps`). The signer rejects an asset index < 1.
|
|
104
|
-
const ASSET_ROUTE_TYPE_PERPS = 0
|
|
105
|
-
|
|
106
104
|
// SEND_ASSET is a same-account route→route collateral move (spot↔perp): no
|
|
107
105
|
// fee, and no memo. `SignTransfer` requires a 32-byte memo, so we pass 32 zero
|
|
108
106
|
// bytes in the `0x`-prefixed 64-hex form the WASM signer decodes.
|
|
@@ -483,29 +481,45 @@ export class LighterSigner {
|
|
|
483
481
|
ctx.apiKeyIndex,
|
|
484
482
|
ctx.accountIndex
|
|
485
483
|
)
|
|
486
|
-
case ActionType.WITHDRAWAL:
|
|
484
|
+
case ActionType.WITHDRAWAL: {
|
|
485
|
+
const routeType = numberField(p, 'route_type')
|
|
486
|
+
if (routeType !== LT_ROUTE_PERP && routeType !== LT_ROUTE_SPOT) {
|
|
487
|
+
throw new Error(
|
|
488
|
+
`Lighter WITHDRAWAL route_type ${routeType} is invalid: expected ` +
|
|
489
|
+
`${LT_ROUTE_PERP} (perps) or ${LT_ROUTE_SPOT} (spot)`
|
|
490
|
+
)
|
|
491
|
+
}
|
|
492
|
+
const symbol = stringField(p, 'symbol')
|
|
493
|
+
const amount = stringField(p, 'amount')
|
|
494
|
+
const minimum = stringField(p, 'min_withdrawal_amount')
|
|
495
|
+
if (new Big(amount).lt(new Big(minimum))) {
|
|
496
|
+
throw new Error(
|
|
497
|
+
`Lighter WITHDRAWAL of ${amount} ${symbol} is below the venue ` +
|
|
498
|
+
`minimum of ${minimum} ${symbol}`
|
|
499
|
+
)
|
|
500
|
+
}
|
|
487
501
|
return wasm.SignWithdraw(
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
numberField(p, '
|
|
502
|
+
numberField(p, 'asset_index'),
|
|
503
|
+
routeType,
|
|
504
|
+
scaleToInteger(amount, numberField(p, 'decimals'), 'truncate'),
|
|
491
505
|
SKIP_NONCE_DISABLED,
|
|
492
506
|
nonce,
|
|
493
507
|
ctx.apiKeyIndex,
|
|
494
508
|
ctx.accountIndex
|
|
495
509
|
)
|
|
510
|
+
}
|
|
496
511
|
case ActionType.TRANSFER:
|
|
497
512
|
// SignTransfer's positional args follow the Go binding order:
|
|
498
513
|
// `toAccountIndex, assetIndex, fromRouteType, toRouteType, amount,
|
|
499
514
|
// usdcFee, memo, skipNonce, nonce, apiKeyIndex, accountIndex`. `memo`
|
|
500
|
-
// is
|
|
501
|
-
// string
|
|
502
|
-
//
|
|
503
|
-
// long".
|
|
515
|
+
// is decoded as a 66-char `0x`-prefixed hex string, a bare 64-char hex
|
|
516
|
+
// string, or 32 raw bytes — anything else fails with "memo expected to
|
|
517
|
+
// be 32 bytes or 64 hex encoded or 66 if 0x hex encoded".
|
|
504
518
|
return wasm.SignTransfer(
|
|
505
519
|
numberField(p, 'to_account'),
|
|
506
520
|
this.collateralAssetIndex,
|
|
507
|
-
|
|
508
|
-
|
|
521
|
+
LT_ROUTE_PERP,
|
|
522
|
+
LT_ROUTE_PERP,
|
|
509
523
|
numberField(p, 'usdc_amount'),
|
|
510
524
|
numberField(p, 'fee'),
|
|
511
525
|
stringField(p, 'memo'),
|
|
@@ -648,7 +662,10 @@ function routeFromDex(dex: string): number {
|
|
|
648
662
|
|
|
649
663
|
function stringField(p: Record<string, unknown>, key: string): string {
|
|
650
664
|
const v = p[key]
|
|
651
|
-
if (
|
|
665
|
+
if (v === '') {
|
|
666
|
+
throw new Error(`Lighter sign params string field '${key}' is empty`)
|
|
667
|
+
}
|
|
668
|
+
if (typeof v === 'string') {
|
|
652
669
|
return v
|
|
653
670
|
}
|
|
654
671
|
throw new Error(
|
package/src/types/account.ts
CHANGED
|
@@ -33,24 +33,36 @@ export type LtAccountPosition = {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
|
|
36
|
+
* Cross-margin collateral flag Lighter reports on an account asset row.
|
|
37
|
+
*
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
export type LtAssetMarginMode = 'enabled' | 'disabled'
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Held asset row returned in a Lighter account response. The two balances are
|
|
44
|
+
* the asset's two withdrawal routes: `balance` is the spot route
|
|
45
|
+
* (`AssetRouteType_Spot`) and `margin_balance` the perps route
|
|
46
|
+
* (`AssetRouteType_Perps`). All amounts are decimal strings.
|
|
40
47
|
*
|
|
41
48
|
* @public
|
|
42
49
|
*/
|
|
43
50
|
export type LtAccountAsset = {
|
|
44
51
|
symbol: string
|
|
45
52
|
asset_id: number
|
|
53
|
+
/** Spot-route balance, `locked_balance` included. */
|
|
46
54
|
balance: string
|
|
55
|
+
/** Portion of `balance` reserved by pending activity and not withdrawable. */
|
|
47
56
|
locked_balance: string
|
|
57
|
+
/** Perps-route balance — the asset's collateral leg. */
|
|
58
|
+
margin_balance: string
|
|
59
|
+
/** Collateral weighting Lighter applies to the asset, as a decimal factor. */
|
|
60
|
+
multiplier: string
|
|
48
61
|
/**
|
|
49
|
-
* Cross-margin collateral flag: 0 = MarginDisabled, 1 = MarginEnabled.
|
|
50
62
|
* Lighter surfaces it via `additional_properties`, so it may be absent —
|
|
51
63
|
* chiefly outside Unified Trading Account mode.
|
|
52
64
|
*/
|
|
53
|
-
margin_mode?:
|
|
65
|
+
margin_mode?: LtAssetMarginMode
|
|
54
66
|
}
|
|
55
67
|
|
|
56
68
|
/**
|
package/src/types/action.ts
CHANGED
|
@@ -72,14 +72,26 @@ export type LtUpdateMarginWasmParams = {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
|
-
* Backend-provided params for SignWithdraw.
|
|
75
|
+
* Backend-provided params for SignWithdraw. The asset and route are the
|
|
76
|
+
* caller's selection, not a signer default, and the remaining fields are the
|
|
77
|
+
* venue metadata the signer needs to scale and bounds-check `amount` without
|
|
78
|
+
* an asset registry of its own.
|
|
76
79
|
*
|
|
77
80
|
* @public
|
|
78
81
|
*/
|
|
79
82
|
export type LtWithdrawWasmParams = {
|
|
83
|
+
/** Lighter L2 `asset_id` being withdrawn. */
|
|
80
84
|
asset_index: number
|
|
85
|
+
/** {@link LT_ROUTE_PERP} or {@link LT_ROUTE_SPOT}; anything else is rejected. */
|
|
81
86
|
route_type: number
|
|
82
|
-
amount
|
|
87
|
+
/** Decimal amount in the asset's own units, unscaled. */
|
|
88
|
+
amount: string
|
|
89
|
+
/** The asset's L2 precision — the exponent `amount` is scaled by. */
|
|
90
|
+
decimals: number
|
|
91
|
+
/** Venue minimum for a single withdrawal, in the asset's own units. */
|
|
92
|
+
min_withdrawal_amount: string
|
|
93
|
+
/** Asset symbol, named in a sub-minimum rejection. */
|
|
94
|
+
symbol: string
|
|
83
95
|
}
|
|
84
96
|
|
|
85
97
|
/**
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { LtAssetMarginMode } from '../types/account.js'
|
|
2
|
+
|
|
1
3
|
// Lighter's `AssetMarginMode` wire ints (lighter-go
|
|
2
|
-
// `types/txtypes/update_account_asset_config.go`), used
|
|
3
|
-
//
|
|
4
|
-
//
|
|
4
|
+
// `types/txtypes/update_account_asset_config.go`), used to sign
|
|
5
|
+
// `L2UpdateAccountAssetConfigTx` (tx type 42). The read side is not symmetric:
|
|
6
|
+
// `/api/v1/account` reports the same flag as a string.
|
|
5
7
|
const ASSET_MARGIN_DISABLED = 0
|
|
6
8
|
const ASSET_MARGIN_ENABLED = 1
|
|
7
9
|
|
|
@@ -10,7 +12,7 @@ export function assetMarginModeInt(enabled: boolean): number {
|
|
|
10
12
|
return enabled ? ASSET_MARGIN_ENABLED : ASSET_MARGIN_DISABLED
|
|
11
13
|
}
|
|
12
14
|
|
|
13
|
-
/** Decode Lighter's `margin_mode`
|
|
14
|
-
export function isAssetMarginEnabled(marginMode:
|
|
15
|
-
return marginMode ===
|
|
15
|
+
/** Decode Lighter's `margin_mode` on an account asset back to `enabled`. */
|
|
16
|
+
export function isAssetMarginEnabled(marginMode: LtAssetMarginMode): boolean {
|
|
17
|
+
return marginMode === 'enabled'
|
|
16
18
|
}
|
package/src/utils/index.ts
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ProviderWithdrawableBalance } from '@lifi/perps-sdk'
|
|
2
|
+
import type { LtAccountAsset } from '../types/account.js'
|
|
3
|
+
import { toRequiredBig } from './decimal.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Split each held asset into the two routes a Lighter withdrawal can name:
|
|
7
|
+
* spot draws on `balance` net of `locked_balance`, perps draws on
|
|
8
|
+
* `margin_balance`. Routes with nothing left to draw are dropped; the
|
|
9
|
+
* per-asset venue minimum is applied by the caller holding the asset registry.
|
|
10
|
+
*
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export const lighterWithdrawableBalances = (
|
|
14
|
+
assets: LtAccountAsset[]
|
|
15
|
+
): ProviderWithdrawableBalance[] => {
|
|
16
|
+
const rows: ProviderWithdrawableBalance[] = []
|
|
17
|
+
for (const asset of assets) {
|
|
18
|
+
const assetId = String(asset.asset_id)
|
|
19
|
+
const spot = toRequiredBig(asset.balance, 'balance').minus(
|
|
20
|
+
toRequiredBig(asset.locked_balance, 'locked_balance')
|
|
21
|
+
)
|
|
22
|
+
if (spot.gt(0)) {
|
|
23
|
+
rows.push({ assetId, route: 'spot', available: spot.toFixed() })
|
|
24
|
+
}
|
|
25
|
+
const perps = toRequiredBig(asset.margin_balance, 'margin_balance')
|
|
26
|
+
if (perps.gt(0)) {
|
|
27
|
+
rows.push({ assetId, route: 'perps', available: perps.toFixed() })
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return rows
|
|
31
|
+
}
|