@lifi/perps-sdk-provider-lighter 1.7.0 → 1.9.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 (65) hide show
  1. package/dist/cjs/LighterProvider.d.ts.map +1 -1
  2. package/dist/cjs/LighterProvider.js +10 -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/LighterSigner.d.ts.map +1 -1
  8. package/dist/cjs/signers/LighterSigner.js +10 -0
  9. package/dist/cjs/signers/LighterSigner.js.map +1 -1
  10. package/dist/cjs/signers/wasmLoader.d.ts +1 -0
  11. package/dist/cjs/signers/wasmLoader.d.ts.map +1 -1
  12. package/dist/cjs/signers/wasmLoader.js +1 -0
  13. package/dist/cjs/signers/wasmLoader.js.map +1 -1
  14. package/dist/cjs/types/account.d.ts +1 -0
  15. package/dist/cjs/types/account.d.ts.map +1 -1
  16. package/dist/cjs/utils/assetCollateral.d.ts +3 -0
  17. package/dist/cjs/utils/assetCollateral.d.ts.map +1 -0
  18. package/dist/cjs/utils/assetCollateral.js +13 -0
  19. package/dist/cjs/utils/assetCollateral.js.map +1 -0
  20. package/dist/cjs/utils/index.d.ts +1 -0
  21. package/dist/cjs/utils/index.d.ts.map +1 -1
  22. package/dist/cjs/utils/index.js +4 -1
  23. package/dist/cjs/utils/index.js.map +1 -1
  24. package/dist/esm/LighterProvider.d.ts.map +1 -1
  25. package/dist/esm/LighterProvider.js +10 -0
  26. package/dist/esm/LighterProvider.js.map +1 -1
  27. package/dist/esm/accountConfig.d.ts.map +1 -1
  28. package/dist/esm/accountConfig.js +1 -0
  29. package/dist/esm/accountConfig.js.map +1 -1
  30. package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
  31. package/dist/esm/signers/LighterSigner.js +10 -0
  32. package/dist/esm/signers/LighterSigner.js.map +1 -1
  33. package/dist/esm/signers/wasmLoader.d.ts +6 -0
  34. package/dist/esm/signers/wasmLoader.d.ts.map +1 -1
  35. package/dist/esm/signers/wasmLoader.js +1 -0
  36. package/dist/esm/signers/wasmLoader.js.map +1 -1
  37. package/dist/esm/types/account.d.ts +6 -0
  38. package/dist/esm/types/account.d.ts.map +1 -1
  39. package/dist/esm/utils/assetCollateral.d.ts +5 -0
  40. package/dist/esm/utils/assetCollateral.d.ts.map +1 -0
  41. package/dist/esm/utils/assetCollateral.js +15 -0
  42. package/dist/esm/utils/assetCollateral.js.map +1 -0
  43. package/dist/esm/utils/index.d.ts +1 -0
  44. package/dist/esm/utils/index.d.ts.map +1 -1
  45. package/dist/esm/utils/index.js +1 -0
  46. package/dist/esm/utils/index.js.map +1 -1
  47. package/dist/types/LighterProvider.d.ts.map +1 -1
  48. package/dist/types/accountConfig.d.ts.map +1 -1
  49. package/dist/types/signers/LighterSigner.d.ts.map +1 -1
  50. package/dist/types/signers/wasmLoader.d.ts +6 -0
  51. package/dist/types/signers/wasmLoader.d.ts.map +1 -1
  52. package/dist/types/types/account.d.ts +6 -0
  53. package/dist/types/types/account.d.ts.map +1 -1
  54. package/dist/types/utils/assetCollateral.d.ts +5 -0
  55. package/dist/types/utils/assetCollateral.d.ts.map +1 -0
  56. package/dist/types/utils/index.d.ts +1 -0
  57. package/dist/types/utils/index.d.ts.map +1 -1
  58. package/package.json +2 -2
  59. package/src/LighterProvider.ts +13 -0
  60. package/src/accountConfig.ts +1 -0
  61. package/src/signers/LighterSigner.ts +20 -0
  62. package/src/signers/wasmLoader.ts +7 -0
  63. package/src/types/account.ts +6 -0
  64. package/src/utils/assetCollateral.ts +16 -0
  65. package/src/utils/index.ts +1 -0
@@ -1,5 +1,6 @@
1
1
  import { ActionType } from '@lifi/perps-types'
2
2
  import { DEFAULT_LIGHTER_REST_URL } from '../constants.js'
