@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.
Files changed (62) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +6 -3
  3. package/dist/cjs/LighterProvider.js.map +1 -1
  4. package/dist/cjs/constants.d.ts +7 -1
  5. package/dist/cjs/constants.d.ts.map +1 -1
  6. package/dist/cjs/constants.js +12 -2
  7. package/dist/cjs/constants.js.map +1 -1
  8. package/dist/cjs/index.d.ts +2 -2
  9. package/dist/cjs/index.d.ts.map +1 -1
  10. package/dist/cjs/index.js +2 -1
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/signers/LighterSigner.d.ts +2 -0
  13. package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
  14. package/dist/cjs/signers/LighterSigner.js +5 -4
  15. package/dist/cjs/signers/LighterSigner.js.map +1 -1
  16. package/dist/cjs/types/action.d.ts.map +1 -1
  17. package/dist/cjs/types/action.js.map +1 -1
  18. package/dist/cjs/utils/lighterAsset.d.ts +2 -2
  19. package/dist/cjs/utils/lighterAsset.d.ts.map +1 -1
  20. package/dist/cjs/utils/lighterAsset.js +2 -2
  21. package/dist/cjs/utils/lighterAsset.js.map +1 -1
  22. package/dist/esm/LighterProvider.d.ts.map +1 -1
  23. package/dist/esm/LighterProvider.js +10 -6
  24. package/dist/esm/LighterProvider.js.map +1 -1
  25. package/dist/esm/constants.d.ts +32 -6
  26. package/dist/esm/constants.d.ts.map +1 -1
  27. package/dist/esm/constants.js +24 -6
  28. package/dist/esm/constants.js.map +1 -1
  29. package/dist/esm/index.d.ts +2 -2
  30. package/dist/esm/index.d.ts.map +1 -1
  31. package/dist/esm/index.js +1 -1
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/esm/signers/LighterSigner.d.ts +9 -2
  34. package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
  35. package/dist/esm/signers/LighterSigner.js +11 -10
  36. package/dist/esm/signers/LighterSigner.js.map +1 -1
  37. package/dist/esm/types/action.d.ts +3 -1
  38. package/dist/esm/types/action.d.ts.map +1 -1
  39. package/dist/esm/types/action.js +3 -1
  40. package/dist/esm/types/action.js.map +1 -1
  41. package/dist/esm/utils/lighterAsset.d.ts +3 -2
  42. package/dist/esm/utils/lighterAsset.d.ts.map +1 -1
  43. package/dist/esm/utils/lighterAsset.js +3 -2
  44. package/dist/esm/utils/lighterAsset.js.map +1 -1
  45. package/dist/types/LighterProvider.d.ts.map +1 -1
  46. package/dist/types/constants.d.ts +32 -6
  47. package/dist/types/constants.d.ts.map +1 -1
  48. package/dist/types/index.d.ts +2 -2
  49. package/dist/types/index.d.ts.map +1 -1
  50. package/dist/types/signers/LighterSigner.d.ts +9 -2
  51. package/dist/types/signers/LighterSigner.d.ts.map +1 -1
  52. package/dist/types/types/action.d.ts +3 -1
  53. package/dist/types/types/action.d.ts.map +1 -1
  54. package/dist/types/utils/lighterAsset.d.ts +3 -2
  55. package/dist/types/utils/lighterAsset.d.ts.map +1 -1
  56. package/package.json +3 -3
  57. package/src/LighterProvider.ts +16 -5
  58. package/src/constants.ts +47 -7
  59. package/src/index.ts +2 -0
  60. package/src/signers/LighterSigner.ts +19 -12
  61. package/src/types/action.ts +3 -1
  62. 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;AAEpE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAE7C;;;;;;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,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,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,qBAMtC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,eAAe,CAAA;AAEnD;;;;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,qBAMD,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"}
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"}
@@ -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}, including optional WASM asset
20
- * overrides and the Lighter REST base URL and signing chain ID.
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;CACjB;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;AAgCD;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,MAAM,GAAE,mBAAwB;IAU5C;;;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"}
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
- * Lighter spot USDC asset id.
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;AAG9C;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,EAAE,eAAe,MAAM,KAAG,KAK/D,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.1.0",
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": "^4.2.0"
49
+ "@lifi/perps-types": "^5.0.0"
50
50
  },
51
51
  "peerDependencies": {
52
- "@lifi/perps-sdk": "^6.2.0"
52
+ "@lifi/perps-sdk": "^6.2.1"
53
53
  },
54
54
  "publishConfig": {
55
55
  "access": "public"
@@ -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: perpsCategory?.quoteAsset ?? lighterAsset('USDC', 'USDC'),
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. USDC value is 1:1; other tokens
810
- // have no price source at this boundary, so their USD value is unknown.
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: assetRegistry.get(assetId) ?? lighterAsset(assetId, a.symbol),
824
+ asset:
825
+ assetRegistry.get(assetId) ??
826
+ lighterAsset(assetId, a.symbol, providerKey),
816
827
  units: a.balance,
817
- valueUsd: a.symbol === 'USDC' ? a.balance : '0',
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}, including optional WASM asset
42
- * overrides and the Lighter REST base URL and signing chain ID.
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
- // Withdrawals/transfers are USDC on the perps route (lighter-go `USDCAssetIndex`
112
- // / `AssetRouteType_Perps`). The signer rejects an asset index < 1.
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 USDC move (spot↔perp): no counterparty
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
- USDC_ASSET_INDEX,
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
- USDC_ASSET_INDEX,
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 USDC self-transfer between the perp and spot routes.
533
- // `toAccountIndex` is the signer's own account; the routes come from
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
- LT_ASSET_ID_USDC,
552
+ this.collateralAssetIndex,
546
553
  fromRouteType,
547
554
  toRouteType,
548
555
  numberField(p, 'amount'),
@@ -195,7 +195,9 @@ export const LT_ROUTE_PERP = 0
195
195
  export const LT_ROUTE_SPOT = 1
196
196
 
197
197
  /**
198
- * Lighter spot USDC asset id.
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 = (id: string, displaySymbol: string): Asset => ({
12
- providerId: LIGHTER_PROVIDER_KEY,
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: '',