@lifi/perps-sdk-provider-lighter 1.3.0 → 1.4.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 (55) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +13 -0
  3. package/dist/cjs/LighterProvider.js.map +1 -1
  4. package/dist/cjs/accountConfig.d.ts.map +1 -1
  5. package/dist/cjs/accountConfig.js +1 -0
  6. package/dist/cjs/accountConfig.js.map +1 -1
  7. package/dist/cjs/signers/LighterReadOnlyTokenManager.d.ts +0 -1
  8. package/dist/cjs/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  9. package/dist/cjs/signers/LighterReadOnlyTokenManager.js +3 -3
  10. package/dist/cjs/signers/LighterReadOnlyTokenManager.js.map +1 -1
  11. package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
  12. package/dist/cjs/signers/LighterSigner.js +2 -2
  13. package/dist/cjs/signers/LighterSigner.js.map +1 -1
  14. package/dist/cjs/signers/index.d.ts +1 -1
  15. package/dist/cjs/signers/index.d.ts.map +1 -1
  16. package/dist/cjs/signers/index.js +1 -2
  17. package/dist/cjs/signers/index.js.map +1 -1
  18. package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -1
  19. package/dist/cjs/websocket/LighterWsProvider.js +1 -2
  20. package/dist/cjs/websocket/LighterWsProvider.js.map +1 -1
  21. package/dist/esm/LighterProvider.d.ts.map +1 -1
  22. package/dist/esm/LighterProvider.js +13 -0
  23. package/dist/esm/LighterProvider.js.map +1 -1
  24. package/dist/esm/accountConfig.d.ts.map +1 -1
  25. package/dist/esm/accountConfig.js +1 -0
  26. package/dist/esm/accountConfig.js.map +1 -1
  27. package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts +1 -7
  28. package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  29. package/dist/esm/signers/LighterReadOnlyTokenManager.js +2 -7
  30. package/dist/esm/signers/LighterReadOnlyTokenManager.js.map +1 -1
  31. package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
  32. package/dist/esm/signers/LighterSigner.js +2 -2
  33. package/dist/esm/signers/LighterSigner.js.map +1 -1
  34. package/dist/esm/signers/index.d.ts +1 -1
  35. package/dist/esm/signers/index.d.ts.map +1 -1
  36. package/dist/esm/signers/index.js +1 -1
  37. package/dist/esm/signers/index.js.map +1 -1
  38. package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -1
  39. package/dist/esm/websocket/LighterWsProvider.js +2 -3
  40. package/dist/esm/websocket/LighterWsProvider.js.map +1 -1
  41. package/dist/types/LighterProvider.d.ts.map +1 -1
  42. package/dist/types/accountConfig.d.ts.map +1 -1
  43. package/dist/types/signers/LighterReadOnlyTokenManager.d.ts +1 -7
  44. package/dist/types/signers/LighterReadOnlyTokenManager.d.ts.map +1 -1
  45. package/dist/types/signers/LighterSigner.d.ts.map +1 -1
  46. package/dist/types/signers/index.d.ts +1 -1
  47. package/dist/types/signers/index.d.ts.map +1 -1
  48. package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -1
  49. package/package.json +3 -3
  50. package/src/LighterProvider.ts +19 -0
  51. package/src/accountConfig.ts +1 -0
  52. package/src/signers/LighterReadOnlyTokenManager.ts +3 -9
  53. package/src/signers/LighterSigner.ts +2 -2
  54. package/src/signers/index.ts +0 -1
  55. package/src/websocket/LighterWsProvider.ts +16 -10
@@ -6,6 +6,7 @@ import {
6
6
  PerpsError,
7
7
  type PerpsProviderPlugin,
8
8
  type PerpsSDKClient,
9
+ type ProviderAccountExistsParams,
9
10
  type ProviderGetAccountParams,
10
11
  type ProviderGetActivityParams,
11
12
  type ProviderGetFillsParams,
@@ -688,6 +689,24 @@ export const lighterProvider = (
688
689
  }
689
690
  },
690
691
 