3
+ import { assetMarginModeInt } from '../utils/assetCollateral.js'
3
4
  import {
4
5
  type LighterWasmExports,
5
6
  type LoadLighterWasmOptions,
@@ -433,6 +434,15 @@ export class LighterSigner {
433
434
  ctx.apiKeyIndex,
434
435
  ctx.accountIndex
435
436
  )
437
+ case ActionType.UPDATE_ASSET_COLLATERAL:
438
+ return wasm.SignUpdateAccountAssetConfig(
439
+ numberField(p, 'asset_index'),
440
+ assetMarginModeInt(booleanField(p, 'enabled')),
441
+ SKIP_NONCE_DISABLED,
442
+ nonce,
443
+ ctx.apiKeyIndex,
444
+ ctx.accountIndex
445
+ )
436
446
  default:
437
447
  throw new Error(
438
448
  `Lighter WASM signer does not support action: ${action}`
@@ -489,6 +499,16 @@ function optionalNumberField(
489
499
  return numberField(p, key)
490
500
  }
491
501
 
502
+ function booleanField(p: Record<string, unknown>, key: string): boolean {
503
+ const v = p[key]
504
+ if (typeof v === 'boolean') {
505
+ return v
506
+ }
507
+ throw new Error(
508
+ `Lighter sign params missing boolean field '${key}' (got ${typeof v})`
509
+ )
510
+ }
511
+
492
512
  function stringField(p: Record<string, unknown>, key: string): string {
493
513
  const v = p[key]
494
514
  if (typeof v === 'string' && v !== '') {
@@ -172,6 +172,12 @@ export interface LighterWasmExports {
172
172
  * lighter-go before signing.
173
173
  */
174
174
  SignUpdateAccountConfig: (...args: unknown[]) => SignResult
175
+ /**
176
+ * 6 args: assetIndex, assetMarginMode (0 = MarginDisabled, 1 = MarginEnabled),
177
+ * skipNonce, then the trailing three. Keyed per spot asset, not per market —
178
+ * signs `L2UpdateAccountAssetConfigTx` (tx type 42).
179
+ */
180
+ SignUpdateAccountAssetConfig: (...args: unknown[]) => SignResult
175
181
  }
176
182
 
177
183
  /** @internal */
@@ -198,6 +204,7 @@ const WASM_FUNCTION_NAMES = [
198
204
  'SignUpdateMargin',
199
205
  'SignApproveIntegrator',
200
206
  'SignUpdateAccountConfig',
207
+ 'SignUpdateAccountAssetConfig',
201
208
  ] as const
202
209
 
203
210
  type GoClass = new () => {
@@ -29,6 +29,12 @@ export type LtAccountAsset = {
29
29
  asset_id: number
30
30
  balance: string
31
31
  locked_balance: string
32
+ /**
33
+ * Cross-margin collateral flag: 0 = MarginDisabled, 1 = MarginEnabled.
34
+ * Lighter surfaces it via `additional_properties`, so it may be absent —
35
+ * chiefly outside Unified Trading Account mode.
36
+ */
37
+ margin_mode?: number
32
38
  }
33
39
 
34
40
  /**
@@ -0,0 +1,16 @@
1
+ // Lighter's `AssetMarginMode` wire ints (lighter-go
2
+ // `types/txtypes/update_account_asset_config.go`), used for both the write
3
+ // direction (signing `L2UpdateAccountAssetConfigTx`, tx type 42) and decoding
4
+ // an account asset's `margin_mode` on the read side.
5
+ const ASSET_MARGIN_DISABLED = 0
6
+ const ASSET_MARGIN_ENABLED = 1
7
+
8
+ /** Map the user-facing `enabled` flag to Lighter's `AssetMarginMode` wire int. */
9
+ export function assetMarginModeInt(enabled: boolean): number {
10
+ return enabled ? ASSET_MARGIN_ENABLED : ASSET_MARGIN_DISABLED
11
+ }
12
+
13
+ /** Decode Lighter's `margin_mode` int on an account asset back to `enabled`. */
14
+ export function isAssetMarginEnabled(marginMode: number): boolean {
15
+ return marginMode === ASSET_MARGIN_ENABLED
16
+ }
@@ -8,6 +8,7 @@ export {
8
8
  encodeActivityCursor,
9
9
  } from './activityCursor.js'
10
10
  export { LighterApiClient } from './apiClient.js'
11
+ export { assetMarginModeInt, isAssetMarginEnabled } from './assetCollateral.js'
11
12
  export { fetchDetailedAccount } from './fetchDetailedAccount.js'
12
13
  export { lighterAsset } from './lighterAsset.js'
13
14
  export { estimateLiquidationPrice } from './liquidation.js'