@lifi/perps-sdk 1.5.6 → 2.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/dist/cjs/client/PerpsClient.d.ts +9 -4
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +42 -4
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/api.d.ts +10 -1
- package/dist/cjs/types/api.d.ts.map +1 -1
- package/dist/cjs/types/config.d.ts +1 -0
- package/dist/cjs/types/config.d.ts.map +1 -1
- package/dist/cjs/types/provider.d.ts +1 -0
- package/dist/cjs/types/provider.d.ts.map +1 -1
- package/dist/cjs/utils/switchChain.d.ts +5 -0
- package/dist/cjs/utils/switchChain.d.ts.map +1 -0
- package/dist/cjs/utils/switchChain.js +39 -0
- package/dist/cjs/utils/switchChain.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/client/PerpsClient.d.ts +46 -7
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +85 -7
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/api.d.ts +24 -7
- package/dist/esm/types/api.d.ts.map +1 -1
- package/dist/esm/types/config.d.ts +11 -0
- package/dist/esm/types/config.d.ts.map +1 -1
- package/dist/esm/types/provider.d.ts +11 -0
- package/dist/esm/types/provider.d.ts.map +1 -1
- package/dist/esm/utils/switchChain.d.ts +21 -0
- package/dist/esm/utils/switchChain.d.ts.map +1 -0
- package/dist/esm/utils/switchChain.js +51 -0
- package/dist/esm/utils/switchChain.js.map +1 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/client/PerpsClient.d.ts +46 -7
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/api.d.ts +24 -7
- package/dist/types/types/api.d.ts.map +1 -1
- package/dist/types/types/config.d.ts +11 -0
- package/dist/types/types/config.d.ts.map +1 -1
- package/dist/types/types/provider.d.ts +11 -0
- package/dist/types/types/provider.d.ts.map +1 -1
- package/dist/types/utils/switchChain.d.ts +21 -0
- package/dist/types/utils/switchChain.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/client/PerpsClient.ts +106 -10
- package/src/index.ts +3 -2
- package/src/types/api.ts +29 -7
- package/src/types/config.ts +14 -0
- package/src/types/provider.ts +11 -0
- package/src/utils/switchChain.ts +73 -0
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerpsClient.d.ts","sourceRoot":"","sources":["../../../src/client/PerpsClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EACT,QAAQ,
|
|
1
|
+
{"version":3,"file":"PerpsClient.d.ts","sourceRoot":"","sources":["../../../src/client/PerpsClient.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -55,8 +55,8 @@ export type { FetchWithRetryOptions } from './transport/fetchWithRetry.js';
|
|
|
55
55
|
export { fetchWithRetry } from './transport/fetchWithRetry.js';
|
|
56
56
|
export type { ProviderRetryConfig, ResolvedRetryPolicy, RetryAttemptContext, RetryClassification, RetryClassifyContext, RetryConfig, RetryPolicy, } from './transport/retryPolicy.js';
|
|
57
57
|
export { DISABLED_RETRY, LIFI_REQUEST_KEY, LIFI_RETRY_DEFAULTS, resolveRetryPolicy, } from './transport/retryPolicy.js';
|
|
58
|
-
export type { BuildProviderSetupParams, CancelOrdersParams,
|
|
59
|
-
export type { HyperliquidConfig, PerpsBaseConfig, PerpsClientSigner, ProviderConfig, ProviderConfigs, RequestInterceptor, SDKRequestOptions, } from './types/config.js';
|
|
58
|
+
export type { BuildProviderSetupParams, CancelOrdersParams, GetAccountResult, GetSetupParams, ModifyOrdersParams, PerpsClientOptions, PerpsConfig, PlaceOrderParams as ClientPlaceOrderParams, PlaceTriggerOrderParams as ClientPlaceTriggerOrderParams, ProviderSetup, SendAssetActionParams, WithdrawParams, } from './types/api.js';
|
|
59
|
+
export type { HyperliquidConfig, PerpsBaseConfig, PerpsClientSigner, ProviderConfig, ProviderConfigs, RequestInterceptor, SDKRequestOptions, SwitchChainHook, } from './types/config.js';
|
|
60
60
|
export type { ActionSignerContribution, LiquidationEstimateParams, PerpsProvider, PerpsProviderPlugin, PerpsSDKClient, ProviderAccountExistsParams, ProviderGetAccountParams, ProviderGetActivityParams, ProviderGetFillsParams, ProviderGetOrderParams, ProviderGetOrdersParams, ProviderGetPositionsParams, ProviderGetQuoteParams, QuoteListener, SignActionsContext, } from './types/provider.js';
|
|
61
61
|
export { type CollateralSemantics, summarizeAccount, } from './utils/accountSummary.js';
|
|
62
62
|
export type { ExpectedPnl } from './utils/calculations.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AccountConfigSetting, AccountResponse, ActionStep, ExecuteActionResponse, MarketRef, ModifyOrderInput, OrderSide, OrderType, SignedActionStep, TimeInForce, TriggerOrderInput, WithdrawalParams } from '@lifi/perps-types';
|
|
2
2
|
import type { Account, Address, WalletClient } from 'viem';
|
|
3
3
|
import type { RetryConfig } from '../transport/retryPolicy.js';
|
|
4
|
-
import type { ProviderConfigs, RequestInterceptor } from './config.js';
|
|
4
|
+
import type { ProviderConfigs, RequestInterceptor, SwitchChainHook } from './config.js';
|
|
5
5
|
import type { PerpsProviderPlugin } from './provider.js';
|
|
6
6
|
/**
|
|
7
7
|
* Configuration for {@link createPerpsClient}.
|
|
@@ -70,6 +70,12 @@ export interface PerpsClientOptions {
|
|
|
70
70
|
* a keyed `ProviderConfigs` map.
|
|
71
71
|
*/
|
|
72
72
|
providers?: PerpsProviderPlugin[] | ProviderConfigs;
|
|
73
|
+
/**
|
|
74
|
+
* Hook invoked before a USER-signed EIP-712 action is signed, to switch the
|
|
75
|
+
* user's wallet to the action's target chain. Also settable at runtime via
|
|
76
|
+
* `setSwitchChain`.
|
|
77
|
+
*/
|
|
78
|
+
switchChain?: SwitchChainHook;
|
|
73
79
|
}
|
|
74
80
|
/**
|
|
75
81
|
* Parameters for the internal `buildProviderSetup` helper that materialises
|
|
@@ -125,6 +131,21 @@ export interface WithdrawParams {
|
|
|
125
131
|
address: Address;
|
|
126
132
|
withdrawal: WithdrawalParams;
|
|
127
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Parameters for {@link PerpsClient.sendAsset}. The send-asset fields are held
|
|
136
|
+
* flat (not nested) to avoid colliding with `@lifi/perps-types`'
|
|
137
|
+
* `SendAssetParams`, which types the underlying action payload.
|
|
138
|
+
*
|
|
139
|
+
* @public
|
|
140
|
+
*/
|
|
141
|
+
export interface SendAssetActionParams {
|
|
142
|
+
provider: string;
|
|
143
|
+
address: Address;
|
|
144
|
+
collateral: string;
|
|
145
|
+
sourceDex: string;
|
|
146
|
+
destinationDex: string;
|
|
147
|
+
amount: string;
|
|
148
|
+
}
|
|
128
149
|
/**
|
|
129
150
|
* Parameters for canceling orders.
|
|
130
151
|
*
|
|
@@ -181,9 +202,7 @@ export interface ProviderSetup {
|
|
|
181
202
|
isReady: boolean;
|
|
182
203
|
}
|
|
183
204
|
/**
|
|
184
|
-
* Parameters for
|
|
185
|
-
*
|
|
186
|
-
* @public
|
|
205
|
+
* Parameters for the internal `PerpsClient.executeProviderSetup` batch submit.
|
|
187
206
|
*/
|
|
188
207
|
export interface ExecuteProviderSetupParams {
|
|
189
208
|
/** Provider to satisfy setup for */
|
|
@@ -196,9 +215,7 @@ export interface ExecuteProviderSetupParams {
|
|
|
196
215
|
signedActions: SignedActionStep[];
|
|
197
216
|
}
|
|
198
217
|
/**
|
|
199
|
-
* Result from
|
|
200
|
-
*
|
|
201
|
-
* @public
|
|
218
|
+
* Result from the internal `PerpsClient.executeProviderSetup` batch submit.
|
|
202
219
|
*/
|
|
203
220
|
export interface ExecuteProviderSetupResult {
|
|
204
221
|
results: ExecuteActionResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/types/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,17 @@ import type { RetryConfig } from '../transport/retryPolicy.js';
|
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
9
|
export type PerpsClientSigner = WalletClient<any, any, Account>;
|
|
10
|
+
/**
|
|
11
|
+
* Consumer-supplied hook invoked at the SDK's signing choke point to switch the
|
|
12
|
+
* user's wallet to a USER-signed EIP-712 action's target chain. Modelled on
|
|
13
|
+
* `@lifi/sdk`'s switch-chain contract: a json-rpc wallet switches in place and
|
|
14
|
+
* resolves to the re-fetched client; a local/private-key signer resolves to a
|
|
15
|
+
* chain-bound client (or signs offline). Resolve to `undefined` to signal the
|
|
16
|
+
* switch could not be performed.
|
|
17
|
+
*
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export type SwitchChainHook = (chainId: number) => Promise<PerpsClientSigner | undefined>;
|
|
10
21
|
/**
|
|
11
22
|
* Per-provider config — restricts which `markets` the WS client subscribes
|
|
12
23
|
* to. Indexed by provider key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAE9C;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAA;CAC/C;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,KACjB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;AAE/D;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAE9C;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAA;CAC/C;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,KACjB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB"}
|
|
@@ -34,6 +34,17 @@ export interface SignActionsContext {
|
|
|
34
34
|
* forwards the descriptor's `signers` as data; it does not branch on them.
|
|
35
35
|
*/
|
|
36
36
|
signers?: PerpsSigner[];
|
|
37
|
+
/**
|
|
38
|
+
* Switch `userWallet` to `chainId` and resolve the client to broadcast with.
|
|
39
|
+
* Bound by core to the consumer's `switchChain` hook and the resolved
|
|
40
|
+
* `userWallet`: a no-op returning the same client when already on `chainId`,
|
|
41
|
+
* else it switches and re-verifies, rejecting with `PerpsErrorCode.SDKError`
|
|
42
|
+
* when the switch cannot be completed. Present only when a `switchChain` hook
|
|
43
|
+
* is configured; a plugin whose legs broadcast on-chain (Lighter's `EVM_TX`)
|
|
44
|
+
* calls it per leg, and falls back to a fail-loud wrong-chain guard when it is
|
|
45
|
+
* absent (local/private-key signer, or no hook).
|
|
46
|
+
*/
|
|
47
|
+
switchToChain?: (chainId: number) => Promise<PerpsClientSigner>;
|
|
37
48
|
}
|
|
38
49
|
/**
|
|
39
50
|
* Signer-bearing wire fields a provider plugin contributes to an action's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/types/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,MAAM,EACN,KAAK,EACL,cAAc,EACd,WAAW,EACX,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,SAAS,EACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,aAAa,CAAA;AAEpB;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,8FAA8F;IAC9F,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;IACvC,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,CAAA;IACnC,0EAA0E;IAC1E,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAA;CACpD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/types/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,MAAM,EACN,KAAK,EACL,cAAc,EACd,WAAW,EACX,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,SAAS,EACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,aAAa,CAAA;AAEpB;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,8FAA8F;IAC9F,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;IACvC,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,CAAA;IACnC,0EAA0E;IAC1E,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAA;CACpD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAChE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,0GAA0G;IAC1G,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,CAAA;CAChB;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAA;IAElC,UAAU,CACR,MAAM,EAAE,wBAAwB,EAChC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAAA;IAE3B;;;;;;OAMG;IACH,aAAa,CACX,MAAM,EAAE,2BAA2B,EACnC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnB,YAAY,CACV,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAE7B,SAAS,CACP,MAAM,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAAA;IAE1B,QAAQ,CACN,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,KAAK,CAAC,CAAA;IAEjB,QAAQ,CACN,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAAA;IAEzB,WAAW,CACT,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAE9B;;;;;;OAMG;IACH,QAAQ,CACN,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,KAAK,CAAC,CAAA;IAEjB;;;;;;;;OAQG;IACH,iBAAiB,CACf,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,QAAQ,EAAE,GACpB,cAAc,CAAA;IAEjB;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAEvD;;;;;;;;OAQG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAErD;;;;;;;;;OASG;IACH,wBAAwB,CACtB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,yBAAyB,GAChC,MAAM,GAAG,SAAS,CAAA;IAErB;;;;;;;;;OASG;IACH,aAAa,CACX,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE,cAAc,EAAE,GACxB,oBAAoB,EAAE,CAAA;IAEzB;;;;;;;OAOG;IACH,kBAAkB,CAAC,CACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAEnC;;;;;;;;;;;;;;;OAeG;IACH,oBAAoB,CAAC,CACnB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,EAAE,GACrB,OAAO,CAAC,wBAAwB,CAAC,CAAA;IAEpC;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,CACV,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;CAC/B;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ActionStep, ProviderAction } from '@lifi/perps-types';
|
|
2
|
+
import type { PerpsClientSigner, SwitchChainHook } from '../types/config.js';
|
|
3
|
+
/**
|
|
4
|
+
* The chain a batch of `actions` must be signed on, or `undefined` when no
|
|
5
|
+
* wallet chain switch applies. Only USER-signed EIP-712 batches carry a target
|
|
6
|
+
* (agent-signed batches sign with a chain-bound keypair; other schemes are not
|
|
7
|
+
* EIP-712). Reads the first numeric `typedData.domain.chainId`; a batch whose
|
|
8
|
+
* steps omit `chainId` yields `undefined`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function userEip712TargetChainId(descriptor: ProviderAction, actions: ActionStep[]): number | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Ensure `wallet` is on `targetChainId` before signing, returning the wallet to
|
|
13
|
+
* sign with. Without a `switchChain` hook the wallet is returned unchanged (no
|
|
14
|
+
* throw, no RPC) — a local/private-key signer signs EIP-712 offline regardless
|
|
15
|
+
* of its transport chain. With a hook: probe the current chain via viem
|
|
16
|
+
* `getChainId`, return the wallet untouched when already on target, else invoke
|
|
17
|
+
* the hook and re-verify. Throws `PerpsErrorCode.SDKError` when the hook yields
|
|
18
|
+
* no client or a client still on the wrong chain.
|
|
19
|
+
*/
|
|
20
|
+
export declare function switchSigningChain(wallet: PerpsClientSigner, targetChainId: number, switchChain?: SwitchChainHook): Promise<PerpsClientSigner>;
|
|
21
|
+
//# sourceMappingURL=switchChain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switchChain.d.ts","sourceRoot":"","sources":["../../../src/utils/switchChain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,cAAc,EACf,MAAM,mBAAmB,CAAA;AAI1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAE5E;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,UAAU,EAAE,GACpB,MAAM,GAAG,SAAS,CAcpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,eAAe,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAuB5B"}
|
package/dist/types/version.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "LI.FI Perps SDK for perpetuals trading",
|
|
5
5
|
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@lifi/types": "17.82.1",
|
|
45
45
|
"partysocket": "^1.1.19",
|
|
46
46
|
"viem": "^2.48.8",
|
|
47
|
-
"@lifi/perps-types": "^1.
|
|
47
|
+
"@lifi/perps-types": "^1.12.0"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|
|
@@ -30,14 +30,20 @@ import type {
|
|
|
30
30
|
PlaceOrderParams,
|
|
31
31
|
PlaceTriggerOrderParams,
|
|
32
32
|
ProviderSetup,
|
|
33
|
+
SendAssetActionParams,
|
|
33
34
|
WithdrawParams,
|
|
34
35
|
} from '../types/api.js'
|
|
36
|
+
import type { PerpsClientSigner, SwitchChainHook } from '../types/config.js'
|
|
35
37
|
import type {
|
|
36
38
|
ActionSignerContribution,
|
|
37
39
|
PerpsProvider,
|
|
38
40
|
PerpsSDKClient,
|
|
39
41
|
SignActionsContext,
|
|
40
42
|
} from '../types/provider.js'
|
|
43
|
+
import {
|
|
44
|
+
switchSigningChain,
|
|
45
|
+
userEip712TargetChainId,
|
|
46
|
+
} from '../utils/switchChain.js'
|
|
41
47
|
import { createPerpsClient } from './createPerpsClient.js'
|
|
42
48
|
import { requireProvider as resolveProvider } from './requireProvider.js'
|
|
43
49
|
|
|
@@ -75,6 +81,7 @@ export class PerpsClient {
|
|
|
75
81
|
private sdkClient: PerpsSDKClient
|
|
76
82
|
private providerMetadataCache: Map<string, Provider> = new Map()
|
|
77
83
|
private _userWallet: PerpsSDKClient['userWallet'] | undefined
|
|
84
|
+
private _switchChain: SwitchChainHook | undefined
|
|
78
85
|
|
|
79
86
|
constructor(options: PerpsClientOptions) {
|
|
80
87
|
this.sdkClient = createPerpsClient({
|
|
@@ -83,6 +90,7 @@ export class PerpsClient {
|
|
|
83
90
|
apiUrl: options.apiUrl,
|
|
84
91
|
providers: options.providers,
|
|
85
92
|
})
|
|
93
|
+
this._switchChain = options.switchChain
|
|
86
94
|
}
|
|
87
95
|
|
|
88
96
|
/**
|
|
@@ -99,6 +107,17 @@ export class PerpsClient {
|
|
|
99
107
|
})
|
|
100
108
|
}
|
|
101
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Set or replace the wallet chain-switch hook invoked before a USER-signed
|
|
112
|
+
* EIP-712 action is signed. Mirrors {@link setUserWallet}. Pass undefined to
|
|
113
|
+
* clear — cleared, a wallet on the wrong chain signs offline without a switch.
|
|
114
|
+
*
|
|
115
|
+
* @public
|
|
116
|
+
*/
|
|
117
|
+
setSwitchChain(switchChain: SwitchChainHook | undefined): void {
|
|
118
|
+
this._switchChain = switchChain
|
|
119
|
+
}
|
|
120
|
+
|
|
102
121
|
/**
|
|
103
122
|
* The underlying low-level {@link PerpsSDKClient} (config, user wallet,
|
|
104
123
|
* provider registry) backing this instance.
|
|
@@ -185,14 +204,37 @@ export class PerpsClient {
|
|
|
185
204
|
`signingMethod '${descriptor.signingMethod}'.`
|
|
186
205
|
)
|
|
187
206
|
}
|
|
207
|
+
const userWallet = await this.resolveSigningWallet(descriptor, actions)
|
|
188
208
|
return plugin.signActions(
|
|
189
209
|
descriptor.signingMethod,
|
|
190
210
|
actions,
|
|
191
211
|
address,
|
|
192
|
-
this.buildSignActionsContext(descriptor)
|
|
212
|
+
this.buildSignActionsContext(descriptor, userWallet)
|
|
193
213
|
)
|
|
194
214
|
}
|
|
195
215
|
|
|
216
|
+
/**
|
|
217
|
+
* Resolve the wallet that signs `actions`. For a USER-signed EIP-712 batch,
|
|
218
|
+
* switch the configured wallet to the action's target chain via the
|
|
219
|
+
* `switchChain` hook and return the switched client; the switch is transient
|
|
220
|
+
* — `sdkClient.userWallet` is never mutated. All other batches (agent-signed,
|
|
221
|
+
* non-EIP-712, or no configured wallet) return the configured wallet as-is.
|
|
222
|
+
*/
|
|
223
|
+
private async resolveSigningWallet(
|
|
224
|
+
descriptor: ProviderAction,
|
|
225
|
+
actions: ActionStep[]
|
|
226
|
+
): Promise<PerpsClientSigner | undefined> {
|
|
227
|
+
const wallet = this.sdkClient.userWallet
|
|
228
|
+
if (!wallet) {
|
|
229
|
+
return undefined
|
|
230
|
+
}
|
|
231
|
+
const targetChainId = userEip712TargetChainId(descriptor, actions)
|
|
232
|
+
if (targetChainId === undefined) {
|
|
233
|
+
return wallet
|
|
234
|
+
}
|
|
235
|
+
return switchSigningChain(wallet, targetChainId, this._switchChain)
|
|
236
|
+
}
|
|
237
|
+
|
|
196
238
|
/**
|
|
197
239
|
* Assemble the per-call context the provider plugin needs in order to sign:
|
|
198
240
|
* the end-user's wallet and the descriptor's declared `signers`. Core
|
|
@@ -200,13 +242,29 @@ export class PerpsClient {
|
|
|
200
242
|
* branch on them. Provider-owned session credentials (the Hyperliquid agent
|
|
201
243
|
* keypair, Lighter's API key) are resolved inside the provider's
|
|
202
244
|
* `signActions`, not threaded through here.
|
|
245
|
+
*
|
|
246
|
+
* `userWallet` overrides the configured wallet for this signing pass only —
|
|
247
|
+
* `resolveSigningWallet` supplies the chain-switched client without mutating
|
|
248
|
+
* `sdkClient.userWallet`.
|
|
249
|
+
*
|
|
250
|
+
* When a `switchChain` hook is configured, `switchToChain` is bound to the
|
|
251
|
+
* resolved wallet so a plugin can switch per leg mid-batch (Lighter's
|
|
252
|
+
* `EVM_TX` broadcasts); the switch stays transient — it never mutates
|
|
253
|
+
* `sdkClient.userWallet`.
|
|
203
254
|
*/
|
|
204
255
|
private buildSignActionsContext(
|
|
205
|
-
descriptor: ProviderAction
|
|
256
|
+
descriptor: ProviderAction,
|
|
257
|
+
userWallet?: PerpsClientSigner
|
|
206
258
|
): SignActionsContext {
|
|
207
259
|
const ctx: SignActionsContext = { signers: descriptor.signers }
|
|
208
|
-
|
|
209
|
-
|
|
260
|
+
const wallet = userWallet ?? this.sdkClient.userWallet
|
|
261
|
+
if (wallet !== undefined) {
|
|
262
|
+
ctx.userWallet = wallet
|
|
263
|
+
const switchChain = this._switchChain
|
|
264
|
+
if (switchChain !== undefined) {
|
|
265
|
+
ctx.switchToChain = (chainId) =>
|
|
266
|
+
switchSigningChain(wallet, chainId, switchChain)
|
|
267
|
+
}
|
|
210
268
|
}
|
|
211
269
|
return ctx
|
|
212
270
|
}
|
|
@@ -217,14 +275,17 @@ export class PerpsClient {
|
|
|
217
275
|
* consumers collect signed setup actions without embedding per-method
|
|
218
276
|
* signing logic.
|
|
219
277
|
*
|
|
278
|
+
* Returns `undefined` when the plugin executed the action entirely
|
|
279
|
+
* client-side (e.g. Lighter's token-authenticated venue mutations), leaving
|
|
280
|
+
* no backend-bound step to submit.
|
|
281
|
+
*
|
|
220
282
|
* @throws {PerpsError} When the step's action is not declared by the provider.
|
|
221
|
-
* @public
|
|
222
283
|
*/
|
|
223
|
-
async signProviderSetupAction(
|
|
284
|
+
private async signProviderSetupAction(
|
|
224
285
|
provider: string,
|
|
225
286
|
address: Address,
|
|
226
287
|
step: ActionStep
|
|
227
|
-
): Promise<SignedActionStep> {
|
|
288
|
+
): Promise<SignedActionStep | undefined> {
|
|
228
289
|
const metadata = await this.getProviderMetadata(provider)
|
|
229
290
|
const descriptor = findActionDescriptor(metadata, step.action)
|
|
230
291
|
const [signed] = await this.delegateSignActions(
|
|
@@ -404,10 +465,8 @@ export class PerpsClient {
|
|
|
404
465
|
* caller / `signProviderSetupAction`). Routes the batch on the first step's
|
|
405
466
|
* action and lets the plugin contribute that action's `signerAddress`.
|
|
406
467
|
* Throws on any per-step venue rejection.
|
|
407
|
-
*
|
|
408
|
-
* @public
|
|
409
468
|
*/
|
|
410
|
-
async executeProviderSetup(
|
|
469
|
+
private async executeProviderSetup(
|
|
411
470
|
params: ExecuteProviderSetupParams
|
|
412
471
|
): Promise<ExecuteProviderSetupResult> {
|
|
413
472
|
const { provider, address, setup, signedActions } = params
|
|
@@ -476,6 +535,14 @@ export class PerpsClient {
|
|
|
476
535
|
}
|
|
477
536
|
|
|
478
537
|
const signed = await this.signProviderSetupAction(provider, address, step)
|
|
538
|
+
|
|
539
|
+
// A client-executed setup action (Lighter SET_REFERRAL) produces no
|
|
540
|
+
// backend-bound step — it already ran during signing, so there is nothing
|
|
541
|
+
// to submit.
|
|
542
|
+
if (signed === undefined) {
|
|
543
|
+
return
|
|
544
|
+
}
|
|
545
|
+
|
|
479
546
|
await this.executeProviderSetup({
|
|
480
547
|
provider,
|
|
481
548
|
address,
|
|
@@ -628,6 +695,28 @@ export class PerpsClient {
|
|
|
628
695
|
})
|
|
629
696
|
}
|
|
630
697
|
|
|
698
|
+
/**
|
|
699
|
+
* Move collateral between DEXes within the provider account. Convenience
|
|
700
|
+
* wrapper over {@link execute} with `ActionType.SEND_ASSET`; like
|
|
701
|
+
* {@link withdraw} it returns the raw {@link ExecuteActionResponse} and does
|
|
702
|
+
* not throw on a venue rejection.
|
|
703
|
+
*
|
|
704
|
+
* @throws {PerpsError} When the provider is unregistered or the action
|
|
705
|
+
* cannot be signed/submitted.
|
|
706
|
+
* @public
|
|
707
|
+
*/
|
|
708
|
+
async sendAsset(
|
|
709
|
+
params: SendAssetActionParams
|
|
710
|
+
): Promise<ExecuteActionResponse> {
|
|
711
|
+
const { provider, address, ...sendAsset } = params
|
|
712
|
+
return this.execute({
|
|
713
|
+
provider,
|
|
714
|
+
address,
|
|
715
|
+
action: ActionType.SEND_ASSET,
|
|
716
|
+
params: sendAsset,
|
|
717
|
+
})
|
|
718
|
+
}
|
|
719
|
+
|
|
631
720
|
/**
|
|
632
721
|
* Execute any action through the SDK's signing pipeline: fetch the unsigned
|
|
633
722
|
* steps, delegate signing to the provider plugin (which branches on the
|
|
@@ -669,6 +758,13 @@ export class PerpsClient {
|
|
|
669
758
|
actions
|
|
670
759
|
)
|
|
671
760
|
|
|
761
|
+
// A plugin may execute an action entirely client-side (e.g. Lighter's
|
|
762
|
+
// token-authenticated venue mutations), leaving no backend-bound step. With
|
|
763
|
+
// nothing to submit, skip the `/executeAction` hop.
|
|
764
|
+
if (signedActions.length === 0) {
|
|
765
|
+
return { results: [] }
|
|
766
|
+
}
|
|
767
|
+
|
|
672
768
|
return executeAction(this.sdkClient, {
|
|
673
769
|
provider,
|
|
674
770
|
address,
|
package/src/index.ts
CHANGED
|
@@ -90,8 +90,6 @@ export {
|
|
|
90
90
|
export type {
|
|
91
91
|
BuildProviderSetupParams,
|
|
92
92
|
CancelOrdersParams,
|
|
93
|
-
ExecuteProviderSetupParams,
|
|
94
|
-
ExecuteProviderSetupResult,
|
|
95
93
|
GetAccountResult,
|
|
96
94
|
GetSetupParams,
|
|
97
95
|
ModifyOrdersParams,
|
|
@@ -100,6 +98,8 @@ export type {
|
|
|
100
98
|
PlaceOrderParams as ClientPlaceOrderParams,
|
|
101
99
|
PlaceTriggerOrderParams as ClientPlaceTriggerOrderParams,
|
|
102
100
|
ProviderSetup,
|
|
101
|
+
SendAssetActionParams,
|
|
102
|
+
WithdrawParams,
|
|
103
103
|
} from './types/api.js'
|
|
104
104
|
export type {
|
|
105
105
|
HyperliquidConfig,
|
|
@@ -109,6 +109,7 @@ export type {
|
|
|
109
109
|
ProviderConfigs,
|
|
110
110
|
RequestInterceptor,
|
|
111
111
|
SDKRequestOptions,
|
|
112
|
+
SwitchChainHook,
|
|
112
113
|
} from './types/config.js'
|
|
113
114
|
export type {
|
|
114
115
|
ActionSignerContribution,
|
package/src/types/api.ts
CHANGED
|
@@ -14,7 +14,11 @@ import type {
|
|
|
14
14
|
} from '@lifi/perps-types'
|
|
15
15
|
import type { Account, Address, WalletClient } from 'viem'
|
|
16
16
|
import type { RetryConfig } from '../transport/retryPolicy.js'
|
|
17
|
-
import type {
|
|
17
|
+
import type {
|
|
18
|
+
ProviderConfigs,
|
|
19
|
+
RequestInterceptor,
|
|
20
|
+
SwitchChainHook,
|
|
21
|
+
} from './config.js'
|
|
18
22
|
import type { PerpsProviderPlugin } from './provider.js'
|
|
19
23
|
|
|
20
24
|
/**
|
|
@@ -85,6 +89,12 @@ export interface PerpsClientOptions {
|
|
|
85
89
|
* a keyed `ProviderConfigs` map.
|
|
86
90
|
*/
|
|
87
91
|
providers?: PerpsProviderPlugin[] | ProviderConfigs
|
|
92
|
+
/**
|
|
93
|
+
* Hook invoked before a USER-signed EIP-712 action is signed, to switch the
|
|
94
|
+
* user's wallet to the action's target chain. Also settable at runtime via
|
|
95
|
+
* `setSwitchChain`.
|
|
96
|
+
*/
|
|
97
|
+
switchChain?: SwitchChainHook
|
|
88
98
|
}
|
|
89
99
|
|
|
90
100
|
/**
|
|
@@ -145,6 +155,22 @@ export interface WithdrawParams {
|
|
|
145
155
|
withdrawal: WithdrawalParams
|
|
146
156
|
}
|
|
147
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Parameters for {@link PerpsClient.sendAsset}. The send-asset fields are held
|
|
160
|
+
* flat (not nested) to avoid colliding with `@lifi/perps-types`'
|
|
161
|
+
* `SendAssetParams`, which types the underlying action payload.
|
|
162
|
+
*
|
|
163
|
+
* @public
|
|
164
|
+
*/
|
|
165
|
+
export interface SendAssetActionParams {
|
|
166
|
+
provider: string
|
|
167
|
+
address: Address
|
|
168
|
+
collateral: string
|
|
169
|
+
sourceDex: string
|
|
170
|
+
destinationDex: string
|
|
171
|
+
amount: string
|
|
172
|
+
}
|
|
173
|
+
|
|
148
174
|
/**
|
|
149
175
|
* Parameters for canceling orders.
|
|
150
176
|
*
|
|
@@ -205,9 +231,7 @@ export interface ProviderSetup {
|
|
|
205
231
|
}
|
|
206
232
|
|
|
207
233
|
/**
|
|
208
|
-
* Parameters for
|
|
209
|
-
*
|
|
210
|
-
* @public
|
|
234
|
+
* Parameters for the internal `PerpsClient.executeProviderSetup` batch submit.
|
|
211
235
|
*/
|
|
212
236
|
export interface ExecuteProviderSetupParams {
|
|
213
237
|
/** Provider to satisfy setup for */
|
|
@@ -221,9 +245,7 @@ export interface ExecuteProviderSetupParams {
|
|
|
221
245
|
}
|
|
222
246
|
|
|
223
247
|
/**
|
|
224
|
-
* Result from
|
|
225
|
-
*
|
|
226
|
-
* @public
|
|
248
|
+
* Result from the internal `PerpsClient.executeProviderSetup` batch submit.
|
|
227
249
|
*/
|
|
228
250
|
export interface ExecuteProviderSetupResult {
|
|
229
251
|
results: ExecuteActionResponse
|
package/src/types/config.ts
CHANGED
|
@@ -9,6 +9,20 @@ import type { RetryConfig } from '../transport/retryPolicy.js'
|
|
|
9
9
|
*/
|
|
10
10
|
export type PerpsClientSigner = WalletClient<any, any, Account>
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Consumer-supplied hook invoked at the SDK's signing choke point to switch the
|
|
14
|
+
* user's wallet to a USER-signed EIP-712 action's target chain. Modelled on
|
|
15
|
+
* `@lifi/sdk`'s switch-chain contract: a json-rpc wallet switches in place and
|
|
16
|
+
* resolves to the re-fetched client; a local/private-key signer resolves to a
|
|
17
|
+
* chain-bound client (or signs offline). Resolve to `undefined` to signal the
|
|
18
|
+
* switch could not be performed.
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export type SwitchChainHook = (
|
|
23
|
+
chainId: number
|
|
24
|
+
) => Promise<PerpsClientSigner | undefined>
|
|
25
|
+
|
|
12
26
|
/**
|
|
13
27
|
* Per-provider config — restricts which `markets` the WS client subscribes
|
|
14
28
|
* to. Indexed by provider key.
|
package/src/types/provider.ts
CHANGED
|
@@ -63,6 +63,17 @@ export interface SignActionsContext {
|
|
|
63
63
|
* forwards the descriptor's `signers` as data; it does not branch on them.
|
|
64
64
|
*/
|
|
65
65
|
signers?: PerpsSigner[]
|
|
66
|
+
/**
|
|
67
|
+
* Switch `userWallet` to `chainId` and resolve the client to broadcast with.
|
|
68
|
+
* Bound by core to the consumer's `switchChain` hook and the resolved
|
|
69
|
+
* `userWallet`: a no-op returning the same client when already on `chainId`,
|
|
70
|
+
* else it switches and re-verifies, rejecting with `PerpsErrorCode.SDKError`
|
|
71
|
+
* when the switch cannot be completed. Present only when a `switchChain` hook
|
|
72
|
+
* is configured; a plugin whose legs broadcast on-chain (Lighter's `EVM_TX`)
|
|
73
|
+
* calls it per leg, and falls back to a fail-loud wrong-chain guard when it is
|
|
74
|
+
* absent (local/private-key signer, or no hook).
|
|
75
|
+
*/
|
|
76
|
+
switchToChain?: (chainId: number) => Promise<PerpsClientSigner>
|
|
66
77
|
}
|
|
67
78
|
|
|
68
79
|
/**
|