@lifi/perps-sdk-provider-lighter 8.2.1 → 10.0.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/README.md +14 -10
- package/dist/cjs/LighterProvider.d.ts +5 -10
- package/dist/cjs/LighterProvider.d.ts.map +1 -1
- package/dist/cjs/LighterProvider.js +31 -26
- package/dist/cjs/LighterProvider.js.map +1 -1
- package/dist/cjs/constants.d.ts +5 -8
- package/dist/cjs/constants.d.ts.map +1 -1
- package/dist/cjs/constants.js +15 -12
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +6 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/signers/LighterSigner.d.ts +5 -7
- package/dist/cjs/signers/LighterSigner.d.ts.map +1 -1
- package/dist/cjs/signers/LighterSigner.js +30 -17
- package/dist/cjs/signers/LighterSigner.js.map +1 -1
- package/dist/cjs/signers/generated/wasmExecRuntime.d.ts +2 -0
- package/dist/cjs/signers/generated/wasmExecRuntime.d.ts.map +1 -0
- package/dist/cjs/signers/generated/wasmExecRuntime.js +569 -0
- package/dist/cjs/signers/generated/wasmExecRuntime.js.map +1 -0
- package/dist/cjs/signers/signActions.d.ts +2 -2
- package/dist/cjs/signers/signActions.d.ts.map +1 -1
- package/dist/cjs/signers/signActions.js +4 -10
- package/dist/cjs/signers/signActions.js.map +1 -1
- package/dist/cjs/signers/wasmBinaryUrl.js +11 -0
- package/dist/cjs/signers/wasmLoader.d.ts +1 -6
- package/dist/cjs/signers/wasmLoader.d.ts.map +1 -1
- package/dist/cjs/signers/wasmLoader.js +15 -69
- package/dist/cjs/signers/wasmLoader.js.map +1 -1
- package/dist/cjs/types/account.d.ts +4 -1
- package/dist/cjs/types/account.d.ts.map +1 -1
- package/dist/cjs/types/action.d.ts +4 -1
- package/dist/cjs/types/action.d.ts.map +1 -1
- package/dist/cjs/types/action.js.map +1 -1
- package/dist/cjs/utils/assetCollateral.d.ts +2 -1
- package/dist/cjs/utils/assetCollateral.d.ts.map +1 -1
- package/dist/cjs/utils/assetCollateral.js +1 -1
- package/dist/cjs/utils/assetCollateral.js.map +1 -1
- 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 +3 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/withdrawableBalances.d.ts +4 -0
- package/dist/cjs/utils/withdrawableBalances.d.ts.map +1 -0
- package/dist/cjs/utils/withdrawableBalances.js +21 -0
- package/dist/cjs/utils/withdrawableBalances.js.map +1 -0
- package/dist/esm/LighterProvider.d.ts +53 -56
- package/dist/esm/LighterProvider.d.ts.map +1 -1
- package/dist/esm/LighterProvider.js +74 -49
- package/dist/esm/LighterProvider.js.map +1 -1
- package/dist/esm/constants.d.ts +25 -36
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/constants.js +31 -18
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/index.d.ts +6 -7
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/signers/LighterSigner.d.ts +10 -18
- package/dist/esm/signers/LighterSigner.d.ts.map +1 -1
- package/dist/esm/signers/LighterSigner.js +32 -25
- package/dist/esm/signers/LighterSigner.js.map +1 -1
- package/dist/esm/signers/generated/wasmExecRuntime.d.ts +8 -0
- package/dist/esm/signers/generated/wasmExecRuntime.d.ts.map +1 -0
- package/dist/esm/signers/generated/wasmExecRuntime.js +574 -0
- package/dist/esm/signers/generated/wasmExecRuntime.js.map +1 -0
- package/dist/esm/signers/signActions.d.ts +3 -5
- package/dist/esm/signers/signActions.d.ts.map +1 -1
- package/dist/esm/signers/signActions.js +4 -10
- package/dist/esm/signers/signActions.js.map +1 -1
- package/dist/esm/signers/wasmBinaryUrl.js +10 -0
- package/dist/esm/signers/wasmLoader.d.ts +7 -31
- package/dist/esm/signers/wasmLoader.d.ts.map +1 -1
- package/dist/esm/signers/wasmLoader.js +32 -108
- package/dist/esm/signers/wasmLoader.js.map +1 -1
- package/dist/esm/types/account.d.ts +17 -6
- package/dist/esm/types/account.d.ts.map +1 -1
- package/dist/esm/types/action.d.ts +14 -2
- package/dist/esm/types/action.d.ts.map +1 -1
- package/dist/esm/types/action.js.map +1 -1
- package/dist/esm/utils/assetCollateral.d.ts +3 -2
- package/dist/esm/utils/assetCollateral.d.ts.map +1 -1
- package/dist/esm/utils/assetCollateral.js +5 -5
- package/dist/esm/utils/assetCollateral.js.map +1 -1
- 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/esm/utils/withdrawableBalances.d.ts +12 -0
- package/dist/esm/utils/withdrawableBalances.d.ts.map +1 -0
- package/dist/esm/utils/withdrawableBalances.js +25 -0
- package/dist/esm/utils/withdrawableBalances.js.map +1 -0
- package/dist/types/LighterProvider.d.ts +53 -56
- package/dist/types/LighterProvider.d.ts.map +1 -1
- package/dist/types/constants.d.ts +25 -36
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/index.d.ts +6 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/signers/LighterSigner.d.ts +10 -18
- package/dist/types/signers/LighterSigner.d.ts.map +1 -1
- package/dist/types/signers/generated/wasmExecRuntime.d.ts +8 -0
- package/dist/types/signers/generated/wasmExecRuntime.d.ts.map +1 -0
- package/dist/types/signers/signActions.d.ts +3 -5
- package/dist/types/signers/signActions.d.ts.map +1 -1
- package/dist/types/signers/wasmLoader.d.ts +7 -31
- package/dist/types/signers/wasmLoader.d.ts.map +1 -1
- package/dist/types/types/account.d.ts +17 -6
- package/dist/types/types/account.d.ts.map +1 -1
- package/dist/types/types/action.d.ts +14 -2
- package/dist/types/types/action.d.ts.map +1 -1
- package/dist/types/utils/assetCollateral.d.ts +3 -2
- package/dist/types/utils/assetCollateral.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/withdrawableBalances.d.ts +12 -0
- package/dist/types/utils/withdrawableBalances.d.ts.map +1 -0
- package/package.json +3 -6
- package/src/LighterProvider.ts +112 -101
- package/src/constants.ts +35 -45
- package/src/index.ts +13 -10
- package/src/signers/LighterSigner.ts +47 -51
- package/src/signers/generated/wasmExecRuntime.ts +575 -0
- package/src/signers/signActions.ts +12 -30
- package/src/signers/wasmBinaryUrl.d.ts +7 -0
- package/src/signers/wasmLoader.ts +33 -152
- package/src/types/account.ts +18 -6
- package/src/types/action.ts +14 -2
- package/src/utils/assetCollateral.ts +8 -6
- package/src/utils/index.ts +1 -0
- package/src/utils/withdrawableBalances.ts +31 -0
- package/dist/cjs/signers/index.d.ts +0 -11
- package/dist/cjs/signers/index.d.ts.map +0 -1
- package/dist/cjs/signers/index.js +0 -18
- package/dist/cjs/signers/index.js.map +0 -1
- package/dist/esm/signers/index.d.ts +0 -11
- package/dist/esm/signers/index.d.ts.map +0 -1
- package/dist/esm/signers/index.js +0 -7
- package/dist/esm/signers/index.js.map +0 -1
- package/dist/types/signers/index.d.ts +0 -11
- package/dist/types/signers/index.d.ts.map +0 -1
- package/dist/wasm/wasm_exec.js +0 -561
- package/src/signers/index.ts +0 -35
- package/wasm/lighter-signer.wasm +0 -0
- package/wasm/wasm_exec.js +0 -561
|
@@ -1,17 +1,10 @@
|
|
|
1
|
+
import { scaleToInteger } from '@lifi/perps-sdk'
|
|
1
2
|
import { ActionType } from '@lifi/perps-types'
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
DEFAULT_LIGHTER_SIGNER_CHAIN_ID,
|
|
5
|
-
} from '../constants.js'
|
|
6
|
-
import {
|
|
7
|
-
LT_ASSET_ID_USDC,
|
|
8
|
-
LT_ROUTE_PERP,
|
|
9
|
-
LT_ROUTE_SPOT,
|
|
10
|
-
} from '../types/action.js'
|
|
3
|
+
import Big from 'big.js'
|
|
4
|
+
import { LT_ROUTE_PERP, LT_ROUTE_SPOT } from '../types/action.js'
|
|
11
5
|
import { assetMarginModeInt } from '../utils/assetCollateral.js'
|
|
12
6
|
import {
|
|
13
7
|
type LighterWasmExports,
|
|
14
|
-
type LoadLighterWasmOptions,
|
|
15
8
|
loadLighterWasm,
|
|
16
9
|
type SignResult,
|
|
17
10
|
} from './wasmLoader.js'
|
|
@@ -38,22 +31,16 @@ export interface LighterSignerContext {
|
|
|
38
31
|
}
|
|
39
32
|
|
|
40
33
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
34
|
+
* Deployment facts {@link LighterSigner} signs against: the venue's REST base
|
|
35
|
+
* URL, its zkLighter L2 signing chain id, and the L2 asset index its
|
|
36
|
+
* withdrawals and transfers settle in.
|
|
43
37
|
*
|
|
44
|
-
* @
|
|
38
|
+
* @internal
|
|
45
39
|
*/
|
|
46
|
-
export interface LighterSignerConfig
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
40
|
+
export interface LighterSignerConfig {
|
|
41
|
+
apiUrl: string
|
|
42
|
+
signerChainId: number
|
|
43
|
+
collateralAssetIndex: number
|
|
57
44
|
}
|
|
58
45
|
|
|
59
46
|
/**
|
|
@@ -114,10 +101,6 @@ const SKIP_NONCE_DISABLED = 0
|
|
|
114
101
|
// CancelAll across every market (lighter-go `NilMarketIndex`); a real index
|
|
115
102
|
// scopes the cancel to a single market.
|
|
116
103
|
const NIL_MARKET_INDEX = 255
|
|
117
|
-
// Collateral withdrawals and transfers ride the perps route (lighter-go
|
|
118
|
-
// `AssetRouteType_Perps`). The signer rejects an asset index < 1.
|
|
119
|
-
const ASSET_ROUTE_TYPE_PERPS = 0
|
|
120
|
-
|
|
121
104
|
// SEND_ASSET is a same-account route→route collateral move (spot↔perp): no
|
|
122
105
|
// fee, and no memo. `SignTransfer` requires a 32-byte memo, so we pass 32 zero
|
|
123
106
|
// bytes in the `0x`-prefixed 64-hex form the WASM signer decodes.
|
|
@@ -136,25 +119,19 @@ const LIGHTER_ROUTE_BY_DEX: Record<string, number> = {
|
|
|
136
119
|
* hybrid flows. The instance memoizes WASM initialization and registered
|
|
137
120
|
* `(apiKeyIndex, accountIndex)` clients.
|
|
138
121
|
*
|
|
139
|
-
* @
|
|
122
|
+
* @internal
|
|
140
123
|
*/
|
|
141
124
|
export class LighterSigner {
|
|
142
125
|
private readonly apiUrl: string
|
|
143
126
|
private readonly chainId: number
|
|
144
127
|
private readonly collateralAssetIndex: number
|
|
145
|
-
private readonly loaderOptions: LoadLighterWasmOptions
|
|
146
128
|
private wasm: LighterWasmExports | undefined
|
|
147
129
|
private readonly registeredClients = new Set<string>()
|
|
148
130
|
|
|
149
|
-
constructor(config: LighterSignerConfig
|
|
150
|
-
this.apiUrl = config.apiUrl
|
|
151
|
-
this.chainId = config.
|
|
152
|
-
this.collateralAssetIndex = config.collateralAssetIndex
|
|
153
|
-
this.loaderOptions = {
|
|
154
|
-
wasmBinaryUrl: config.wasmBinaryUrl,
|
|
155
|
-
wasmExecJsUrl: config.wasmExecJsUrl,
|
|
156
|
-
wasmExecJsSource: config.wasmExecJsSource,
|
|
157
|
-
}
|
|
131
|
+
constructor(config: LighterSignerConfig) {
|
|
132
|
+
this.apiUrl = config.apiUrl
|
|
133
|
+
this.chainId = config.signerChainId
|
|
134
|
+
this.collateralAssetIndex = config.collateralAssetIndex
|
|
158
135
|
}
|
|
159
136
|
|
|
160
137
|
/**
|
|
@@ -163,7 +140,7 @@ export class LighterSigner {
|
|
|
163
140
|
*/
|
|
164
141
|
async initialize(): Promise<void> {
|
|
165
142
|
if (!this.wasm) {
|
|
166
|
-
this.wasm = await loadLighterWasm(
|
|
143
|
+
this.wasm = await loadLighterWasm()
|
|
167
144
|
}
|
|
168
145
|
}
|
|
169
146
|
|
|
@@ -504,29 +481,45 @@ export class LighterSigner {
|
|
|
504
481
|
ctx.apiKeyIndex,
|
|
505
482
|
ctx.accountIndex
|
|
506
483
|
)
|
|
507
|
-
case ActionType.WITHDRAWAL:
|
|
484
|
+
case ActionType.WITHDRAWAL: {
|
|
485
|
+
const routeType = numberField(p, 'route_type')
|
|
486
|
+
if (routeType !== LT_ROUTE_PERP && routeType !== LT_ROUTE_SPOT) {
|
|
487
|
+
throw new Error(
|
|
488
|
+
`Lighter WITHDRAWAL route_type ${routeType} is invalid: expected ` +
|
|
489
|
+
`${LT_ROUTE_PERP} (perps) or ${LT_ROUTE_SPOT} (spot)`
|
|
490
|
+
)
|
|
491
|
+
}
|
|
492
|
+
const symbol = stringField(p, 'symbol')
|
|
493
|
+
const amount = stringField(p, 'amount')
|
|
494
|
+
const minimum = stringField(p, 'min_withdrawal_amount')
|
|
495
|
+
if (new Big(amount).lt(new Big(minimum))) {
|
|
496
|
+
throw new Error(
|
|
497
|
+
`Lighter WITHDRAWAL of ${amount} ${symbol} is below the venue ` +
|
|
498
|
+
`minimum of ${minimum} ${symbol}`
|
|
499
|
+
)
|
|
500
|
+
}
|
|
508
501
|
return wasm.SignWithdraw(
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
numberField(p, '
|
|
502
|
+
numberField(p, 'asset_index'),
|
|
503
|
+
routeType,
|
|
504
|
+
scaleToInteger(amount, numberField(p, 'decimals'), 'truncate'),
|
|
512
505
|
SKIP_NONCE_DISABLED,
|
|
513
506
|
nonce,
|
|
514
507
|
ctx.apiKeyIndex,
|
|
515
508
|
ctx.accountIndex
|
|
516
509
|
)
|
|
510
|
+
}
|
|
517
511
|
case ActionType.TRANSFER:
|
|
518
512
|
// SignTransfer's positional args follow the Go binding order:
|
|
519
513
|
// `toAccountIndex, assetIndex, fromRouteType, toRouteType, amount,
|
|
520
514
|
// usdcFee, memo, skipNonce, nonce, apiKeyIndex, accountIndex`. `memo`
|
|
521
|
-
// is
|
|
522
|
-
// string
|
|
523
|
-
//
|
|
524
|
-
// long".
|
|
515
|
+
// is decoded as a 66-char `0x`-prefixed hex string, a bare 64-char hex
|
|
516
|
+
// string, or 32 raw bytes — anything else fails with "memo expected to
|
|
517
|
+
// be 32 bytes or 64 hex encoded or 66 if 0x hex encoded".
|
|
525
518
|
return wasm.SignTransfer(
|
|
526
519
|
numberField(p, 'to_account'),
|
|
527
520
|
this.collateralAssetIndex,
|
|
528
|
-
|
|
529
|
-
|
|
521
|
+
LT_ROUTE_PERP,
|
|
522
|
+
LT_ROUTE_PERP,
|
|
530
523
|
numberField(p, 'usdc_amount'),
|
|
531
524
|
numberField(p, 'fee'),
|
|
532
525
|
stringField(p, 'memo'),
|
|
@@ -669,7 +662,10 @@ function routeFromDex(dex: string): number {
|
|
|
669
662
|
|
|
670
663
|
function stringField(p: Record<string, unknown>, key: string): string {
|
|
671
664
|
const v = p[key]
|
|
672
|
-
if (
|
|
665
|
+
if (v === '') {
|
|
666
|
+
throw new Error(`Lighter sign params string field '${key}' is empty`)
|
|
667
|
+
}
|
|
668
|
+
if (typeof v === 'string') {
|
|
673
669
|
return v
|
|
674
670
|
}
|
|
675
671
|
throw new Error(
|