692
+ async accountExists(
693
+ params: ProviderAccountExistsParams,
694
+ opts?: SDKRequestOptions
695
+ ): Promise<boolean> {
696
+ try {
697
+ await fetchDetailedAccount(apiClient(opts), params.address)
698
+ return true
699
+ } catch (err) {
700
+ if (
701
+ err instanceof PerpsError &&
702
+ err.code === PerpsErrorCode.AccountNotFound
703
+ ) {
704
+ return false
705
+ }
706
+ throw err
707
+ }
708
+ },
709
+
691
710
  async getPositions(
692
711
  params: ProviderGetPositionsParams,
693
712
  opts?: SDKRequestOptions
@@ -97,6 +97,7 @@ function projectLighterDescriptor(
97
97
 
98
98
  case ActionType.APPROVE_AGENT:
99
99
  case ActionType.APPROVE_BUILDER_FEE:
100
+ case ActionType.SET_REFERRAL:
100
101
  case ActionType.SEND_ASSET:
101
102
  case ActionType.WITHDRAWAL:
102
103
  case ActionType.TRANSFER:
@@ -10,16 +10,10 @@ import type {
10
10
  } from '@lifi/perps-types'
11
11
  import { PerpsErrorCode } from '@lifi/perps-types'
12
12
  import type { Address } from 'viem'
13
+ import { DEFAULT_LIGHTER_REST_URL } from '../constants.js'
13
14
 
14
15
  const STORAGE_PREFIX = 'lifi:perps:lighter:rotoken'
15
16
 
16
- /**
17
- * Default Lighter HTTP host the SDK posts the create request to. Callers
18
- * pointing at testnet pass an override via {@link LighterReadOnlyTokenManagerOptions.lighterApiUrl}.
19
- * @public
20
- */
21
- export const DEFAULT_LIGHTER_API_URL = 'https://mainnet.zklighter.elliot.ai'
22
-
23
17
  /**
24
18
  * Default token name persisted alongside Lighter's `tokens/create` row.
25
19
  * Lighter requires a non-empty `name` form field; the literal here is what
@@ -79,7 +73,7 @@ export type LighterTokenFetcher = (params: {
79
73
  /** @public */
80
74
  export interface LighterReadOnlyTokenManagerOptions {
81
75
  storage?: StorageAdapter
82
- /** Lighter API host. Defaults to {@link DEFAULT_LIGHTER_API_URL}. */
76
+ /** Lighter API host. Defaults to {@link DEFAULT_LIGHTER_REST_URL}. */
83
77
  lighterApiUrl?: string
84
78
  /** Override the multipart POST. Defaults to a `fetch`-based implementation. */
85
79
  fetcher?: LighterTokenFetcher
@@ -150,7 +144,7 @@ export class LighterReadOnlyTokenManager {
150
144
 
151
145
  constructor(options: LighterReadOnlyTokenManagerOptions = {}) {
152
146
  this.storage = options.storage ?? localStorageAdapter
153
- this.lighterApiUrl = options.lighterApiUrl ?? DEFAULT_LIGHTER_API_URL
147
+ this.lighterApiUrl = options.lighterApiUrl ?? DEFAULT_LIGHTER_REST_URL
154
148
  this.fetcher = options.fetcher ?? defaultLighterTokenFetcher
155
149
  this.now = options.now ?? (() => Date.now())
156
150
  }
@@ -1,4 +1,5 @@
1
1
  import { ActionType } from '@lifi/perps-types'
2
+ import { DEFAULT_LIGHTER_REST_URL } from '../constants.js'
2
3
  import {
3
4
  type LighterWasmExports,
4
5
  type LoadLighterWasmOptions,
@@ -48,7 +49,6 @@ export interface ApiKeyPair {
48
49
  privateKey: string
49
50
  }
50
51
 
51
- const DEFAULT_API_URL = 'https://mainnet.zklighter.elliot.ai'
52
52
  const DEFAULT_CHAIN_ID = 304
53
53
 
54
54
  /** @public */
@@ -60,7 +60,7 @@ export class LighterSigner {
60
60
  private readonly registeredClients = new Set<string>()
61
61
 
62
62
  constructor(config: LighterSignerConfig = {}) {
63
- this.apiUrl = config.apiUrl ?? DEFAULT_API_URL
63
+ this.apiUrl = config.apiUrl ?? DEFAULT_LIGHTER_REST_URL
64
64
  this.chainId = config.chainId ?? DEFAULT_CHAIN_ID
65
65
  this.loaderOptions = {
66
66
  wasmBinaryUrl: config.wasmBinaryUrl,
@@ -16,7 +16,6 @@ export type {
16
16
  LighterTokenFetcher,
17
17
  } from './LighterReadOnlyTokenManager.js'
18
18
  export {
19
- DEFAULT_LIGHTER_API_URL,
20
19
  DEFAULT_READ_ONLY_TOKEN_NAME,
21
20
  defaultLighterTokenFetcher,
22
21
  LighterReadOnlyTokenManager,
@@ -19,7 +19,11 @@ import type {
19
19
  Subscription,
20
20
  } from '@lifi/perps-types'
21
21
  import type { Address } from 'viem'
22
- import { LIGHTER_BASE_FEE_TIER, LIGHTER_PROVIDER_KEY } from '../constants.js'
22
+ import {
23
+ DEFAULT_LIGHTER_REST_URL,
24
+ LIGHTER_BASE_FEE_TIER,
25
+ LIGHTER_PROVIDER_KEY,
26
+ } from '../constants.js'
23
27
  import type {
24
28
  LtAccountPosition,
25
29
  LtOrder,
@@ -71,7 +75,6 @@ import {
71
75
  // messages are deltas where size=0 deletes a level.
72
76
 
73
77
  const DEFAULT_WS_URL = 'wss://mainnet.zklighter.elliot.ai/stream'
74
- const DEFAULT_REST_URL = 'https://mainnet.zklighter.elliot.ai'
75
78
 
76
79
  const LIGHTER_AUTH_CHANNEL = {
77
80
  orderUpdates: 'account_all_orders',
@@ -166,14 +169,17 @@ export class LighterWsProvider extends WsProviderBase<SubState> {
166
169
  new ReconnectingWebSocket(wsUrl, { pingPayload: '{"type":"ping"}' }),
167
170
  providerKey
168
171
  )
169
- this.api = new LighterApiClient(options.restUrl ?? DEFAULT_REST_URL, {
170
- policy: resolveRetryPolicy(
171
- LIGHTER_RETRY_DEFAULTS,
172
- client?.config.retry,
173
- LIGHTER_PROVIDER_KEY
174
- ),
175
- fetchImpl: client?.config.fetch,
176
- })
172
+ this.api = new LighterApiClient(
173
+ options.restUrl ?? DEFAULT_LIGHTER_REST_URL,
174
+ {
175
+ policy: resolveRetryPolicy(
176
+ LIGHTER_RETRY_DEFAULTS,
177
+ client?.config.retry,
178
+ LIGHTER_PROVIDER_KEY
179
+ ),
180
+ fetchImpl: client?.config.fetch,
181
+ }
182
+ )
177
183
  this.authProvider = options.authProvider
178
184
  this.client = client
179
185
  this.registry = client && getMarketRegistry(client, providerKey)