@lifi/perps-sdk 23.1.0 → 25.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 +102 -56
- package/dist/cjs/client/PerpsClient.d.ts +3 -2
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +16 -9
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/decimal/arithmetic.d.ts +15 -0
- package/dist/cjs/decimal/arithmetic.d.ts.map +1 -0
- package/dist/cjs/decimal/arithmetic.js +53 -0
- package/dist/cjs/decimal/arithmetic.js.map +1 -0
- package/dist/cjs/decimal/big.d.ts +0 -1
- package/dist/cjs/decimal/big.d.ts.map +1 -1
- package/dist/cjs/decimal/big.js +0 -4
- package/dist/cjs/decimal/big.js.map +1 -1
- package/dist/cjs/decimal/compare.d.ts +6 -2
- package/dist/cjs/decimal/compare.d.ts.map +1 -1
- package/dist/cjs/decimal/compare.js +15 -2
- package/dist/cjs/decimal/compare.js.map +1 -1
- package/dist/cjs/decimal/convert.d.ts +10 -6
- package/dist/cjs/decimal/convert.d.ts.map +1 -1
- package/dist/cjs/decimal/convert.js +34 -21
- package/dist/cjs/decimal/convert.js.map +1 -1
- package/dist/cjs/decimal/decimalStringToBig.d.ts +5 -0
- package/dist/cjs/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/cjs/decimal/decimalStringToBig.js +25 -0
- package/dist/cjs/decimal/decimalStringToBig.js.map +1 -0
- package/dist/cjs/decimal/format.d.ts.map +1 -1
- package/dist/cjs/decimal/format.js +70 -52
- package/dist/cjs/decimal/format.js.map +1 -1
- package/dist/cjs/decimal/parse.d.ts +5 -4
- package/dist/cjs/decimal/parse.d.ts.map +1 -1
- package/dist/cjs/decimal/parse.js +43 -25
- package/dist/cjs/decimal/parse.js.map +1 -1
- package/dist/cjs/errors/invalidInput.d.ts +3 -0
- package/dist/cjs/errors/invalidInput.d.ts.map +1 -0
- package/dist/cjs/errors/invalidInput.js +9 -0
- package/dist/cjs/errors/invalidInput.js.map +1 -0
- package/dist/cjs/index.d.ts +15 -12
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +69 -9
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/math/fills.d.ts +1 -1
- package/dist/cjs/math/fills.d.ts.map +1 -1
- package/dist/cjs/math/fills.js +28 -13
- package/dist/cjs/math/fills.js.map +1 -1
- package/dist/cjs/math/order.d.ts +27 -16
- package/dist/cjs/math/order.d.ts.map +1 -1
- package/dist/cjs/math/order.js +131 -134
- package/dist/cjs/math/order.js.map +1 -1
- package/dist/cjs/math/position.d.ts +85 -35
- package/dist/cjs/math/position.d.ts.map +1 -1
- package/dist/cjs/math/position.js +93 -94
- package/dist/cjs/math/position.js.map +1 -1
- package/dist/cjs/services/getGasRecommendation.js +1 -1
- package/dist/cjs/services/getGasRecommendation.js.map +1 -1
- package/dist/cjs/services/getQuote.d.ts +1 -1
- package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/cjs/services/resolveSubscribeQuote.js +3 -2
- package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -1
- package/dist/cjs/transport/request.d.ts +1 -0
- package/dist/cjs/transport/request.d.ts.map +1 -1
- package/dist/cjs/transport/request.js +2 -2
- package/dist/cjs/transport/request.js.map +1 -1
- package/dist/cjs/types/api.d.ts +4 -0
- package/dist/cjs/types/api.d.ts.map +1 -1
- package/dist/cjs/types/provider.d.ts +9 -5
- package/dist/cjs/types/provider.d.ts.map +1 -1
- package/dist/cjs/types/withdrawal.d.ts +12 -4
- package/dist/cjs/types/withdrawal.d.ts.map +1 -1
- package/dist/cjs/utils/createSafeFunction.d.ts +2 -0
- package/dist/cjs/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/cjs/utils/createSafeFunction.js +15 -0
- package/dist/cjs/utils/createSafeFunction.js.map +1 -0
- package/dist/cjs/utils/timestampToIsoString.d.ts +3 -0
- package/dist/cjs/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/cjs/utils/timestampToIsoString.js +16 -0
- package/dist/cjs/utils/timestampToIsoString.js.map +1 -0
- package/dist/cjs/utils/warnOnce.d.ts +6 -0
- package/dist/cjs/utils/warnOnce.d.ts.map +1 -1
- package/dist/cjs/utils/warnOnce.js +19 -1
- package/dist/cjs/utils/warnOnce.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 +2 -0
- package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/cjs/websocket/PerpsWsClient.js +14 -1
- package/dist/cjs/websocket/PerpsWsClient.js.map +1 -1
- package/dist/cjs/websocket/wsLog.d.ts +2 -0
- package/dist/cjs/websocket/wsLog.d.ts.map +1 -1
- package/dist/cjs/websocket/wsLog.js +9 -0
- package/dist/cjs/websocket/wsLog.js.map +1 -1
- package/dist/cjs/wire/orderAmounts.d.ts +3 -2
- package/dist/cjs/wire/orderAmounts.d.ts.map +1 -1
- package/dist/cjs/wire/orderAmounts.js +22 -21
- package/dist/cjs/wire/orderAmounts.js.map +1 -1
- package/dist/cjs/wire/refuel.d.ts +4 -1
- package/dist/cjs/wire/refuel.d.ts.map +1 -1
- package/dist/cjs/wire/refuel.js +23 -6
- package/dist/cjs/wire/refuel.js.map +1 -1
- package/dist/cjs/wire/transferable.js +3 -3
- package/dist/cjs/wire/transferable.js.map +1 -1
- package/dist/cjs/wire/withdraw.d.ts.map +1 -1
- package/dist/cjs/wire/withdraw.js +3 -3
- package/dist/cjs/wire/withdraw.js.map +1 -1
- package/dist/esm/client/PerpsClient.d.ts +17 -4
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +30 -8
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/decimal/arithmetic.d.ts +98 -0
- package/dist/esm/decimal/arithmetic.d.ts.map +1 -0
- package/dist/esm/decimal/arithmetic.js +126 -0
- package/dist/esm/decimal/arithmetic.js.map +1 -0
- package/dist/esm/decimal/big.d.ts +0 -2
- package/dist/esm/decimal/big.d.ts.map +1 -1
- package/dist/esm/decimal/big.js +0 -4
- package/dist/esm/decimal/big.js.map +1 -1
- package/dist/esm/decimal/compare.d.ts +40 -6
- package/dist/esm/decimal/compare.d.ts.map +1 -1
- package/dist/esm/decimal/compare.js +46 -6
- package/dist/esm/decimal/compare.js.map +1 -1
- package/dist/esm/decimal/convert.d.ts +50 -36
- package/dist/esm/decimal/convert.d.ts.map +1 -1
- package/dist/esm/decimal/convert.js +64 -42
- package/dist/esm/decimal/convert.js.map +1 -1
- package/dist/esm/decimal/decimalStringToBig.d.ts +25 -0
- package/dist/esm/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/esm/decimal/decimalStringToBig.js +37 -0
- package/dist/esm/decimal/decimalStringToBig.js.map +1 -0
- package/dist/esm/decimal/format.d.ts +4 -1
- package/dist/esm/decimal/format.d.ts.map +1 -1
- package/dist/esm/decimal/format.js +71 -70
- package/dist/esm/decimal/format.js.map +1 -1
- package/dist/esm/decimal/parse.d.ts +29 -13
- package/dist/esm/decimal/parse.d.ts.map +1 -1
- package/dist/esm/decimal/parse.js +61 -44
- package/dist/esm/decimal/parse.js.map +1 -1
- package/dist/esm/errors/invalidInput.d.ts +4 -0
- package/dist/esm/errors/invalidInput.d.ts.map +1 -0
- package/dist/esm/errors/invalidInput.js +7 -0
- package/dist/esm/errors/invalidInput.js.map +1 -0
- package/dist/esm/index.d.ts +15 -12
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +11 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/math/fills.d.ts +6 -3
- package/dist/esm/math/fills.d.ts.map +1 -1
- package/dist/esm/math/fills.js +31 -16
- package/dist/esm/math/fills.js.map +1 -1
- package/dist/esm/math/order.d.ts +84 -66
- package/dist/esm/math/order.d.ts.map +1 -1
- package/dist/esm/math/order.js +178 -175
- package/dist/esm/math/order.js.map +1 -1
- package/dist/esm/math/position.d.ts +155 -98
- package/dist/esm/math/position.d.ts.map +1 -1
- package/dist/esm/math/position.js +160 -156
- package/dist/esm/math/position.js.map +1 -1
- package/dist/esm/services/getGasRecommendation.js +1 -1
- package/dist/esm/services/getGasRecommendation.js.map +1 -1
- package/dist/esm/services/getQuote.d.ts +2 -2
- package/dist/esm/services/getQuote.js +1 -1
- package/dist/esm/services/resolveSubscribeQuote.d.ts +1 -1
- package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/esm/services/resolveSubscribeQuote.js +4 -3
- package/dist/esm/services/resolveSubscribeQuote.js.map +1 -1
- package/dist/esm/transport/request.d.ts +5 -0
- package/dist/esm/transport/request.d.ts.map +1 -1
- package/dist/esm/transport/request.js +2 -2
- package/dist/esm/transport/request.js.map +1 -1
- package/dist/esm/types/api.d.ts +9 -0
- package/dist/esm/types/api.d.ts.map +1 -1
- package/dist/esm/types/provider.d.ts +30 -16
- package/dist/esm/types/provider.d.ts.map +1 -1
- package/dist/esm/types/withdrawal.d.ts +32 -7
- package/dist/esm/types/withdrawal.d.ts.map +1 -1
- package/dist/esm/utils/createSafeFunction.d.ts +9 -0
- package/dist/esm/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/esm/utils/createSafeFunction.js +19 -0
- package/dist/esm/utils/createSafeFunction.js.map +1 -0
- package/dist/esm/utils/timestampToIsoString.d.ts +15 -0
- package/dist/esm/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/esm/utils/timestampToIsoString.js +24 -0
- package/dist/esm/utils/timestampToIsoString.js.map +1 -0
- package/dist/esm/utils/warnOnce.d.ts +27 -0
- package/dist/esm/utils/warnOnce.d.ts.map +1 -1
- package/dist/esm/utils/warnOnce.js +36 -0
- package/dist/esm/utils/warnOnce.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 +7 -0
- package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/esm/websocket/PerpsWsClient.js +20 -2
- package/dist/esm/websocket/PerpsWsClient.js.map +1 -1
- package/dist/esm/websocket/wsLog.d.ts +12 -0
- package/dist/esm/websocket/wsLog.d.ts.map +1 -1
- package/dist/esm/websocket/wsLog.js +19 -0
- package/dist/esm/websocket/wsLog.js.map +1 -1
- package/dist/esm/wire/orderAmounts.d.ts +9 -7
- package/dist/esm/wire/orderAmounts.d.ts.map +1 -1
- package/dist/esm/wire/orderAmounts.js +24 -20
- package/dist/esm/wire/orderAmounts.js.map +1 -1
- package/dist/esm/wire/refuel.d.ts +24 -14
- package/dist/esm/wire/refuel.d.ts.map +1 -1
- package/dist/esm/wire/refuel.js +38 -17
- package/dist/esm/wire/refuel.js.map +1 -1
- package/dist/esm/wire/transferable.d.ts +2 -2
- package/dist/esm/wire/transferable.js +5 -5
- package/dist/esm/wire/transferable.js.map +1 -1
- package/dist/esm/wire/withdraw.d.ts.map +1 -1
- package/dist/esm/wire/withdraw.js +3 -3
- package/dist/esm/wire/withdraw.js.map +1 -1
- package/dist/types/client/PerpsClient.d.ts +17 -4
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/decimal/arithmetic.d.ts +98 -0
- package/dist/types/decimal/arithmetic.d.ts.map +1 -0
- package/dist/types/decimal/big.d.ts +0 -2
- package/dist/types/decimal/big.d.ts.map +1 -1
- package/dist/types/decimal/compare.d.ts +40 -6
- package/dist/types/decimal/compare.d.ts.map +1 -1
- package/dist/types/decimal/convert.d.ts +50 -36
- package/dist/types/decimal/convert.d.ts.map +1 -1
- package/dist/types/decimal/decimalStringToBig.d.ts +25 -0
- package/dist/types/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/types/decimal/format.d.ts +4 -1
- package/dist/types/decimal/format.d.ts.map +1 -1
- package/dist/types/decimal/parse.d.ts +29 -13
- package/dist/types/decimal/parse.d.ts.map +1 -1
- package/dist/types/errors/invalidInput.d.ts +4 -0
- package/dist/types/errors/invalidInput.d.ts.map +1 -0
- package/dist/types/index.d.ts +15 -12
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/math/fills.d.ts +6 -3
- package/dist/types/math/fills.d.ts.map +1 -1
- package/dist/types/math/order.d.ts +84 -66
- package/dist/types/math/order.d.ts.map +1 -1
- package/dist/types/math/position.d.ts +155 -98
- package/dist/types/math/position.d.ts.map +1 -1
- package/dist/types/services/getQuote.d.ts +2 -2
- package/dist/types/services/resolveSubscribeQuote.d.ts +1 -1
- package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/types/transport/request.d.ts +5 -0
- package/dist/types/transport/request.d.ts.map +1 -1
- package/dist/types/types/api.d.ts +9 -0
- package/dist/types/types/api.d.ts.map +1 -1
- package/dist/types/types/provider.d.ts +30 -16
- package/dist/types/types/provider.d.ts.map +1 -1
- package/dist/types/types/withdrawal.d.ts +32 -7
- package/dist/types/types/withdrawal.d.ts.map +1 -1
- package/dist/types/utils/createSafeFunction.d.ts +9 -0
- package/dist/types/utils/createSafeFunction.d.ts.map +1 -0
- package/dist/types/utils/timestampToIsoString.d.ts +15 -0
- package/dist/types/utils/timestampToIsoString.d.ts.map +1 -0
- package/dist/types/utils/warnOnce.d.ts +27 -0
- package/dist/types/utils/warnOnce.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/websocket/PerpsWsClient.d.ts +7 -0
- package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -1
- package/dist/types/websocket/wsLog.d.ts +12 -0
- package/dist/types/websocket/wsLog.d.ts.map +1 -1
- package/dist/types/wire/orderAmounts.d.ts +9 -7
- package/dist/types/wire/orderAmounts.d.ts.map +1 -1
- package/dist/types/wire/refuel.d.ts +24 -14
- package/dist/types/wire/refuel.d.ts.map +1 -1
- package/dist/types/wire/transferable.d.ts +2 -2
- package/dist/types/wire/withdraw.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/client/PerpsClient.ts +48 -10
- package/src/decimal/arithmetic.ts +170 -0
- package/src/decimal/big.ts +0 -5
- package/src/decimal/compare.ts +61 -11
- package/src/decimal/convert.ts +105 -63
- package/src/decimal/decimalStringToBig.ts +42 -0
- package/src/decimal/format.ts +81 -72
- package/src/decimal/parse.ts +78 -57
- package/src/errors/invalidInput.ts +10 -0
- package/src/index.ts +80 -12
- package/src/math/fills.ts +32 -17
- package/src/math/order.ts +279 -226
- package/src/math/position.ts +280 -196
- package/src/services/getGasRecommendation.ts +1 -1
- package/src/services/getQuote.ts +2 -2
- package/src/services/resolveSubscribeQuote.ts +4 -3
- package/src/transport/request.ts +7 -2
- package/src/types/api.ts +10 -0
- package/src/types/provider.ts +39 -16
- package/src/types/withdrawal.ts +35 -8
- package/src/utils/createSafeFunction.ts +20 -0
- package/src/utils/timestampToIsoString.ts +31 -0
- package/src/utils/warnOnce.ts +60 -0
- package/src/version.ts +1 -1
- package/src/websocket/PerpsWsClient.ts +25 -2
- package/src/websocket/wsLog.ts +44 -0
- package/src/wire/orderAmounts.ts +45 -26
- package/src/wire/refuel.ts +56 -20
- package/src/wire/transferable.ts +5 -5
- package/src/wire/withdraw.ts +3 -5
- package/dist/cjs/decimal/requireDecimal.d.ts +0 -4
- package/dist/cjs/decimal/requireDecimal.d.ts.map +0 -1
- package/dist/cjs/decimal/requireDecimal.js +0 -12
- package/dist/cjs/decimal/requireDecimal.js.map +0 -1
- package/dist/esm/decimal/requireDecimal.d.ts +0 -5
- package/dist/esm/decimal/requireDecimal.d.ts.map +0 -1
- package/dist/esm/decimal/requireDecimal.js +0 -7
- package/dist/esm/decimal/requireDecimal.js.map +0 -1
- package/dist/types/decimal/requireDecimal.d.ts +0 -5
- package/dist/types/decimal/requireDecimal.d.ts.map +0 -1
- package/src/decimal/requireDecimal.ts +0 -8
package/dist/esm/math/order.d.ts
CHANGED
|
@@ -1,41 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Display-tier order formulas. Every function takes and gives
|
|
3
|
-
*
|
|
2
|
+
* Display-tier order formulas. Every function takes and gives decimal
|
|
3
|
+
* strings; arithmetic is exact Big.js, with division to 40 decimal places.
|
|
4
|
+
* Each formula throws `ValidationError` on an input that does not match the
|
|
5
|
+
* decimal pattern and has a `safe*` pair that gives `undefined` in place of the throw.
|
|
4
6
|
*/
|
|
5
7
|
import { type FeeTier, type Market, type MarketContext, type Order, type OrderbookLevel, type Position, type Quote, type QuoteSide, type TradeType } from '@lifi/perps-types';
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
9
|
+
* Position size in asset units from margin: `marginUsd × leverage ÷ price`.
|
|
8
10
|
*
|
|
9
|
-
* @param marginUsd - Margin amount in USD
|
|
10
|
-
* @param leverage - Position leverage
|
|
11
|
-
* @param price - Current asset price
|
|
12
|
-
* @returns Position size in asset units
|
|
13
11
|
* @example
|
|
14
12
|
* ```ts
|
|
15
|
-
* calculateSize(100, 10, 2000) // 0.5 (ETH at $2000)
|
|
13
|
+
* calculateSize('100', '10', '2000') // '0.5' (ETH at $2000)
|
|
16
14
|
* ```
|
|
15
|
+
* @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern
|
|
16
|
+
* or `price` is zero.
|
|
17
17
|
* @public
|
|
18
18
|
*/
|
|
19
|
-
export declare function calculateSize(marginUsd:
|
|
19
|
+
export declare function calculateSize(marginUsd: string, leverage: string, price: string): string;
|
|
20
|
+
/** @public */
|
|
21
|
+
export declare const safeCalculateSize: (marginUsd: string, leverage: string, price: string) => string | undefined;
|
|
20
22
|
/**
|
|
21
|
-
*
|
|
23
|
+
* Estimated trading fee in USD: `sizeUsd × feeRate`.
|
|
22
24
|
*
|
|
23
|
-
* @param
|
|
24
|
-
* @
|
|
25
|
-
* @returns Estimated fee in USD
|
|
25
|
+
* @param feeRate - Fee rate as a fraction (`'0.00035'` for 0.035%).
|
|
26
|
+
* @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
|
|
26
27
|
* @public
|
|
27
28
|
*/
|
|
28
|
-
export declare function estimateFees(sizeUsd:
|
|
29
|
+
export declare function estimateFees(sizeUsd: string, feeRate: string): string;
|
|
30
|
+
/** @public */
|
|
31
|
+
export declare const safeEstimateFees: (sizeUsd: string, feeRate: string) => string | undefined;
|
|
29
32
|
/**
|
|
30
|
-
* Apply slippage to
|
|
33
|
+
* Apply slippage to an order-entry price with exact decimal math: a buy
|
|
34
|
+
* multiplies by `1 + slippagePercent / 100`, a sell divides by it. The result
|
|
35
|
+
* is not rounded; snap it to the market tick before it goes to a venue.
|
|
31
36
|
*
|
|
32
|
-
* @param
|
|
33
|
-
* @
|
|
34
|
-
*
|
|
35
|
-
* @returns Price adjusted for slippage
|
|
37
|
+
* @param slippagePercent - Slippage tolerance as a percentage (`'0.5'` is 0.5%).
|
|
38
|
+
* @throws {PerpsError} `ValidationError` when an input does not match the
|
|
39
|
+
* decimal pattern, or `slippagePercent` is -100 or less.
|
|
36
40
|
* @public
|
|
37
41
|
*/
|
|
38
|
-
export declare function
|
|
42
|
+
export declare function applySlippageToPrice(price: string, slippagePercent: string, isBuy: boolean): string;
|
|
43
|
+
/** @public */
|
|
44
|
+
export declare const safeApplySlippageToPrice: (price: string, slippagePercent: string, isBuy: boolean) => string | undefined;
|
|
39
45
|
/**
|
|
40
46
|
* Signed expected PnL for a trigger price — see {@link calculateExpectedPnl}.
|
|
41
47
|
*
|
|
@@ -43,61 +49,63 @@ export declare function applySlippage(price: number, slippagePercent: number, is
|
|
|
43
49
|
*/
|
|
44
50
|
export interface ExpectedPnl {
|
|
45
51
|
/** Signed expected profit/loss in USD. */
|
|
46
|
-
amount:
|
|
47
|
-
/** Signed expected return as a percentage (10 means 10%). */
|
|
48
|
-
percent:
|
|
52
|
+
amount: string;
|
|
53
|
+
/** Signed expected return as a percentage (`'10'` means 10%). */
|
|
54
|
+
percent: string;
|
|
49
55
|
}
|
|
50
56
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
57
|
+
* Expected gain or loss for a TP or SL trigger price. Positive is a profit,
|
|
58
|
+
* negative a loss.
|
|
53
59
|
*
|
|
54
|
-
* @param
|
|
55
|
-
* @param
|
|
56
|
-
* @
|
|
57
|
-
*
|
|
58
|
-
* @param margin - Margin amount in USD
|
|
60
|
+
* @param entryPrice - Position entry or current market price.
|
|
61
|
+
* @param margin - Margin amount in USD.
|
|
62
|
+
* @throws {PerpsError} `ValidationError` when an input does not match the
|
|
63
|
+
* decimal pattern, or `triggerPrice`, `entryPrice` or `margin` is zero.
|
|
59
64
|
* @public
|
|
60
65
|
*/
|
|
61
|
-
export declare function calculateExpectedPnl(triggerPrice:
|
|
66
|
+
export declare function calculateExpectedPnl(triggerPrice: string, entryPrice: string, leverage: string, isLong: boolean, margin: string): ExpectedPnl;
|
|
67
|
+
/** @public */
|
|
68
|
+
export declare const safeCalculateExpectedPnl: (triggerPrice: string, entryPrice: string, leverage: string, isLong: boolean, margin: string) => ExpectedPnl | undefined;
|
|
62
69
|
/**
|
|
63
|
-
*
|
|
70
|
+
* Trigger price that realises a percentage gain or loss.
|
|
64
71
|
*
|
|
65
|
-
* @param percent - Target gain
|
|
66
|
-
*
|
|
67
|
-
* @
|
|
68
|
-
* @param isLong - True for long positions, false for short
|
|
72
|
+
* @param percent - Target gain or loss percentage (positive = profitable
|
|
73
|
+
* direction).
|
|
74
|
+
* @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
|
|
69
75
|
* @public
|
|
70
76
|
*/
|
|
71
|
-
export declare function calculateTriggerPrice(percent:
|
|
77
|
+
export declare function calculateTriggerPrice(percent: string, entryPrice: string, leverage: string, isLong: boolean): string;
|
|
78
|
+
/** @public */
|
|
79
|
+
export declare const safeCalculateTriggerPrice: (percent: string, entryPrice: string, leverage: string, isLong: boolean) => string | undefined;
|
|
72
80
|
/**
|
|
73
|
-
*
|
|
81
|
+
* Percentage gain or loss that a trigger price realises.
|
|
74
82
|
*
|
|
75
|
-
* @
|
|
76
|
-
* @param entryPrice - Position entry price
|
|
77
|
-
* @param leverage - Position leverage multiplier
|
|
78
|
-
* @param isLong - True for long positions, false for short
|
|
83
|
+
* @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
|
|
79
84
|
* @public
|
|
80
85
|
*/
|
|
81
|
-
export declare function calculateTriggerPercent(price:
|
|
86
|
+
export declare function calculateTriggerPercent(price: string, entryPrice: string, leverage: string, isLong: boolean): string;
|
|
87
|
+
/** @public */
|
|
88
|
+
export declare const safeCalculateTriggerPercent: (price: string, entryPrice: string, leverage: string, isLong: boolean) => string | undefined;
|
|
82
89
|
/**
|
|
83
|
-
*
|
|
90
|
+
* Realized PnL as a percentage of the position value at close:
|
|
91
|
+
* `realizedPnl ÷ (|size| × price) × 100`.
|
|
84
92
|
*
|
|
85
|
-
* @
|
|
86
|
-
*
|
|
87
|
-
* @param price - Price at close
|
|
88
|
-
* @returns PnL as a percentage of position value
|
|
93
|
+
* @throws {PerpsError} `ValidationError` when an input does not match the
|
|
94
|
+
* decimal pattern or `size × price` is zero.
|
|
89
95
|
* @public
|
|
90
96
|
*/
|
|
91
|
-
export declare function calculateRealizedPnlPercent(realizedPnl:
|
|
97
|
+
export declare function calculateRealizedPnlPercent(realizedPnl: string, size: string, price: string): string;
|
|
98
|
+
/** @public */
|
|
99
|
+
export declare const safeCalculateRealizedPnlPercent: (realizedPnl: string, size: string, price: string) => string | undefined;
|
|
92
100
|
/** Result of {@link walkOrderbook} — the fill obtained for a USD-notional walk. */
|
|
93
101
|
interface BookWalk {
|
|
94
102
|
/** Base amount filled. */
|
|
95
|
-
baseSize:
|
|
103
|
+
baseSize: string;
|
|
96
104
|
/** Notional actually filled in USD (equals the requested size unless the book ran dry). */
|
|
97
|
-
filledNotional:
|
|
98
|
-
/** Volume-weighted average fill price, or 0 when the book is empty. */
|
|
99
|
-
vwap:
|
|
100
|
-
/** True when the levels could not absorb the requested notional
|
|
105
|
+
filledNotional: string;
|
|
106
|
+
/** Volume-weighted average fill price, or `'0'` when the book is empty. */
|
|
107
|
+
vwap: string;
|
|
108
|
+
/** True when the levels could not absorb the requested notional. */
|
|
101
109
|
insufficientLiquidity: boolean;
|
|
102
110
|
}
|
|
103
111
|
/**
|
|
@@ -106,21 +114,22 @@ interface BookWalk {
|
|
|
106
114
|
* in array order — the caller passes asks for a buy and bids for a sell, each
|
|
107
115
|
* already ordered best-price-first. When the book cannot absorb the full
|
|
108
116
|
* notional, the walk stops at the last level and flags `insufficientLiquidity`,
|
|
109
|
-
* returning the best obtainable fill.
|
|
110
|
-
* fields with `insufficientLiquidity` set.
|
|
117
|
+
* returning the best obtainable fill.
|
|
111
118
|
*
|
|
112
|
-
* @throws {PerpsError} `ValidationError` when a level's `price`
|
|
113
|
-
* does not
|
|
119
|
+
* @throws {PerpsError} `ValidationError` when `sizeUsd` or a level's `price`
|
|
120
|
+
* or `size` does not match the decimal pattern.
|
|
114
121
|
* @public
|
|
115
122
|
*/
|
|
116
|
-
export declare function walkOrderbook(levels: OrderbookLevel[], sizeUsd:
|
|
123
|
+
export declare function walkOrderbook(levels: OrderbookLevel[], sizeUsd: string): BookWalk;
|
|
124
|
+
/** @public */
|
|
125
|
+
export declare const safeWalkOrderbook: (levels: OrderbookLevel[], sizeUsd: string) => BookWalk | undefined;
|
|
117
126
|
/** Inputs to {@link buildQuote} — the resolved market, its live price, its book, and the trade ask. */
|
|
118
127
|
interface BuildQuoteInput {
|
|
119
128
|
provider: string;
|
|
120
129
|
symbol: string;
|
|
121
130
|
type: TradeType;
|
|
122
131
|
side: QuoteSide;
|
|
123
|
-
sizeUsd:
|
|
132
|
+
sizeUsd: string;
|
|
124
133
|
market: Market;
|
|
125
134
|
price: MarketContext;
|
|
126
135
|
bids: OrderbookLevel[];
|
|
@@ -136,12 +145,13 @@ interface BuildQuoteInput {
|
|
|
136
145
|
* versus mark, applies the base taker fee on the filled notional, and carries
|
|
137
146
|
* the market's `funding` (`null` for spot, which has none).
|
|
138
147
|
*
|
|
139
|
-
* @throws {PerpsError} `ValidationError` when
|
|
140
|
-
*
|
|
141
|
-
* not finite (a non-finite `sizeUsd`, mark price or taker fee).
|
|
148
|
+
* @throws {PerpsError} `ValidationError` when `sizeUsd`, the mark price, the
|
|
149
|
+
* taker fee or a book level does not match the decimal pattern.
|
|
142
150
|
* @public
|
|
143
151
|
*/
|
|
144
152
|
export declare function buildQuote(input: BuildQuoteInput): Quote;
|
|
153
|
+
/** @public */
|
|
154
|
+
export declare const safeBuildQuote: (input: BuildQuoteInput) => Quote | undefined;
|
|
145
155
|
/**
|
|
146
156
|
* Pick the matching open position for an order's market, if any.
|
|
147
157
|
*
|
|
@@ -158,9 +168,13 @@ export declare function findMatchingPosition(marketId: string, positions: readon
|
|
|
158
168
|
* position can only close what's open.
|
|
159
169
|
*
|
|
160
170
|
* Inputs are non-negative magnitudes.
|
|
171
|
+
*
|
|
172
|
+
* @throws {PerpsError} `ValidationError` when an input does not match the decimal pattern.
|
|
161
173
|
* @public
|
|
162
174
|
*/
|
|
163
|
-
export declare function resolveCloseSize(orderSize:
|
|
175
|
+
export declare function resolveCloseSize(orderSize: string, positionSize: string): string;
|
|
176
|
+
/** @public */
|
|
177
|
+
export declare const safeResolveCloseSize: (orderSize: string, positionSize: string) => string | undefined;
|
|
164
178
|
/**
|
|
165
179
|
* Expected rPnL an unfilled order would realise against a matching position:
|
|
166
180
|
* a resting limit order prices off its limit, an armed trigger off its trigger
|
|
@@ -168,9 +182,13 @@ export declare function resolveCloseSize(orderSize: number, positionSize: number
|
|
|
168
182
|
* nothing.
|
|
169
183
|
*
|
|
170
184
|
* @returns Realised PnL if the order would reduce the position, otherwise
|
|
171
|
-
* `
|
|
185
|
+
* `undefined`.
|
|
186
|
+
* @throws {PerpsError} `ValidationError` when a price or size on the order or
|
|
187
|
+
* the position does not match the decimal pattern.
|
|
172
188
|
* @public
|
|
173
189
|
*/
|
|
174
|
-
export declare function estimateRealizedPnl(order: Order, position: Position | undefined):
|
|
190
|
+
export declare function estimateRealizedPnl(order: Order, position: Position | undefined): string | undefined;
|
|
191
|
+
/** @public */
|
|
192
|
+
export declare const safeEstimateRealizedPnl: (order: Order, position: Position | undefined) => string | undefined;
|
|
175
193
|
export {};
|
|
176
194
|
//# sourceMappingURL=order.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}
|