@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.
- package/dist/cjs/LighterProvider.d.ts.map +1 -1
- package/dist/cjs/LighterProvider.js +10 -0
- package/dist/cjs/LighterProvider.js.map +1 -1
- package/dist/cjs/accountConfig.d.ts.map +1 -1
- package/dist/cjs/accountConfig.js +1 -0
- package/dist/cjs/accountConfig.js.map +1 -1
- package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
- package/dist/cjs/signers/LighterSigner.js +10 -0
- package/dist/cjs/signers/LighterSigner.js.map +1 -1
- package/dist/cjs/signers/wasmLoader.d.ts +1 -0
- package/dist/cjs/signers/wasmLoader.d.ts.map +1 -1
- package/dist/cjs/signers/wasmLoader.js +1 -0
- package/dist/cjs/signers/wasmLoader.js.map +1 -1
- package/dist/cjs/types/account.d.ts +1 -0
- package/dist/cjs/types/account.d.ts.map +1 -1
- package/dist/cjs/utils/assetCollateral.d.ts +3 -0
- package/dist/cjs/utils/assetCollateral.d.ts.map +1 -0
- package/dist/cjs/utils/assetCollateral.js +13 -0
- package/dist/cjs/utils/assetCollateral.js.map +1 -0
- 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 +4 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/LighterProvider.d.ts.map +1 -1
- package/dist/esm/LighterProvider.js +10 -0
- package/dist/esm/LighterProvider.js.map +1 -1
- package/dist/esm/accountConfig.d.ts.map +1 -1
- package/dist/esm/accountConfig.js +1 -0
- package/dist/esm/accountConfig.js.map +1 -1
- package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
- package/dist/esm/signers/LighterSigner.js +10 -0
- package/dist/esm/signers/LighterSigner.js.map +1 -1
- package/dist/esm/signers/wasmLoader.d.ts +6 -0
- package/dist/esm/signers/wasmLoader.d.ts.map +1 -1
- package/dist/esm/signers/wasmLoader.js +1 -0
- package/dist/esm/signers/wasmLoader.js.map +1 -1
- package/dist/esm/types/account.d.ts +6 -0
- package/dist/esm/types/account.d.ts.map +1 -1
- package/dist/esm/utils/assetCollateral.d.ts +5 -0
- package/dist/esm/utils/assetCollateral.d.ts.map +1 -0
- package/dist/esm/utils/assetCollateral.js +15 -0
- package/dist/esm/utils/assetCollateral.js.map +1 -0
- 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/types/LighterProvider.d.ts.map +1 -1
- package/dist/types/accountConfig.d.ts.map +1 -1
- package/dist/types/signers/LighterSigner.d.ts.map +1 -1
- package/dist/types/signers/wasmLoader.d.ts +6 -0
- package/dist/types/signers/wasmLoader.d.ts.map +1 -1
- package/dist/types/types/account.d.ts +6 -0
- package/dist/types/types/account.d.ts.map +1 -1
- package/dist/types/utils/assetCollateral.d.ts +5 -0
- package/dist/types/utils/assetCollateral.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/LighterProvider.ts +13 -0
- package/src/accountConfig.ts +1 -0
- package/src/signers/LighterSigner.ts +20 -0
- package/src/signers/wasmLoader.ts +7 -0
- package/src/types/account.ts +6 -0
- package/src/utils/assetCollateral.ts +16 -0
- 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 () => {
|
package/src/types/account.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/utils/index.ts
CHANGED
|
@@ -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'
|