@lifi/perps-sdk-provider-lighter 8.1.0 → 8.2.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 +6 -3
- package/dist/cjs/LighterProvider.js.map +1 -1
- package/dist/cjs/constants.d.ts +7 -1
- package/dist/cjs/constants.d.ts.map +1 -1
- package/dist/cjs/constants.js +12 -2
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/signers/LighterSigner.d.ts +2 -0
- package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
- package/dist/cjs/signers/LighterSigner.js +5 -4
- package/dist/cjs/signers/LighterSigner.js.map +1 -1
- package/dist/cjs/types/action.d.ts.map +1 -1
- package/dist/cjs/types/action.js.map +1 -1
- package/dist/cjs/utils/lighterAsset.d.ts +2 -2
- package/dist/cjs/utils/lighterAsset.d.ts.map +1 -1
- package/dist/cjs/utils/lighterAsset.js +2 -2
- package/dist/cjs/utils/lighterAsset.js.map +1 -1
- package/dist/esm/LighterProvider.d.ts.map +1 -1
- package/dist/esm/LighterProvider.js +10 -6
- package/dist/esm/LighterProvider.js.map +1 -1
- package/dist/esm/constants.d.ts +32 -6
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/constants.js +24 -6
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/signers/LighterSigner.d.ts +9 -2
- package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
- package/dist/esm/signers/LighterSigner.js +11 -10
- package/dist/esm/signers/LighterSigner.js.map +1 -1
- package/dist/esm/types/action.d.ts +3 -1
- package/dist/esm/types/action.d.ts.map +1 -1
- package/dist/esm/types/action.js +3 -1
- package/dist/esm/types/action.js.map +1 -1
- package/dist/esm/utils/lighterAsset.d.ts +3 -2
- package/dist/esm/utils/lighterAsset.d.ts.map +1 -1
- package/dist/esm/utils/lighterAsset.js +3 -2
- package/dist/esm/utils/lighterAsset.js.map +1 -1
- package/dist/types/LighterProvider.d.ts.map +1 -1
- package/dist/types/constants.d.ts +32 -6
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/signers/LighterSigner.d.ts +9 -2
- package/dist/types/signers/LighterSigner.d.ts.map +1 -1
- package/dist/types/types/action.d.ts +3 -1
- package/dist/types/types/action.d.ts.map +1 -1
- package/dist/types/utils/lighterAsset.d.ts +3 -2
- package/dist/types/utils/lighterAsset.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/LighterProvider.ts +16 -5
- package/src/constants.ts +47 -7
- package/src/index.ts +2 -0
- package/src/signers/LighterSigner.ts +19 -12
- package/src/types/action.ts +3 -1
- package/src/utils/lighterAsset.ts +8 -3
|
@@ -5,6 +5,12 @@ import type { FeeTier, LighterProviderKey } from '@lifi/perps-types';
|
|
|
5
5
|
* @public
|
|
6
6
|
*/
|
|
7
7
|
export declare const LIGHTER_PROVIDER_KEY = "lighter";
|
|
8
|
+
/**
|
|
9
|
+
* Provider key for the Lighter instance running on Robinhood chain.
|
|
10
|
+
*
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export declare const LIGHTER_RH_PROVIDER_KEY = "lighter-rh";
|
|
8
14
|
/**
|
|
9
15
|
* Category id for Lighter spot token holdings, matching the backend's Lighter
|
|
10
16
|
* spot asset category. The perps category id is not a constant — it is read
|
|
@@ -38,6 +44,27 @@ export declare const DEFAULT_LIGHTER_SIGNER_CHAIN_ID = 304;
|
|
|
38
44
|
* @public
|
|
39
45
|
*/
|
|
40
46
|
export declare const DEFAULT_LIGHTER_EXPLORER_TX_BASE_URL = "https://app.lighter.xyz/explorer/logs/";
|
|
47
|
+
/**
|
|
48
|
+
* The collateral asset a Lighter deployment settles in: the L2 asset index its
|
|
49
|
+
* withdrawals, transfers and route moves are signed against, plus the symbol
|
|
50
|
+
* shown for the collateral balance.
|
|
51
|
+
*
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
54
|
+
export interface LighterCollateralAsset {
|
|
55
|
+
/** L2 asset index, as `asset_id` on the deployment's `/api/v1/assetDetails`. */
|
|
56
|
+
assetIndex: number;
|
|
57
|
+
displaySymbol: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Collateral asset per Lighter deployment, each read from that deployment's
|
|
61
|
+
* `/api/v1/assetDetails`: mainnet settles in USDC, Robinhood chain in USDG.
|
|
62
|
+
* Both sit at asset index 3 of their own registry — the same slot holds a
|
|
63
|
+
* different token per deployment, so an index alone never identifies the asset.
|
|
64
|
+
*
|
|
65
|
+
* @public
|
|
66
|
+
*/
|
|
67
|
+
export declare const LIGHTER_COLLATERAL_ASSETS: Record<LighterProviderKey, LighterCollateralAsset>;
|
|
41
68
|
/**
|
|
42
69
|
* The venue-specific facts that distinguish one Lighter deployment from
|
|
43
70
|
* another. One provider + WS pair is built per instance from these; a client
|
|
@@ -55,6 +82,11 @@ export interface LighterInstanceConfig {
|
|
|
55
82
|
* {@link LighterSigner} with.
|
|
56
83
|
*/
|
|
57
84
|
signerChainId: number;
|
|
85
|
+
/**
|
|
86
|
+
* Collateral asset this deployment settles in — signed into its withdrawals
|
|
87
|
+
* and transfers, and reported as its collateral balance.
|
|
88
|
+
*/
|
|
89
|
+
collateral: LighterCollateralAsset;
|
|
58
90
|
/**
|
|
59
91
|
* Explorer tx base URL for transfer-activity links (`${base}${txHash}`).
|
|
60
92
|
* When omitted, transfer links are not emitted for this instance.
|
|
@@ -68,12 +100,6 @@ export interface LighterInstanceConfig {
|
|
|
68
100
|
* @public
|
|
69
101
|
*/
|
|
70
102
|
export declare const LIGHTER_MAINNET_INSTANCE: LighterInstanceConfig;
|
|
71
|
-
/**
|
|
72
|
-
* Provider key for the Lighter instance running on Robinhood chain.
|
|
73
|
-
*
|
|
74
|
-
* @public
|
|
75
|
-
*/
|
|
76
|
-
export declare const LIGHTER_RH_PROVIDER_KEY = "lighter-rh";
|
|
77
103
|
/**
|
|
78
104
|
* Default REST base URL for the Lighter Robinhood deployment.
|
|
79
105
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGpE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAE7C;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,SAAS,CAAA;AAE9C;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,wCAAwC,CAAA;AAC7E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,6CAA6C,CAAA;AAEhF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAA;AAElD;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,2CACP,CAAA;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAC5C,kBAAkB,EAClB,sBAAsB,CAOvB,CAAA;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,WAAW,EAAE,kBAAkB,CAAA;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,UAAU,EAAE,sBAAsB,CAAA;IAClC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,qBAOtC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,+BAA+B,CAAA;AAC/D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,oCAAoC,CAAA;AAElE;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,WAAW,0BAA0B,KACpC,qBAOD,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,UAAY,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAoC,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,gBAAgB;AAChB,QAAA,MAAM,8BAA8B,QAAQ,CAAA;AAE5C;;;;GAIG;AACH,QAAA,MAAM,yBAAyB,QAAQ,CAAA;AAEvC;;;;;;GAMG;AACH,QAAA,MAAM,qBAAqB,aAAoB,CAAA;AAE/C;;;;;;GAMG;AACH,QAAA,MAAM,6BAA6B,MAAM,CAAA;AAEzC,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,6BAA6B,EAC7B,qBAAqB,GACtB,CAAA"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export { projectLighterConfigSettings } from './accountConfig.js';
|
|
13
13
|
export { getAccountSummary } from './accountSummary.js';
|
|
14
|
-
export type { LighterInstanceConfig, LighterRhInstanceOverrides, } from './constants.js';
|
|
15
|
-
export { DEFAULT_API_KEY_INDEX, DEFAULT_LIGHTER_EXPLORER_TX_BASE_URL, DEFAULT_LIGHTER_REST_URL, DEFAULT_LIGHTER_SIGNER_CHAIN_ID, DEFAULT_LIGHTER_WS_URL, LIGHTER_MAINNET_INSTANCE, LIGHTER_PROVIDER_KEY, LIGHTER_RH_PROVIDER_KEY, LIGHTER_RH_REST_URL, LIGHTER_RH_WS_URL, LIGHTER_SPOT_CATEGORY_ID, lighterRhInstance, } from './constants.js';
|
|
14
|
+
export type { LighterCollateralAsset, LighterInstanceConfig, LighterRhInstanceOverrides, } from './constants.js';
|
|
15
|
+
export { DEFAULT_API_KEY_INDEX, DEFAULT_LIGHTER_EXPLORER_TX_BASE_URL, DEFAULT_LIGHTER_REST_URL, DEFAULT_LIGHTER_SIGNER_CHAIN_ID, DEFAULT_LIGHTER_WS_URL, LIGHTER_COLLATERAL_ASSETS, LIGHTER_MAINNET_INSTANCE, LIGHTER_PROVIDER_KEY, LIGHTER_RH_PROVIDER_KEY, LIGHTER_RH_REST_URL, LIGHTER_RH_WS_URL, LIGHTER_SPOT_CATEGORY_ID, lighterRhInstance, } from './constants.js';
|
|
16
16
|
export { lighterDepositFlow } from './depositFlow.js';
|
|
17
17
|
export type { LighterPerpsProvider, LighterProviderOptions, } from './LighterProvider.js';
|
|
18
18
|
export { Lighter, lighterProvider } from './LighterProvider.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EACV,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,qBAAqB,EACrB,oCAAoC,EACpC,wBAAwB,EACxB,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/D,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAChF,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,iBAAiB,GAClB,MAAM,kCAAkC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,qBAAqB,EACrB,oCAAoC,EACpC,wBAAwB,EACxB,+BAA+B,EAC/B,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/D,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAChF,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,iBAAiB,GAClB,MAAM,kCAAkC,CAAA"}
|
|
@@ -16,8 +16,8 @@ export interface LighterSignerContext {
|
|
|
16
16
|
accountIndex: number;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* Configuration for {@link LighterSigner}
|
|
20
|
-
*
|
|
19
|
+
* Configuration for {@link LighterSigner}: optional WASM asset overrides plus
|
|
20
|
+
* the per-instance REST base URL, signing chain id and collateral asset index.
|
|
21
21
|
*
|
|
22
22
|
* @public
|
|
23
23
|
*/
|
|
@@ -26,6 +26,12 @@ export interface LighterSignerConfig extends LoadLighterWasmOptions {
|
|
|
26
26
|
apiUrl?: string;
|
|
27
27
|
/** Lighter chain ID (304 = mainnet). */
|
|
28
28
|
chainId?: number;
|
|
29
|
+
/**
|
|
30
|
+
* L2 asset index this instance's withdrawals and transfers are signed
|
|
31
|
+
* against — pass the instance's `collateral.assetIndex`. Defaults to
|
|
32
|
+
* mainnet's USDC slot.
|
|
33
|
+
*/
|
|
34
|
+
collateralAssetIndex?: number;
|
|
29
35
|
}
|
|
30
36
|
/**
|
|
31
37
|
* Signed Lighter transaction blob returned by the WASM signer. `txType`,
|
|
@@ -79,6 +85,7 @@ export interface ApiKeyPair {
|
|
|
79
85
|
export declare class LighterSigner {
|
|
80
86
|
private readonly apiUrl;
|
|
81
87
|
private readonly chainId;
|
|
88
|
+
private readonly collateralAssetIndex;
|
|
82
89
|
private readonly loaderOptions;
|
|
83
90
|
private wasm;
|
|
84
91
|
private readonly registeredClients;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LighterSigner.d.ts","sourceRoot":"","sources":["../../../src/signers/LighterSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAW9C,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,iBAAiB,CAAA;AAOxB;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,CAAA;IACxB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"LighterSigner.d.ts","sourceRoot":"","sources":["../../../src/signers/LighterSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAW9C,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,iBAAiB,CAAA;AAOxB;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,CAAA;IACxB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,sFAAsF;IACtF,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,qHAAqH;IACrH,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AA+BD;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,MAAM,GAAE,mBAAwB;IAW5C;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC;IAY3C;;;;;;;;;OASG;IACG,IAAI,CACR,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC;IAmB7B;;;;;;;;;;;OAWG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,CAAC,GAAG,CAAK,GACnB,OAAO,CAAC,kBAAkB,CAAC;IAsC9B;;;;;;;OAOG;IACG,qBAAqB,CACzB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;IA8BnC;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAa7D;;;OAGG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;YAiBJ,YAAY;YAOZ,YAAY;IAmB1B;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;CA+MjB"}
|
|
@@ -178,7 +178,9 @@ export declare const LT_ROUTE_PERP = 0;
|
|
|
178
178
|
*/
|
|
179
179
|
export declare const LT_ROUTE_SPOT = 1;
|
|
180
180
|
/**
|
|
181
|
-
*
|
|
181
|
+
* L2 asset index of USDC on Lighter mainnet — the collateral slot mainnet
|
|
182
|
+
* withdrawals, transfers and L1 bridge deposits address. Other deployments
|
|
183
|
+
* settle in their own asset; see `LIGHTER_COLLATERAL_ASSETS`.
|
|
182
184
|
* @public
|
|
183
185
|
*/
|
|
184
186
|
export declare const LT_ASSET_ID_USDC = 3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { Asset } from '@lifi/perps-types';
|
|
1
|
+
import type { Asset, LighterProviderKey } from '@lifi/perps-types';
|
|
2
2
|
/**
|
|
3
3
|
* Create the SDK asset descriptor for a Lighter asset identifier and display
|
|
4
4
|
* symbol. Lighter assets do not provide a package-level logo URI, so this
|
|
5
5
|
* helper leaves that field empty.
|
|
6
6
|
*
|
|
7
|
+
* @param providerId - Instance the asset belongs to; defaults to mainnet.
|
|
7
8
|
* @public
|
|
8
9
|
*/
|
|
9
|
-
export declare const lighterAsset: (id: string, displaySymbol: string) => Asset;
|
|
10
|
+
export declare const lighterAsset: (id: string, displaySymbol: string, providerId?: LighterProviderKey) => Asset;
|
|
10
11
|
//# sourceMappingURL=lighterAsset.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lighterAsset.d.ts","sourceRoot":"","sources":["../../../src/utils/lighterAsset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"lighterAsset.d.ts","sourceRoot":"","sources":["../../../src/utils/lighterAsset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGlE;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,IAAI,MAAM,EACV,eAAe,MAAM,EACrB,aAAY,kBAAyC,KACpD,KAKD,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk-provider-lighter",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "Lighter provider plugin for @lifi/perps-sdk",
|
|
5
5
|
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"big.js": "^7.0.1",
|
|
48
48
|
"viem": "^2.48.8",
|
|
49
|
-
"@lifi/perps-types": "^
|
|
49
|
+
"@lifi/perps-types": "^5.0.0"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@lifi/perps-sdk": "^6.2.
|
|
52
|
+
"@lifi/perps-sdk": "^6.2.1"
|
|
53
53
|
},
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|
package/src/LighterProvider.ts
CHANGED
|
@@ -61,6 +61,7 @@ import {
|
|
|
61
61
|
DEFAULT_TRADES_LIMIT,
|
|
62
62
|
LIGHTER_ALL_MARKETS_WILDCARD,
|
|
63
63
|
LIGHTER_BASE_FEE_TIER,
|
|
64
|
+
LIGHTER_COLLATERAL_ASSETS,
|
|
64
65
|
LIGHTER_FEE_TICK_SCALE,
|
|
65
66
|
LIGHTER_HISTORY_PAGE_SIZE,
|
|
66
67
|
LIGHTER_PROVIDER_KEY,
|
|
@@ -314,6 +315,7 @@ export const lighterProvider = (
|
|
|
314
315
|
(providerKey === LIGHTER_PROVIDER_KEY
|
|
315
316
|
? DEFAULT_LIGHTER_EXPLORER_TX_BASE_URL
|
|
316
317
|
: undefined)
|
|
318
|
+
const collateral = LIGHTER_COLLATERAL_ASSETS[providerKey]
|
|
317
319
|
const authTokenSource: (() => string | Promise<string>) | undefined =
|
|
318
320
|
typeof options.authToken === 'function'
|
|
319
321
|
? options.authToken
|
|
@@ -801,20 +803,29 @@ export const lighterProvider = (
|
|
|
801
803
|
const collateralBalances: Balance[] = [
|
|
802
804
|
{
|
|
803
805
|
categoryId: perpsCategory?.id ?? providerKey,
|
|
804
|
-
asset:
|
|
806
|
+
asset:
|
|
807
|
+
perpsCategory?.quoteAsset ??
|
|
808
|
+
lighterAsset(
|
|
809
|
+
collateral.displaySymbol,
|
|
810
|
+
collateral.displaySymbol,
|
|
811
|
+
providerKey
|
|
812
|
+
),
|
|
805
813
|
units: availableMargin.toString(),
|
|
806
814
|
valueUsd: availableMargin.toString(),
|
|
807
815
|
},
|
|
808
816
|
]
|
|
809
|
-
// Spot token holdings — non-collateral.
|
|
810
|
-
// have no price source at this boundary, so
|
|
817
|
+
// Spot token holdings — non-collateral. The instance's settlement asset
|
|
818
|
+
// is valued 1:1; other tokens have no price source at this boundary, so
|
|
819
|
+
// their USD value is unknown.
|
|
811
820
|
const balances: Balance[] = account.assets.map((a) => {
|
|
812
821
|
const assetId = String(a.asset_id)
|
|
813
822
|
return {
|
|
814
823
|
categoryId: spotCategoryId,
|
|
815
|
-
asset:
|
|
824
|
+
asset:
|
|
825
|
+
assetRegistry.get(assetId) ??
|
|
826
|
+
lighterAsset(assetId, a.symbol, providerKey),
|
|
816
827
|
units: a.balance,
|
|
817
|
-
valueUsd: a.
|
|
828
|
+
valueUsd: a.asset_id === collateral.assetIndex ? a.balance : '0',
|
|
818
829
|
}
|
|
819
830
|
})
|
|
820
831
|
|
package/src/constants.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FeeTier, LighterProviderKey } from '@lifi/perps-types'
|
|
2
|
+
import { LT_ASSET_ID_USDC } from './types/action.js'
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Lighter provider key as it appears on `Provider.key` from the backend.
|
|
@@ -7,6 +8,13 @@ import type { FeeTier, LighterProviderKey } from '@lifi/perps-types'
|
|
|
7
8
|
*/
|
|
8
9
|
export const LIGHTER_PROVIDER_KEY = 'lighter'
|
|
9
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Provider key for the Lighter instance running on Robinhood chain.
|
|
13
|
+
*
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export const LIGHTER_RH_PROVIDER_KEY = 'lighter-rh'
|
|
17
|
+
|
|
10
18
|
/**
|
|
11
19
|
* Category id for Lighter spot token holdings, matching the backend's Lighter
|
|
12
20
|
* spot asset category. The perps category id is not a constant — it is read
|
|
@@ -45,6 +53,38 @@ export const DEFAULT_LIGHTER_SIGNER_CHAIN_ID = 304
|
|
|
45
53
|
export const DEFAULT_LIGHTER_EXPLORER_TX_BASE_URL =
|
|
46
54
|
'https://app.lighter.xyz/explorer/logs/'
|
|
47
55
|
|
|
56
|
+
/**
|
|
57
|
+
* The collateral asset a Lighter deployment settles in: the L2 asset index its
|
|
58
|
+
* withdrawals, transfers and route moves are signed against, plus the symbol
|
|
59
|
+
* shown for the collateral balance.
|
|
60
|
+
*
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
export interface LighterCollateralAsset {
|
|
64
|
+
/** L2 asset index, as `asset_id` on the deployment's `/api/v1/assetDetails`. */
|
|
65
|
+
assetIndex: number
|
|
66
|
+
displaySymbol: string
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Collateral asset per Lighter deployment, each read from that deployment's
|
|
71
|
+
* `/api/v1/assetDetails`: mainnet settles in USDC, Robinhood chain in USDG.
|
|
72
|
+
* Both sit at asset index 3 of their own registry — the same slot holds a
|
|
73
|
+
* different token per deployment, so an index alone never identifies the asset.
|
|
74
|
+
*
|
|
75
|
+
* @public
|
|
76
|
+
*/
|
|
77
|
+
export const LIGHTER_COLLATERAL_ASSETS: Record<
|
|
78
|
+
LighterProviderKey,
|
|
79
|
+
LighterCollateralAsset
|
|
80
|
+
> = {
|
|
81
|
+
[LIGHTER_PROVIDER_KEY]: {
|
|
82
|
+
assetIndex: LT_ASSET_ID_USDC,
|
|
83
|
+
displaySymbol: 'USDC',
|
|
84
|
+
},
|
|
85
|
+
[LIGHTER_RH_PROVIDER_KEY]: { assetIndex: 3, displaySymbol: 'USDG' },
|
|
86
|
+
}
|
|
87
|
+
|
|
48
88
|
/**
|
|
49
89
|
* The venue-specific facts that distinguish one Lighter deployment from
|
|
50
90
|
* another. One provider + WS pair is built per instance from these; a client
|
|
@@ -62,6 +102,11 @@ export interface LighterInstanceConfig {
|
|
|
62
102
|
* {@link LighterSigner} with.
|
|
63
103
|
*/
|
|
64
104
|
signerChainId: number
|
|
105
|
+
/**
|
|
106
|
+
* Collateral asset this deployment settles in — signed into its withdrawals
|
|
107
|
+
* and transfers, and reported as its collateral balance.
|
|
108
|
+
*/
|
|
109
|
+
collateral: LighterCollateralAsset
|
|
65
110
|
/**
|
|
66
111
|
* Explorer tx base URL for transfer-activity links (`${base}${txHash}`).
|
|
67
112
|
* When omitted, transfer links are not emitted for this instance.
|
|
@@ -80,16 +125,10 @@ export const LIGHTER_MAINNET_INSTANCE: LighterInstanceConfig = {
|
|
|
80
125
|
restUrl: DEFAULT_LIGHTER_REST_URL,
|
|
81
126
|
wsUrl: DEFAULT_LIGHTER_WS_URL,
|
|
82
127
|
signerChainId: DEFAULT_LIGHTER_SIGNER_CHAIN_ID,
|
|
128
|
+
collateral: LIGHTER_COLLATERAL_ASSETS[LIGHTER_PROVIDER_KEY],
|
|
83
129
|
explorerTxBaseUrl: DEFAULT_LIGHTER_EXPLORER_TX_BASE_URL,
|
|
84
130
|
}
|
|
85
131
|
|
|
86
|
-
/**
|
|
87
|
-
* Provider key for the Lighter instance running on Robinhood chain.
|
|
88
|
-
*
|
|
89
|
-
* @public
|
|
90
|
-
*/
|
|
91
|
-
export const LIGHTER_RH_PROVIDER_KEY = 'lighter-rh'
|
|
92
|
-
|
|
93
132
|
/**
|
|
94
133
|
* Default REST base URL for the Lighter Robinhood deployment.
|
|
95
134
|
*
|
|
@@ -137,6 +176,7 @@ export const lighterRhInstance = (
|
|
|
137
176
|
restUrl: LIGHTER_RH_REST_URL,
|
|
138
177
|
wsUrl: LIGHTER_RH_WS_URL,
|
|
139
178
|
signerChainId: overrides.signerChainId,
|
|
179
|
+
collateral: LIGHTER_COLLATERAL_ASSETS[LIGHTER_RH_PROVIDER_KEY],
|
|
140
180
|
explorerTxBaseUrl: overrides.explorerTxBaseUrl,
|
|
141
181
|
})
|
|
142
182
|
|
package/src/index.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
export { projectLighterConfigSettings } from './accountConfig.js'
|
|
17
17
|
export { getAccountSummary } from './accountSummary.js'
|
|
18
18
|
export type {
|
|
19
|
+
LighterCollateralAsset,
|
|
19
20
|
LighterInstanceConfig,
|
|
20
21
|
LighterRhInstanceOverrides,
|
|
21
22
|
} from './constants.js'
|
|
@@ -25,6 +26,7 @@ export {
|
|
|
25
26
|
DEFAULT_LIGHTER_REST_URL,
|
|
26
27
|
DEFAULT_LIGHTER_SIGNER_CHAIN_ID,
|
|
27
28
|
DEFAULT_LIGHTER_WS_URL,
|
|
29
|
+
LIGHTER_COLLATERAL_ASSETS,
|
|
28
30
|
LIGHTER_MAINNET_INSTANCE,
|
|
29
31
|
LIGHTER_PROVIDER_KEY,
|
|
30
32
|
LIGHTER_RH_PROVIDER_KEY,
|
|
@@ -38,8 +38,8 @@ export interface LighterSignerContext {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
|
-
* Configuration for {@link LighterSigner}
|
|
42
|
-
*
|
|
41
|
+
* Configuration for {@link LighterSigner}: optional WASM asset overrides plus
|
|
42
|
+
* the per-instance REST base URL, signing chain id and collateral asset index.
|
|
43
43
|
*
|
|
44
44
|
* @public
|
|
45
45
|
*/
|
|
@@ -48,6 +48,12 @@ export interface LighterSignerConfig extends LoadLighterWasmOptions {
|
|
|
48
48
|
apiUrl?: string
|
|
49
49
|
/** Lighter chain ID (304 = mainnet). */
|
|
50
50
|
chainId?: number
|
|
51
|
+
/**
|
|
52
|
+
* L2 asset index this instance's withdrawals and transfers are signed
|
|
53
|
+
* against — pass the instance's `collateral.assetIndex`. Defaults to
|
|
54
|
+
* mainnet's USDC slot.
|
|
55
|
+
*/
|
|
56
|
+
collateralAssetIndex?: number
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
/**
|
|
@@ -108,12 +114,11 @@ const SKIP_NONCE_DISABLED = 0
|
|
|
108
114
|
// CancelAll across every market (lighter-go `NilMarketIndex`); a real index
|
|
109
115
|
// scopes the cancel to a single market.
|
|
110
116
|
const NIL_MARKET_INDEX = 255
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
const USDC_ASSET_INDEX = 3
|
|
117
|
+
// Collateral withdrawals and transfers ride the perps route (lighter-go
|
|
118
|
+
// `AssetRouteType_Perps`). The signer rejects an asset index < 1.
|
|
114
119
|
const ASSET_ROUTE_TYPE_PERPS = 0
|
|
115
120
|
|
|
116
|
-
// SEND_ASSET is a same-account route→route
|
|
121
|
+
// SEND_ASSET is a same-account route→route collateral move (spot↔perp): no
|
|
117
122
|
// fee, and no memo. `SignTransfer` requires a 32-byte memo, so we pass 32 zero
|
|
118
123
|
// bytes in the `0x`-prefixed 64-hex form the WASM signer decodes.
|
|
119
124
|
const SEND_ASSET_NO_FEE = 0
|
|
@@ -136,6 +141,7 @@ const LIGHTER_ROUTE_BY_DEX: Record<string, number> = {
|
|
|
136
141
|
export class LighterSigner {
|
|
137
142
|
private readonly apiUrl: string
|
|
138
143
|
private readonly chainId: number
|
|
144
|
+
private readonly collateralAssetIndex: number
|
|
139
145
|
private readonly loaderOptions: LoadLighterWasmOptions
|
|
140
146
|
private wasm: LighterWasmExports | undefined
|
|
141
147
|
private readonly registeredClients = new Set<string>()
|
|
@@ -143,6 +149,7 @@ export class LighterSigner {
|
|
|
143
149
|
constructor(config: LighterSignerConfig = {}) {
|
|
144
150
|
this.apiUrl = config.apiUrl ?? DEFAULT_LIGHTER_REST_URL
|
|
145
151
|
this.chainId = config.chainId ?? DEFAULT_LIGHTER_SIGNER_CHAIN_ID
|
|
152
|
+
this.collateralAssetIndex = config.collateralAssetIndex ?? LT_ASSET_ID_USDC
|
|
146
153
|
this.loaderOptions = {
|
|
147
154
|
wasmBinaryUrl: config.wasmBinaryUrl,
|
|
148
155
|
wasmExecJsUrl: config.wasmExecJsUrl,
|
|
@@ -499,7 +506,7 @@ export class LighterSigner {
|
|
|
499
506
|
)
|
|
500
507
|
case ActionType.WITHDRAWAL:
|
|
501
508
|
return wasm.SignWithdraw(
|
|
502
|
-
|
|
509
|
+
this.collateralAssetIndex,
|
|
503
510
|
ASSET_ROUTE_TYPE_PERPS,
|
|
504
511
|
numberField(p, 'amount'),
|
|
505
512
|
SKIP_NONCE_DISABLED,
|
|
@@ -517,7 +524,7 @@ export class LighterSigner {
|
|
|
517
524
|
// long".
|
|
518
525
|
return wasm.SignTransfer(
|
|
519
526
|
numberField(p, 'to_account'),
|
|
520
|
-
|
|
527
|
+
this.collateralAssetIndex,
|
|
521
528
|
ASSET_ROUTE_TYPE_PERPS,
|
|
522
529
|
ASSET_ROUTE_TYPE_PERPS,
|
|
523
530
|
numberField(p, 'usdc_amount'),
|
|
@@ -529,9 +536,9 @@ export class LighterSigner {
|
|
|
529
536
|
ctx.accountIndex
|
|
530
537
|
)
|
|
531
538
|
case ActionType.SEND_ASSET: {
|
|
532
|
-
// Same-account
|
|
533
|
-
// `toAccountIndex` is the signer's own account; the routes come
|
|
534
|
-
// the backend-passed `sourceDex`/`destinationDex` wire strings.
|
|
539
|
+
// Same-account collateral self-transfer between the perp and spot
|
|
540
|
+
// routes. `toAccountIndex` is the signer's own account; the routes come
|
|
541
|
+
// from the backend-passed `sourceDex`/`destinationDex` wire strings.
|
|
535
542
|
const fromRouteType = routeFromDex(stringField(p, 'sourceDex'))
|
|
536
543
|
const toRouteType = routeFromDex(stringField(p, 'destinationDex'))
|
|
537
544
|
if (fromRouteType === toRouteType) {
|
|
@@ -542,7 +549,7 @@ export class LighterSigner {
|
|
|
542
549
|
}
|
|
543
550
|
return wasm.SignTransfer(
|
|
544
551
|
ctx.accountIndex,
|
|
545
|
-
|
|
552
|
+
this.collateralAssetIndex,
|
|
546
553
|
fromRouteType,
|
|
547
554
|
toRouteType,
|
|
548
555
|
numberField(p, 'amount'),
|
package/src/types/action.ts
CHANGED
|
@@ -195,7 +195,9 @@ export const LT_ROUTE_PERP = 0
|
|
|
195
195
|
export const LT_ROUTE_SPOT = 1
|
|
196
196
|
|
|
197
197
|
/**
|
|
198
|
-
*
|
|
198
|
+
* L2 asset index of USDC on Lighter mainnet — the collateral slot mainnet
|
|
199
|
+
* withdrawals, transfers and L1 bridge deposits address. Other deployments
|
|
200
|
+
* settle in their own asset; see `LIGHTER_COLLATERAL_ASSETS`.
|
|
199
201
|
* @public
|
|
200
202
|
*/
|
|
201
203
|
export const LT_ASSET_ID_USDC = 3
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Asset } from '@lifi/perps-types'
|
|
1
|
+
import type { Asset, LighterProviderKey } from '@lifi/perps-types'
|
|
2
2
|
import { LIGHTER_PROVIDER_KEY } from '../constants.js'
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -6,10 +6,15 @@ import { LIGHTER_PROVIDER_KEY } from '../constants.js'
|
|
|
6
6
|
* symbol. Lighter assets do not provide a package-level logo URI, so this
|
|
7
7
|
* helper leaves that field empty.
|
|
8
8
|
*
|
|
9
|
+
* @param providerId - Instance the asset belongs to; defaults to mainnet.
|
|
9
10
|
* @public
|
|
10
11
|
*/
|
|
11
|
-
export const lighterAsset = (
|
|
12
|
-
|
|
12
|
+
export const lighterAsset = (
|
|
13
|
+
id: string,
|
|
14
|
+
displaySymbol: string,
|
|
15
|
+
providerId: LighterProviderKey = LIGHTER_PROVIDER_KEY
|
|
16
|
+
): Asset => ({
|
|
17
|
+
providerId,
|
|
13
18
|
id,
|
|
14
19
|
displaySymbol,
|
|
15
20
|
logoURI: '',
|