@lifi/perps-sdk 18.1.0 → 20.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 +15 -5
- package/dist/cjs/client/PerpsClient.d.ts +14 -8
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +145 -53
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/client/createPerpsClient.d.ts +1 -6
- package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/createPerpsClient.js +1 -14
- package/dist/cjs/client/createPerpsClient.js.map +1 -1
- package/dist/cjs/index.d.ts +6 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +11 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
- package/dist/cjs/services/getOhlcv.js.map +1 -1
- package/dist/cjs/types/api.d.ts +7 -6
- package/dist/cjs/types/api.d.ts.map +1 -1
- package/dist/cjs/types/config.d.ts +0 -9
- package/dist/cjs/types/config.d.ts.map +1 -1
- package/dist/cjs/types/provider.d.ts +5 -6
- package/dist/cjs/types/provider.d.ts.map +1 -1
- package/dist/cjs/types/withdrawal.d.ts +4 -2
- package/dist/cjs/types/withdrawal.d.ts.map +1 -1
- package/dist/cjs/utils/calculations.d.ts.map +1 -1
- package/dist/cjs/utils/calculations.js +107 -38
- package/dist/cjs/utils/calculations.js.map +1 -1
- package/dist/cjs/utils/decimal.d.ts +4 -0
- package/dist/cjs/utils/decimal.d.ts.map +1 -0
- package/dist/cjs/utils/decimal.js +14 -0
- package/dist/cjs/utils/decimal.js.map +1 -0
- package/dist/cjs/utils/math.d.ts +4 -0
- package/dist/cjs/utils/math.d.ts.map +1 -0
- package/dist/cjs/utils/math.js +8 -0
- package/dist/cjs/utils/math.js.map +1 -0
- package/dist/cjs/utils/parse.d.ts +1 -0
- package/dist/cjs/utils/parse.d.ts.map +1 -1
- package/dist/cjs/utils/parse.js +15 -0
- package/dist/cjs/utils/parse.js.map +1 -1
- package/dist/cjs/utils/positionMath.d.ts +5 -0
- package/dist/cjs/utils/positionMath.d.ts.map +1 -1
- package/dist/cjs/utils/positionMath.js +53 -6
- package/dist/cjs/utils/positionMath.js.map +1 -1
- package/dist/cjs/utils/setupActions.d.ts +4 -2
- package/dist/cjs/utils/setupActions.d.ts.map +1 -1
- package/dist/cjs/utils/setupActions.js +9 -1
- package/dist/cjs/utils/setupActions.js.map +1 -1
- package/dist/cjs/utils/switchChain.js +1 -1
- package/dist/cjs/utils/switchChain.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/websocket/PerpsWsClient.d.ts +0 -1
- package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/cjs/websocket/PerpsWsClient.js +0 -7
- package/dist/cjs/websocket/PerpsWsClient.js.map +1 -1
- package/dist/esm/client/PerpsClient.d.ts +70 -61
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +215 -107
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/client/createPerpsClient.d.ts +1 -12
- package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
- package/dist/esm/client/createPerpsClient.js +1 -19
- package/dist/esm/client/createPerpsClient.js.map +1 -1
- package/dist/esm/client/requireProvider.d.ts +1 -1
- package/dist/esm/client/requireProvider.js +1 -1
- package/dist/esm/index.d.ts +6 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/getOhlcv.d.ts +1 -0
- package/dist/esm/services/getOhlcv.d.ts.map +1 -1
- package/dist/esm/services/getOhlcv.js.map +1 -1
- package/dist/esm/types/api.d.ts +39 -36
- package/dist/esm/types/api.d.ts.map +1 -1
- package/dist/esm/types/config.d.ts +0 -27
- package/dist/esm/types/config.d.ts.map +1 -1
- package/dist/esm/types/provider.d.ts +28 -33
- package/dist/esm/types/provider.d.ts.map +1 -1
- package/dist/esm/types/withdrawal.d.ts +24 -15
- package/dist/esm/types/withdrawal.d.ts.map +1 -1
- package/dist/esm/utils/calculations.d.ts +3 -2
- package/dist/esm/utils/calculations.d.ts.map +1 -1
- package/dist/esm/utils/calculations.js +109 -39
- package/dist/esm/utils/calculations.js.map +1 -1
- package/dist/esm/utils/decimal.d.ts +9 -0
- package/dist/esm/utils/decimal.d.ts.map +1 -0
- package/dist/esm/utils/decimal.js +12 -0
- package/dist/esm/utils/decimal.js.map +1 -0
- package/dist/esm/utils/math.d.ts +6 -0
- package/dist/esm/utils/math.d.ts.map +1 -0
- package/dist/esm/utils/math.js +5 -0
- package/dist/esm/utils/math.js.map +1 -0
- package/dist/esm/utils/parse.d.ts +7 -0
- package/dist/esm/utils/parse.d.ts.map +1 -1
- package/dist/esm/utils/parse.js +20 -0
- package/dist/esm/utils/parse.js.map +1 -1
- package/dist/esm/utils/positionMath.d.ts +13 -0
- package/dist/esm/utils/positionMath.d.ts.map +1 -1
- package/dist/esm/utils/positionMath.js +60 -6
- package/dist/esm/utils/positionMath.js.map +1 -1
- package/dist/esm/utils/setupActions.d.ts +17 -8
- package/dist/esm/utils/setupActions.d.ts.map +1 -1
- package/dist/esm/utils/setupActions.js +20 -7
- package/dist/esm/utils/setupActions.js.map +1 -1
- package/dist/esm/utils/switchChain.js +1 -1
- package/dist/esm/utils/switchChain.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/websocket/PerpsWsClient.d.ts +0 -7
- package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/esm/websocket/PerpsWsClient.js +0 -7
- package/dist/esm/websocket/PerpsWsClient.js.map +1 -1
- package/dist/types/client/PerpsClient.d.ts +70 -61
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/client/createPerpsClient.d.ts +1 -12
- package/dist/types/client/createPerpsClient.d.ts.map +1 -1
- package/dist/types/client/requireProvider.d.ts +1 -1
- package/dist/types/index.d.ts +6 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/services/getOhlcv.d.ts +1 -0
- package/dist/types/services/getOhlcv.d.ts.map +1 -1
- package/dist/types/types/api.d.ts +39 -36
- package/dist/types/types/api.d.ts.map +1 -1
- package/dist/types/types/config.d.ts +0 -27
- package/dist/types/types/config.d.ts.map +1 -1
- package/dist/types/types/provider.d.ts +28 -33
- package/dist/types/types/provider.d.ts.map +1 -1
- package/dist/types/types/withdrawal.d.ts +24 -15
- package/dist/types/types/withdrawal.d.ts.map +1 -1
- package/dist/types/utils/calculations.d.ts +3 -2
- package/dist/types/utils/calculations.d.ts.map +1 -1
- package/dist/types/utils/decimal.d.ts +9 -0
- package/dist/types/utils/decimal.d.ts.map +1 -0
- package/dist/types/utils/math.d.ts +6 -0
- package/dist/types/utils/math.d.ts.map +1 -0
- package/dist/types/utils/parse.d.ts +7 -0
- package/dist/types/utils/parse.d.ts.map +1 -1
- package/dist/types/utils/positionMath.d.ts +13 -0
- package/dist/types/utils/positionMath.d.ts.map +1 -1
- package/dist/types/utils/setupActions.d.ts +17 -8
- package/dist/types/utils/setupActions.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/websocket/PerpsWsClient.d.ts +0 -7
- package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/client/PerpsClient.ts +296 -137
- package/src/client/createPerpsClient.ts +4 -32
- package/src/client/requireProvider.ts +1 -1
- package/src/index.ts +8 -5
- package/src/services/getOhlcv.ts +1 -0
- package/src/types/api.ts +40 -40
- package/src/types/config.ts +0 -30
- package/src/types/provider.ts +29 -36
- package/src/types/withdrawal.ts +24 -15
- package/src/utils/calculations.ts +114 -43
- package/src/utils/decimal.ts +13 -0
- package/src/utils/math.ts +7 -0
- package/src/utils/parse.ts +25 -0
- package/src/utils/positionMath.ts +66 -6
- package/src/utils/setupActions.ts +27 -13
- package/src/utils/switchChain.ts +1 -1
- package/src/version.ts +1 -1
- package/src/websocket/PerpsWsClient.ts +0 -19
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AccountConfig, AccountConfigSetting, AccountResponse, AccountSummary, ActionResult, ActionStep, ActionType, ActivitiesResponse, ActivityType, AvailableToTrade, FillsResponse, Market, MarketRef, MarketSettings, Order, OrderStatus, OrdersResponse, PerpsMarket, PerpsSigner, PortfolioHistoryRange, PortfolioHistoryResponse, Position, PositionsResponse,
|
|
1
|
+
import type { AccountConfig, AccountConfigSetting, AccountResponse, AccountSummary, ActionResult, ActionStep, ActionType, ActivitiesResponse, ActivityType, AvailableToTrade, FillsResponse, Market, MarketRef, MarketSettings, Order, OrderStatus, OrdersResponse, PerpsMarket, PerpsSigner, PortfolioHistoryRange, PortfolioHistoryResponse, Position, PositionsResponse, Quote, QuoteSide, SetupAction, SignedActionStep, SigningMethod, TradeType } from '@lifi/perps-types';
|
|
2
2
|
import type { Address } from 'viem';
|
|
3
3
|
import type { PerpsBaseConfig, PerpsClientSigner, SDKRequestOptions } from './config.js';
|
|
4
4
|
import type { DepositFlow } from './deposit.js';
|
|
@@ -49,12 +49,12 @@ export interface SignActionsContext {
|
|
|
49
49
|
/** End-user wallet used for USER-signed or EVM transaction legs. */
|
|
50
50
|
userWallet?: PerpsClientSigner;
|
|
51
51
|
/**
|
|
52
|
-
* The signing batch's declared
|
|
52
|
+
* The signing batch's declared signer, from the action's `ProviderAction`
|
|
53
53
|
* descriptor. The plugin branches on this to pick WHO signs (e.g.
|
|
54
|
-
* Hyperliquid: `USER` → end-user wallet, `
|
|
55
|
-
* forwards the descriptor's `
|
|
54
|
+
* Hyperliquid: `USER` → end-user wallet, `SDK` → session keypair). Core
|
|
55
|
+
* forwards the descriptor's `signer` as data; it does not branch on it.
|
|
56
56
|
*/
|
|
57
|
-
|
|
57
|
+
signer?: PerpsSigner;
|
|
58
58
|
/**
|
|
59
59
|
* Switch `userWallet` to `chainId` and resolve the client to broadcast with.
|
|
60
60
|
* Bound by core to the consumer's `switchChain` hook and the resolved
|
|
@@ -314,22 +314,12 @@ export interface PerpsProviderPlugin {
|
|
|
314
314
|
*/
|
|
315
315
|
readonly type: string;
|
|
316
316
|
/**
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
* credentials — and omits it from the returned `setup` list. A descriptor
|
|
321
|
-
* whose `signers` include {@link PerpsSigner.USER} is never treated as
|
|
322
|
-
* internal, even when named here. Omit when the provider has no
|
|
323
|
-
* self-completed setup steps.
|
|
324
|
-
*/
|
|
325
|
-
readonly internalSetupActions?: readonly ActionType[];
|
|
326
|
-
/**
|
|
327
|
-
* Setup actions that stage work only when the account needs remediation
|
|
328
|
-
* (e.g. Hyperliquid's REVOKE_AGENT frees an agent slot only when every
|
|
329
|
-
* named slot is taken). When such a step stages no actions,
|
|
317
|
+
* Non-choice setup actions that stage work only when the account needs
|
|
318
|
+
* remediation (e.g. Hyperliquid's REVOKE_AGENT frees an agent slot only
|
|
319
|
+
* when every named slot is taken). When such a step stages no actions,
|
|
330
320
|
* `PerpsClient.checkSetup` omits it from `ProviderSetup.checklist` instead
|
|
331
|
-
* of rendering it as satisfied.
|
|
332
|
-
* unconditional.
|
|
321
|
+
* of rendering it as satisfied. Choices are always rendered because they
|
|
322
|
+
* are never staged. Omit when every setup step is unconditional.
|
|
333
323
|
*/
|
|
334
324
|
readonly conditionalSetupActions?: readonly ActionType[];
|
|
335
325
|
/**
|
|
@@ -381,13 +371,14 @@ export interface PerpsProviderPlugin {
|
|
|
381
371
|
getWithdrawableBalances?(params: ProviderGetWithdrawableBalancesParams, options?: SDKRequestOptions): Promise<ProviderWithdrawableBalance[]>;
|
|
382
372
|
getPositions(params: ProviderGetPositionsParams, options?: SDKRequestOptions): Promise<PositionsResponse>;
|
|
383
373
|
/**
|
|
384
|
-
* The user's current venue-side settings for one market — the margin
|
|
385
|
-
* and leverage the next order on it will use.
|
|
386
|
-
*
|
|
387
|
-
*
|
|
388
|
-
*
|
|
374
|
+
* The user's current venue-side settings for one perps market — the margin
|
|
375
|
+
* mode and leverage the next order on it will use. Resolves the venue value
|
|
376
|
+
* or throws.
|
|
377
|
+
*
|
|
378
|
+
* @throws {PerpsError} `ValidationError` for a spot market; any other
|
|
379
|
+
* `PerpsError` when the venue read fails or carries no usable value.
|
|
389
380
|
*/
|
|
390
|
-
getMarketSettings
|
|
381
|
+
getMarketSettings(params: ProviderGetMarketSettingsParams, options?: SDKRequestOptions): Promise<MarketSettings>;
|
|
391
382
|
/**
|
|
392
383
|
* The amounts the account can still buy and sell on one market, in that
|
|
393
384
|
* market's margin asset. Optional because venues expose this unevenly:
|
|
@@ -472,28 +463,32 @@ export interface PerpsProviderPlugin {
|
|
|
472
463
|
positionRemovableMargin(position: Position): string | undefined;
|
|
473
464
|
/**
|
|
474
465
|
* Project a typed {@link AccountConfig} against the provider's `setup`
|
|
475
|
-
*
|
|
466
|
+
* descriptors into `AccountConfigSetting[]`. Used by
|
|
476
467
|
* `PerpsClient.getAccount` to attach a `settings` array to the response —
|
|
477
|
-
* one entry per descriptor, in `setup
|
|
468
|
+
* one entry per descriptor, in `setup` order. Every choice descriptor
|
|
469
|
+
* (`options` is not `null`) carries a boolean `satisfied`, because
|
|
470
|
+
* `PerpsClient.checkSetup` reads a choice's satisfied state and `selected`
|
|
471
|
+
* option from this projection alone.
|
|
478
472
|
*
|
|
479
473
|
* Implementations receive the union-typed `AccountConfig` and narrow on
|
|
480
474
|
* `config.provider` themselves; the dispatcher in `PerpsClient` does not
|
|
481
475
|
* narrow before calling.
|
|
482
476
|
*/
|
|
483
|
-
projectConfig(config: AccountConfig, setup:
|
|
477
|
+
projectConfig(config: AccountConfig, setup: SetupAction[]): AccountConfigSetting[];
|
|
484
478
|
/**
|
|
485
479
|
* Per-setup-action params the SDK should inject into `createAction` calls
|
|
486
480
|
* when staging the provider setup. Used for plugin-side state the backend
|
|
487
481
|
* needs to make a correct idempotency decision (e.g. Lighter's known local
|
|
488
482
|
* API public key). Returns an empty object when the plugin has no params
|
|
489
|
-
* to contribute for the action.
|
|
483
|
+
* to contribute for the action. A choice option runs with its bound params
|
|
484
|
+
* alone and never reads these. Optional — providers without local state
|
|
490
485
|
* can omit it entirely.
|
|
491
486
|
*/
|
|
492
487
|
resolveSetupParams?(action: ActionType, address: Address): Promise<Record<string, unknown>>;
|
|
493
488
|
/**
|
|
494
489
|
* Contribute the signer-bearing wire fields for an action — the plugin owns
|
|
495
490
|
* signer identity (WHO signs), so core asks the plugin rather than resolving
|
|
496
|
-
* a `signerAddress` itself. The descriptor's `
|
|
491
|
+
* a `signerAddress` itself. The descriptor's `signer` is forwarded so the
|
|
497
492
|
* plugin can branch on signer role: a provider that signs on the user's
|
|
498
493
|
* behalf with a session keypair (Hyperliquid's agent) resolves — provisioning
|
|
499
494
|
* one if needed — and returns the agent address as `signerAddress`; for
|
|
@@ -506,7 +501,7 @@ export interface PerpsProviderPlugin {
|
|
|
506
501
|
* credential (Lighter's API key) omit it — core then sends no `signerAddress`
|
|
507
502
|
* and no injected params.
|
|
508
503
|
*/
|
|
509
|
-
resolveActionRequest?(action: ActionType, address: Address,
|
|
504
|
+
resolveActionRequest?(action: ActionType, address: Address, signer: PerpsSigner): Promise<ActionSignerContribution>;
|
|
510
505
|
/**
|
|
511
506
|
* Sign a batch of unsigned {@link ActionStep}s belonging to one
|
|
512
507
|
* `SigningMethod` arm. Returns the matching {@link SignedActionStep}s in
|
|
@@ -519,7 +514,7 @@ export interface PerpsProviderPlugin {
|
|
|
519
514
|
* provider has no `signActions`.
|
|
520
515
|
*
|
|
521
516
|
* `method` mirrors the descriptor's `signingMethod`. The plugin owns every
|
|
522
|
-
* arm, branching on the descriptor's `
|
|
517
|
+
* arm, branching on the descriptor's `signer` internally: the EIP712 arm
|
|
523
518
|
* signs with the user's wallet (read from `ctx.userWallet`) or the provider's
|
|
524
519
|
* session keypair (Hyperliquid's agent), and `WASM_BLOB` / `EVM_TX` sign with
|
|
525
520
|
* the provider's local credential (Lighter).
|
|
@@ -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,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,MAAM,EACN,SAAS,EACT,cAAc,EACd,KAAK,EACL,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,wBAAwB,EACxB,QAAQ,EACR,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/types/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
import type { ActionType, Asset } from '@lifi/perps-types';
|
|
1
|
+
import type { ActionType, Asset, WithdrawalRoute } from '@lifi/perps-types';
|
|
2
2
|
import type { Address } from 'viem';
|
|
3
|
-
|
|
4
|
-
* Which of a venue's two balance routes a withdrawal is drawn from. Lighter's
|
|
5
|
-
* own vocabulary, carried in the signed tx as `AssetRouteType` (`perps` = 0,
|
|
6
|
-
* `spot` = 1); an account's mode changes what the two balances mean, never
|
|
7
|
-
* which route the tx names.
|
|
8
|
-
*
|
|
9
|
-
* @public
|
|
10
|
-
*/
|
|
11
|
-
export type WithdrawalRoute = 'perps' | 'spot';
|
|
3
|
+
export type { WithdrawalRoute };
|
|
12
4
|
/**
|
|
13
5
|
* One withdrawable `(asset, route)` selection as the provider reports it, keyed
|
|
14
6
|
* by provider-native asset id and awaiting the core asset-metadata join.
|
|
@@ -23,10 +15,16 @@ export interface ProviderWithdrawableBalance {
|
|
|
23
15
|
available: string;
|
|
24
16
|
/**
|
|
25
17
|
* Flat venue fee on a withdrawal from this row, in the asset's own units.
|
|
26
|
-
* Absent when the venue publishes no fee for the asset. The client rejects
|
|
27
|
-
* value that is not a non-negative decimal.
|
|
18
|
+
* Absent when the venue publishes no fee for the asset. The client rejects
|
|
19
|
+
* a value that is not a non-negative decimal.
|
|
28
20
|
*/
|
|
29
21
|
withdrawalFee?: string;
|
|
22
|
+
/**
|
|
23
|
+
* `true` when the venue takes `withdrawalFee` out of the requested amount,
|
|
24
|
+
* `false` when it charges the fee in addition. Set together with
|
|
25
|
+
* `withdrawalFee`; the client drops it from a row without a fee.
|
|
26
|
+
*/
|
|
27
|
+
isFeeDeducted?: boolean;
|
|
30
28
|
}
|
|
31
29
|
/**
|
|
32
30
|
* One withdrawable `(asset, route)` selection a caller can act on: the amount
|
|
@@ -41,11 +39,22 @@ export interface WithdrawableBalance {
|
|
|
41
39
|
/** Withdrawable amount in the asset's own units. */
|
|
42
40
|
available: string;
|
|
43
41
|
/**
|
|
44
|
-
* Flat venue fee on a withdrawal from this row, in the asset's own units.
|
|
45
|
-
*
|
|
46
|
-
* fee
|
|
42
|
+
* Flat venue fee on a withdrawal from this row, in the asset's own units.
|
|
43
|
+
* Absent when the venue publishes no fee for the asset. With
|
|
44
|
+
* `isFeeDeducted` `true`, the venue takes the fee out of the requested
|
|
45
|
+
* amount, and an amount at or below the fee delivers nothing. With `false`,
|
|
46
|
+
* the venue charges the fee in addition to the requested amount, so the
|
|
47
|
+
* largest amount the row can fund is `available` minus the fee. That result
|
|
48
|
+
* is zero or negative when the fee is at or above `available`, and the row
|
|
49
|
+
* then funds no withdrawal.
|
|
47
50
|
*/
|
|
48
51
|
withdrawalFee?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Present only together with `withdrawalFee`. Absent on a row from a
|
|
54
|
+
* provider plugin that does not report it; absence means unknown, not
|
|
55
|
+
* `true`.
|
|
56
|
+
*/
|
|
57
|
+
isFeeDeducted?: boolean;
|
|
49
58
|
}
|
|
50
59
|
/**
|
|
51
60
|
* The venue accepts a withdrawal to `destination` now.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../../src/types/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../../src/types/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,YAAY,EAAE,eAAe,EAAE,CAAA;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,eAAe,CAAA;IACtB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,eAAe,CAAA;IACtB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,eAAe,CAAA;IACrB,qEAAqE;IACrE,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,yBAAyB,CAAA"}
|
|
@@ -164,7 +164,7 @@ interface BookWalk {
|
|
|
164
164
|
filledNotional: number;
|
|
165
165
|
/** Volume-weighted average fill price, or 0 when the book is empty. */
|
|
166
166
|
vwap: number;
|
|
167
|
-
/** True when the levels could not absorb the requested notional. */
|
|
167
|
+
/** True when the levels could not absorb the requested notional, and for a non-finite notional. */
|
|
168
168
|
insufficientLiquidity: boolean;
|
|
169
169
|
}
|
|
170
170
|
/**
|
|
@@ -173,7 +173,8 @@ interface BookWalk {
|
|
|
173
173
|
* in array order — the caller passes asks for a buy and bids for a sell, each
|
|
174
174
|
* already ordered best-price-first. When the book cannot absorb the full
|
|
175
175
|
* notional, the walk stops at the last level and flags `insufficientLiquidity`,
|
|
176
|
-
* returning the best obtainable fill.
|
|
176
|
+
* returning the best obtainable fill. A non-finite `sizeUsd` gives NaN fill
|
|
177
|
+
* fields with `insufficientLiquidity` set.
|
|
177
178
|
*
|
|
178
179
|
* @throws {PerpsError} `ValidationError` when a level's `price` or `size`
|
|
179
180
|
* does not parse to a finite number.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { PerpsErrorCode, } from '@lifi/perps-types';
|
|
9
9
|
import { PerpsError } from '../errors/PerpsError.js';
|
|
10
|
+
import { areFinite, DivBig } from './decimal.js';
|
|
10
11
|
/**
|
|
11
12
|
* Calculate position size in asset units from margin.
|
|
12
13
|
*
|
|
@@ -21,7 +22,13 @@ import { PerpsError } from '../errors/PerpsError.js';
|
|
|
21
22
|
* @public
|
|
22
23
|
*/
|
|
23
24
|
export function calculatePositionSize(marginUsd, leverage, price) {
|
|
24
|
-
|
|
25
|
+
if (price === 0) {
|
|
26
|
+
return (marginUsd * leverage) / price;
|
|
27
|
+
}
|
|
28
|
+
if (!areFinite(marginUsd, leverage, price)) {
|
|
29
|
+
return Number.NaN;
|
|
30
|
+
}
|
|
31
|
+
return new DivBig(marginUsd).times(leverage).div(price).toNumber();
|
|
25
32
|
}
|
|
26
33
|
/**
|
|
27
34
|
* Calculate notional value of a position.
|
|
@@ -32,7 +39,10 @@ export function calculatePositionSize(marginUsd, leverage, price) {
|
|
|
32
39
|
* @public
|
|
33
40
|
*/
|
|
34
41
|
export function calculateNotionalValue(size, price) {
|
|
35
|
-
|
|
42
|
+
if (!areFinite(size, price)) {
|
|
43
|
+
return Number.NaN;
|
|
44
|
+
}
|
|
45
|
+
return new DivBig(size).abs().times(price).toNumber();
|
|
36
46
|
}
|
|
37
47
|
/**
|
|
38
48
|
* Calculate unrealized PnL.
|
|
@@ -44,7 +54,10 @@ export function calculateNotionalValue(size, price) {
|
|
|
44
54
|
* @public
|
|
45
55
|
*/
|
|
46
56
|
export function calculateUnrealizedPnl(entryPrice, currentPrice, size) {
|
|
47
|
-
|
|
57
|
+
if (!areFinite(entryPrice, currentPrice, size)) {
|
|
58
|
+
return Number.NaN;
|
|
59
|
+
}
|
|
60
|
+
return new DivBig(currentPrice).minus(entryPrice).times(size).toNumber();
|
|
48
61
|
}
|
|
49
62
|
/**
|
|
50
63
|
* Calculate return on equity (ROE) percentage.
|
|
@@ -58,7 +71,10 @@ export function calculateRoe(pnl, margin) {
|
|
|
58
71
|
if (margin === 0) {
|
|
59
72
|
return 0;
|
|
60
73
|
}
|
|
61
|
-
|
|
74
|
+
if (!areFinite(pnl, margin)) {
|
|
75
|
+
return Number.NaN;
|
|
76
|
+
}
|
|
77
|
+
return new DivBig(pnl).div(margin).times(100).toNumber();
|
|
62
78
|
}
|
|
63
79
|
/**
|
|
64
80
|
* Calculate required margin for a position.
|
|
@@ -69,7 +85,13 @@ export function calculateRoe(pnl, margin) {
|
|
|
69
85
|
* @public
|
|
70
86
|
*/
|
|
71
87
|
export function calculateRequiredMargin(notionalValue, leverage) {
|
|
72
|
-
|
|
88
|
+
if (leverage === 0) {
|
|
89
|
+
return notionalValue / leverage;
|
|
90
|
+
}
|
|
91
|
+
if (!areFinite(notionalValue, leverage)) {
|
|
92
|
+
return Number.NaN;
|
|
93
|
+
}
|
|
94
|
+
return new DivBig(notionalValue).div(leverage).toNumber();
|
|
73
95
|
}
|
|
74
96
|
/**
|
|
75
97
|
* Estimate trading fees.
|
|
@@ -80,7 +102,10 @@ export function calculateRequiredMargin(notionalValue, leverage) {
|
|
|
80
102
|
* @public
|
|
81
103
|
*/
|
|
82
104
|
export function estimateFees(sizeUsd, feeRate) {
|
|
83
|
-
|
|
105
|
+
if (!areFinite(sizeUsd, feeRate)) {
|
|
106
|
+
return Number.NaN;
|
|
107
|
+
}
|
|
108
|
+
return new DivBig(sizeUsd).times(feeRate).toNumber();
|
|
84
109
|
}
|
|
85
110
|
/**
|
|
86
111
|
* Apply slippage to a price for order execution.
|
|
@@ -92,8 +117,17 @@ export function estimateFees(sizeUsd, feeRate) {
|
|
|
92
117
|
* @public
|
|
93
118
|
*/
|
|
94
119
|
export function applySlippage(price, slippagePercent, isBuy) {
|
|
95
|
-
|
|
96
|
-
|
|
120
|
+
if (!areFinite(price, slippagePercent)) {
|
|
121
|
+
return Number.NaN;
|
|
122
|
+
}
|
|
123
|
+
const multiplier = new DivBig(slippagePercent).div(100).plus(1);
|
|
124
|
+
if (isBuy) {
|
|
125
|
+
return new DivBig(price).times(multiplier).toNumber();
|
|
126
|
+
}
|
|
127
|
+
if (multiplier.eq(0)) {
|
|
128
|
+
return price / multiplier.toNumber();
|
|
129
|
+
}
|
|
130
|
+
return new DivBig(price).div(multiplier).toNumber();
|
|
97
131
|
}
|
|
98
132
|
/**
|
|
99
133
|
* Distance from the current price to the liquidation price, as a percentage of
|
|
@@ -126,7 +160,10 @@ export function effectiveLeverage(params) {
|
|
|
126
160
|
if (marginUsd === 0) {
|
|
127
161
|
return 0;
|
|
128
162
|
}
|
|
129
|
-
|
|
163
|
+
if (!areFinite(positionValueUsd, marginUsd)) {
|
|
164
|
+
return Number.NaN;
|
|
165
|
+
}
|
|
166
|
+
return new DivBig(positionValueUsd).div(marginUsd).toNumber();
|
|
130
167
|
}
|
|
131
168
|
/**
|
|
132
169
|
* Calculate expected gain/loss for a TP or SL trigger price.
|
|
@@ -143,12 +180,15 @@ export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong,
|
|
|
143
180
|
if (!triggerPrice || entryPrice === 0 || margin === 0) {
|
|
144
181
|
return null;
|
|
145
182
|
}
|
|
183
|
+
if (!areFinite(triggerPrice, entryPrice, leverage, margin)) {
|
|
184
|
+
return { amount: Number.NaN, percent: Number.NaN };
|
|
185
|
+
}
|
|
146
186
|
const priceDiff = isLong
|
|
147
|
-
? triggerPrice
|
|
148
|
-
: entryPrice
|
|
149
|
-
const percent = (
|
|
150
|
-
const amount = margin
|
|
151
|
-
return { amount, percent };
|
|
187
|
+
? new DivBig(triggerPrice).minus(entryPrice)
|
|
188
|
+
: new DivBig(entryPrice).minus(triggerPrice);
|
|
189
|
+
const percent = priceDiff.div(entryPrice).times(leverage).times(100);
|
|
190
|
+
const amount = percent.times(margin).div(100);
|
|
191
|
+
return { amount: amount.toNumber(), percent: percent.toNumber() };
|
|
152
192
|
}
|
|
153
193
|
/**
|
|
154
194
|
* Convert a percentage gain/loss to a target price.
|
|
@@ -163,8 +203,14 @@ export function priceFromPercent(percent, entryPrice, leverage, isLong) {
|
|
|
163
203
|
if (entryPrice === 0 || leverage === 0) {
|
|
164
204
|
return 0;
|
|
165
205
|
}
|
|
166
|
-
|
|
167
|
-
|
|
206
|
+
if (!areFinite(percent, entryPrice, leverage)) {
|
|
207
|
+
return Number.NaN;
|
|
208
|
+
}
|
|
209
|
+
const priceDelta = new DivBig(percent)
|
|
210
|
+
.times(entryPrice)
|
|
211
|
+
.div(new DivBig(leverage).times(100));
|
|
212
|
+
const entry = new DivBig(entryPrice);
|
|
213
|
+
return (isLong ? entry.plus(priceDelta) : entry.minus(priceDelta)).toNumber();
|
|
168
214
|
}
|
|
169
215
|
/**
|
|
170
216
|
* Convert a target price to a percentage gain/loss.
|
|
@@ -179,8 +225,13 @@ export function percentFromPrice(price, entryPrice, leverage, isLong) {
|
|
|
179
225
|
if (entryPrice === 0 || leverage === 0) {
|
|
180
226
|
return 0;
|
|
181
227
|
}
|
|
182
|
-
|
|
183
|
-
|
|
228
|
+
if (!areFinite(price, entryPrice, leverage)) {
|
|
229
|
+
return Number.NaN;
|
|
230
|
+
}
|
|
231
|
+
const priceDiff = isLong
|
|
232
|
+
? new DivBig(price).minus(entryPrice)
|
|
233
|
+
: new DivBig(entryPrice).minus(price);
|
|
234
|
+
return priceDiff.div(entryPrice).times(leverage).times(100).toNumber();
|
|
184
235
|
}
|
|
185
236
|
/**
|
|
186
237
|
* Calculate realized PnL as a percentage of position value at close.
|
|
@@ -192,11 +243,14 @@ export function percentFromPrice(price, entryPrice, leverage, isLong) {
|
|
|
192
243
|
* @public
|
|
193
244
|
*/
|
|
194
245
|
export function calculateRealizedPnlPercent(realizedPnl, size, price) {
|
|
195
|
-
|
|
196
|
-
|
|
246
|
+
if (!areFinite(realizedPnl, size, price)) {
|
|
247
|
+
return Number.NaN;
|
|
248
|
+
}
|
|
249
|
+
const positionValue = new DivBig(size).abs().times(price);
|
|
250
|
+
if (positionValue.eq(0)) {
|
|
197
251
|
return 0;
|
|
198
252
|
}
|
|
199
|
-
return (realizedPnl
|
|
253
|
+
return new DivBig(realizedPnl).div(positionValue).times(100).toNumber();
|
|
200
254
|
}
|
|
201
255
|
/**
|
|
202
256
|
* Walk one side of an orderbook to fill `sizeUsd` notional, accumulating base
|
|
@@ -204,38 +258,54 @@ export function calculateRealizedPnlPercent(realizedPnl, size, price) {
|
|
|
204
258
|
* in array order — the caller passes asks for a buy and bids for a sell, each
|
|
205
259
|
* already ordered best-price-first. When the book cannot absorb the full
|
|
206
260
|
* notional, the walk stops at the last level and flags `insufficientLiquidity`,
|
|
207
|
-
* returning the best obtainable fill.
|
|
261
|
+
* returning the best obtainable fill. A non-finite `sizeUsd` gives NaN fill
|
|
262
|
+
* fields with `insufficientLiquidity` set.
|
|
208
263
|
*
|
|
209
264
|
* @throws {PerpsError} `ValidationError` when a level's `price` or `size`
|
|
210
265
|
* does not parse to a finite number.
|
|
211
266
|
* @public
|
|
212
267
|
*/
|
|
213
268
|
export function walkOrderbook(levels, sizeUsd) {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
269
|
+
if (!Number.isFinite(sizeUsd)) {
|
|
270
|
+
return {
|
|
271
|
+
baseSize: Number.NaN,
|
|
272
|
+
filledNotional: Number.NaN,
|
|
273
|
+
vwap: Number.NaN,
|
|
274
|
+
insufficientLiquidity: true,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
let remaining = new DivBig(sizeUsd);
|
|
278
|
+
let baseSize = new DivBig(0);
|
|
279
|
+
let filledNotional = new DivBig(0);
|
|
217
280
|
for (const level of levels) {
|
|
218
|
-
if (remaining
|
|
281
|
+
if (remaining.lte(0)) {
|
|
219
282
|
break;
|
|
220
283
|
}
|
|
221
|
-
const price =
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
284
|
+
const { price, size } = parseLevel(level);
|
|
285
|
+
const levelNotional = size.times(price);
|
|
286
|
+
const take = remaining.lt(levelNotional) ? remaining : levelNotional;
|
|
287
|
+
if (take.eq(0)) {
|
|
288
|
+
continue;
|
|
225
289
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
baseSize += take / price;
|
|
230
|
-
remaining -= take;
|
|
290
|
+
filledNotional = filledNotional.plus(take);
|
|
291
|
+
baseSize = baseSize.plus(take.div(price));
|
|
292
|
+
remaining = remaining.minus(take);
|
|
231
293
|
}
|
|
232
294
|
return {
|
|
233
|
-
baseSize,
|
|
234
|
-
filledNotional,
|
|
235
|
-
vwap: baseSize
|
|
236
|
-
insufficientLiquidity: remaining
|
|
295
|
+
baseSize: baseSize.toNumber(),
|
|
296
|
+
filledNotional: filledNotional.toNumber(),
|
|
297
|
+
vwap: baseSize.eq(0) ? 0 : filledNotional.div(baseSize).toNumber(),
|
|
298
|
+
insufficientLiquidity: remaining.gt(0),
|
|
237
299
|
};
|
|
238
300
|
}
|
|
301
|
+
function parseLevel(level) {
|
|
302
|
+
try {
|
|
303
|
+
return { price: new DivBig(level.price), size: new DivBig(level.size) };
|
|
304
|
+
}
|
|
305
|
+
catch {
|
|
306
|
+
throw new PerpsError(PerpsErrorCode.ValidationError, `Malformed orderbook level: price='${level.price}', size='${level.size}'`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
239
309
|
/**
|
|
240
310
|
* Build a {@link Quote} from a resolved market, its live {@link MarketContext},
|
|
241
311
|
* and its orderbook snapshot. Pure: walks the relevant side (buy → asks,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAKL,cAAc,GAIf,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Big from 'big.js';
|
|
2
|
+
/**
|
|
3
|
+
* Scoped big.js constructor with 40 decimal places for division, so the
|
|
4
|
+
* shared global `Big.DP` and `Big.RM` stay untouched.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DivBig: Big.BigConstructor;
|
|
7
|
+
/** True when every value is a finite number, so `new DivBig(value)` cannot throw. */
|
|
8
|
+
export declare function areFinite(...values: number[]): boolean;
|
|
9
|
+
//# sourceMappingURL=decimal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../../src/utils/decimal.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB;;;GAGG;AACH,eAAO,MAAM,MAAM,oBAAQ,CAAA;AAG3B,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAEtD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Big from 'big.js';
|
|
2
|
+
/**
|
|
3
|
+
* Scoped big.js constructor with 40 decimal places for division, so the
|
|
4
|
+
* shared global `Big.DP` and `Big.RM` stay untouched.
|
|
5
|
+
*/
|
|
6
|
+
export const DivBig = Big();
|
|
7
|
+
DivBig.DP = 40;
|
|
8
|
+
/** True when every value is a finite number, so `new DivBig(value)` cannot throw. */
|
|
9
|
+
export function areFinite(...values) {
|
|
10
|
+
return values.every(Number.isFinite);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=decimal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimal.js","sourceRoot":"","sources":["../../../src/utils/decimal.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAA;AAC3B,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;AAEd,qFAAqF;AACrF,MAAM,UAAU,SAAS,CAAC,GAAG,MAAgB;IAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACtC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type Big from 'big.js';
|
|
2
|
+
/** The larger of two Big values, as `Math.max` for numbers. */
|
|
3
|
+
export declare const maxOf: (a: Big, b: Big) => Big;
|
|
4
|
+
/** The smaller of two Big values, as `Math.min` for numbers. */
|
|
5
|
+
export declare const minOf: (a: Big, b: Big) => Big;
|
|
6
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,QAAQ,CAAA;AAE7B,+DAA+D;AAC/D,eAAO,MAAM,KAAK,GAAI,GAAG,GAAG,EAAE,GAAG,GAAG,KAAG,GAAwB,CAAA;AAE/D,gEAAgE;AAChE,eAAO,MAAM,KAAK,GAAI,GAAG,GAAG,EAAE,GAAG,GAAG,KAAG,GAAwB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAM,EAAE,CAAM,EAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/D,gEAAgE;AAChE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAM,EAAE,CAAM,EAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"}
|