@lifi/perps-sdk 23.1.0 → 24.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 +85 -45
- 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 +13 -0
- package/dist/cjs/decimal/arithmetic.d.ts.map +1 -0
- package/dist/cjs/decimal/arithmetic.js +48 -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 +12 -6
- package/dist/cjs/decimal/convert.d.ts.map +1 -1
- package/dist/cjs/decimal/convert.js +36 -14
- 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 +27 -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 +4 -4
- package/dist/cjs/decimal/parse.d.ts.map +1 -1
- package/dist/cjs/decimal/parse.js +42 -25
- package/dist/cjs/decimal/parse.js.map +1 -1
- package/dist/cjs/index.d.ts +13 -11
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +64 -8
- 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 +106 -122
- 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 +88 -91
- 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 +2 -0
- package/dist/cjs/utils/warnOnce.d.ts.map +1 -1
- package/dist/cjs/utils/warnOnce.js +13 -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 +8 -0
- package/dist/cjs/websocket/wsLog.js.map +1 -1
- package/dist/cjs/wire/orderAmounts.d.ts.map +1 -1
- package/dist/cjs/wire/orderAmounts.js +6 -9
- 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 +84 -0
- package/dist/esm/decimal/arithmetic.d.ts.map +1 -0
- package/dist/esm/decimal/arithmetic.js +110 -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 +39 -5
- package/dist/esm/decimal/compare.d.ts.map +1 -1
- package/dist/esm/decimal/compare.js +45 -5
- package/dist/esm/decimal/compare.js.map +1 -1
- package/dist/esm/decimal/convert.d.ts +62 -26
- package/dist/esm/decimal/convert.d.ts.map +1 -1
- package/dist/esm/decimal/convert.js +76 -25
- package/dist/esm/decimal/convert.js.map +1 -1
- package/dist/esm/decimal/decimalStringToBig.d.ts +26 -0
- package/dist/esm/decimal/decimalStringToBig.d.ts.map +1 -0
- package/dist/esm/decimal/decimalStringToBig.js +40 -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 +22 -13
- package/dist/esm/decimal/parse.d.ts.map +1 -1
- package/dist/esm/decimal/parse.js +56 -46
- package/dist/esm/decimal/parse.js.map +1 -1
- package/dist/esm/index.d.ts +13 -11
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +9 -7
- 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 +85 -65
- package/dist/esm/math/order.d.ts.map +1 -1
- package/dist/esm/math/order.js +158 -166
- 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 +157 -155
- 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 +26 -13
- 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 +16 -0
- package/dist/esm/utils/warnOnce.d.ts.map +1 -1
- package/dist/esm/utils/warnOnce.js +24 -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 +18 -0
- package/dist/esm/websocket/wsLog.js.map +1 -1
- package/dist/esm/wire/orderAmounts.d.ts.map +1 -1
- package/dist/esm/wire/orderAmounts.js +2 -2
- 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.js +3 -3
- 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 +84 -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 +39 -5
- package/dist/types/decimal/compare.d.ts.map +1 -1
- package/dist/types/decimal/convert.d.ts +62 -26
- package/dist/types/decimal/convert.d.ts.map +1 -1
- package/dist/types/decimal/decimalStringToBig.d.ts +26 -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 +22 -13
- package/dist/types/decimal/parse.d.ts.map +1 -1
- package/dist/types/index.d.ts +13 -11
- 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 +85 -65
- 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 +26 -13
- 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 +16 -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.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/withdraw.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/client/PerpsClient.ts +48 -10
- package/src/decimal/arithmetic.ts +144 -0
- package/src/decimal/big.ts +0 -5
- package/src/decimal/compare.ts +60 -10
- package/src/decimal/convert.ts +123 -44
- package/src/decimal/decimalStringToBig.ts +47 -0
- package/src/decimal/format.ts +81 -72
- package/src/decimal/parse.ts +71 -61
- package/src/index.ts +73 -10
- package/src/math/fills.ts +32 -17
- package/src/math/order.ts +261 -216
- package/src/math/position.ts +277 -194
- 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 +35 -13
- 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 +44 -0
- package/src/version.ts +1 -1
- package/src/websocket/PerpsWsClient.ts +25 -2
- package/src/websocket/wsLog.ts +31 -0
- package/src/wire/orderAmounts.ts +3 -2
- package/src/wire/refuel.ts +56 -20
- package/src/wire/transferable.ts +3 -3
- 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.js
CHANGED
|
@@ -1,189 +1,184 @@
|
|
|
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 is not a decimal
|
|
5
|
+
* string and has a `safe*` pair that gives `undefined` in place of the throw.
|
|
4
6
|
*/
|
|
5
7
|
import { OrderSide, OrderStatus, PerpsErrorCode, PositionSide, } from '@lifi/perps-types';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
+
import { DivBig } from '../decimal/big.js';
|
|
9
|
+
import { bigToDecimalString, decimalStringToBig, decimalStringToDivBig, } from '../decimal/decimalStringToBig.js';
|
|
8
10
|
import { PerpsError } from '../errors/PerpsError.js';
|
|
11
|
+
import { createSafeFunction } from '../utils/createSafeFunction.js';
|
|
9
12
|
import { isActiveOrderStatus, isRegularOrder, isTriggerOrder, } from '../utils/orderClassification.js';
|
|
10
13
|
import { calculateRealizedPnl } from './position.js';
|
|
11
14
|
/**
|
|
12
|
-
*
|
|
15
|
+
* Position size in asset units from margin: `marginUsd × leverage ÷ price`.
|
|
13
16
|
*
|
|
14
|
-
* @param marginUsd - Margin amount in USD
|
|
15
|
-
* @param leverage - Position leverage
|
|
16
|
-
* @param price - Current asset price
|
|
17
|
-
* @returns Position size in asset units
|
|
18
17
|
* @example
|
|
19
18
|
* ```ts
|
|
20
|
-
* calculateSize(100, 10, 2000) // 0.5 (ETH at $2000)
|
|
19
|
+
* calculateSize('100', '10', '2000') // '0.5' (ETH at $2000)
|
|
21
20
|
* ```
|
|
21
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string
|
|
22
|
+
* or `price` is zero.
|
|
22
23
|
* @public
|
|
23
24
|
*/
|
|
24
25
|
export function calculateSize(marginUsd, leverage, price) {
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
const notional = decimalStringToDivBig(marginUsd).times(decimalStringToBig(leverage));
|
|
27
|
+
const priceBig = decimalStringToBig(price);
|
|
28
|
+
if (priceBig.eq(0)) {
|
|
29
|
+
throw new PerpsError(PerpsErrorCode.ValidationError, 'Price must not be zero.');
|
|
27
30
|
}
|
|
28
|
-
|
|
29
|
-
return Number.NaN;
|
|
30
|
-
}
|
|
31
|
-
return new DivBig(marginUsd).times(leverage).div(price).toNumber();
|
|
31
|
+
return bigToDecimalString(notional.div(priceBig));
|
|
32
32
|
}
|
|
33
|
+
/** @public */
|
|
34
|
+
export const safeCalculateSize = createSafeFunction('calculateSize', calculateSize);
|
|
33
35
|
/**
|
|
34
|
-
*
|
|
36
|
+
* Estimated trading fee in USD: `sizeUsd × feeRate`.
|
|
35
37
|
*
|
|
36
|
-
* @param
|
|
37
|
-
* @
|
|
38
|
-
* @returns Estimated fee in USD
|
|
38
|
+
* @param feeRate - Fee rate as a fraction (`'0.00035'` for 0.035%).
|
|
39
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
39
40
|
* @public
|
|
40
41
|
*/
|
|
41
42
|
export function estimateFees(sizeUsd, feeRate) {
|
|
42
|
-
|
|
43
|
-
return Number.NaN;
|
|
44
|
-
}
|
|
45
|
-
return new DivBig(sizeUsd).times(feeRate).toNumber();
|
|
43
|
+
return bigToDecimalString(decimalStringToBig(sizeUsd).times(decimalStringToBig(feeRate)));
|
|
46
44
|
}
|
|
45
|
+
/** @public */
|
|
46
|
+
export const safeEstimateFees = createSafeFunction('estimateFees', estimateFees);
|
|
47
47
|
/**
|
|
48
|
-
* Apply slippage to
|
|
48
|
+
* Apply slippage to an order-entry price with exact decimal math: a buy
|
|
49
|
+
* multiplies by `1 + slippagePercent / 100`, a sell divides by it. The result
|
|
50
|
+
* is not rounded; snap it to the market tick before it goes to a venue.
|
|
49
51
|
*
|
|
50
|
-
* @param
|
|
51
|
-
* @
|
|
52
|
-
*
|
|
53
|
-
* @returns Price adjusted for slippage
|
|
52
|
+
* @param slippagePercent - Slippage tolerance as a percentage (`'0.5'` is 0.5%).
|
|
53
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal
|
|
54
|
+
* string, or `slippagePercent` is -100 or less.
|
|
54
55
|
* @public
|
|
55
56
|
*/
|
|
56
|
-
export function
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (isBuy) {
|
|
62
|
-
return new DivBig(price).times(multiplier).toNumber();
|
|
57
|
+
export function applySlippageToPrice(price, slippagePercent, isBuy) {
|
|
58
|
+
const base = decimalStringToDivBig(price);
|
|
59
|
+
const slippage = decimalStringToBig(slippagePercent);
|
|
60
|
+
if (slippage.lte(-100)) {
|
|
61
|
+
throw new PerpsError(PerpsErrorCode.ValidationError, `Invalid \`slippagePercent\`: ${slippagePercent}.`);
|
|
63
62
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
return new DivBig(price).div(multiplier).toNumber();
|
|
63
|
+
const multiplier = new DivBig(slippage).div(100).plus(1);
|
|
64
|
+
return bigToDecimalString(isBuy ? base.times(multiplier) : base.div(multiplier));
|
|
68
65
|
}
|
|
66
|
+
/** @public */
|
|
67
|
+
export const safeApplySlippageToPrice = createSafeFunction('applySlippageToPrice', applySlippageToPrice);
|
|
69
68
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
69
|
+
* Expected gain or loss for a TP or SL trigger price. Positive is a profit,
|
|
70
|
+
* negative a loss.
|
|
72
71
|
*
|
|
73
|
-
* @param
|
|
74
|
-
* @param
|
|
75
|
-
* @
|
|
76
|
-
*
|
|
77
|
-
* @
|
|
72
|
+
* @param entryPrice - Position entry or current market price.
|
|
73
|
+
* @param margin - Margin amount in USD.
|
|
74
|
+
* @returns The expected PnL, or `null` when `triggerPrice`, `entryPrice` or
|
|
75
|
+
* `margin` is zero.
|
|
76
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
78
77
|
* @public
|
|
79
78
|
*/
|
|
80
79
|
export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong, margin) {
|
|
81
|
-
|
|
80
|
+
const trigger = decimalStringToDivBig(triggerPrice);
|
|
81
|
+
const entry = decimalStringToBig(entryPrice);
|
|
82
|
+
const leverageBig = decimalStringToBig(leverage);
|
|
83
|
+
const marginBig = decimalStringToBig(margin);
|
|
84
|
+
if (trigger.eq(0) || entry.eq(0) || marginBig.eq(0)) {
|
|
82
85
|
return null;
|
|
83
86
|
}
|
|
84
|
-
if (!areFinite(triggerPrice, entryPrice, leverage, margin)) {
|
|
85
|
-
return { amount: Number.NaN, percent: Number.NaN };
|
|
86
|
-
}
|
|
87
87
|
const priceDiff = isLong
|
|
88
|
-
?
|
|
89
|
-
:
|
|
90
|
-
const percent = priceDiff.div(
|
|
91
|
-
const amount = percent.times(
|
|
92
|
-
return {
|
|
88
|
+
? trigger.minus(entry)
|
|
89
|
+
: trigger.times(-1).plus(entry);
|
|
90
|
+
const percent = priceDiff.div(entry).times(leverageBig).times(100);
|
|
91
|
+
const amount = percent.times(marginBig).div(100);
|
|
92
|
+
return {
|
|
93
|
+
amount: bigToDecimalString(amount),
|
|
94
|
+
percent: bigToDecimalString(percent),
|
|
95
|
+
};
|
|
93
96
|
}
|
|
97
|
+
/** @public */
|
|
98
|
+
export const safeCalculateExpectedPnl = createSafeFunction('calculateExpectedPnl', calculateExpectedPnl);
|
|
94
99
|
/**
|
|
95
|
-
*
|
|
100
|
+
* Trigger price that realises a percentage gain or loss. A zero `entryPrice`
|
|
101
|
+
* or `leverage` gives `'0'`.
|
|
96
102
|
*
|
|
97
|
-
* @param percent - Target gain
|
|
98
|
-
*
|
|
99
|
-
* @
|
|
100
|
-
* @param isLong - True for long positions, false for short
|
|
103
|
+
* @param percent - Target gain or loss percentage (positive = profitable
|
|
104
|
+
* direction).
|
|
105
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
101
106
|
* @public
|
|
102
107
|
*/
|
|
103
108
|
export function calculateTriggerPrice(percent, entryPrice, leverage, isLong) {
|
|
104
|
-
|
|
105
|
-
|
|
109
|
+
const percentBig = decimalStringToDivBig(percent);
|
|
110
|
+
const entry = decimalStringToBig(entryPrice);
|
|
111
|
+
const leverageBig = decimalStringToBig(leverage);
|
|
112
|
+
if (entry.eq(0) || leverageBig.eq(0)) {
|
|
113
|
+
return '0';
|
|
106
114
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
const priceDelta = new DivBig(percent)
|
|
111
|
-
.times(entryPrice)
|
|
112
|
-
.div(new DivBig(leverage).times(100));
|
|
113
|
-
const entry = new DivBig(entryPrice);
|
|
114
|
-
return (isLong ? entry.plus(priceDelta) : entry.minus(priceDelta)).toNumber();
|
|
115
|
+
const priceDelta = percentBig.times(entry).div(leverageBig.times(100));
|
|
116
|
+
return bigToDecimalString(isLong ? entry.plus(priceDelta) : entry.minus(priceDelta));
|
|
115
117
|
}
|
|
118
|
+
/** @public */
|
|
119
|
+
export const safeCalculateTriggerPrice = createSafeFunction('calculateTriggerPrice', calculateTriggerPrice);
|
|
116
120
|
/**
|
|
117
|
-
*
|
|
121
|
+
* Percentage gain or loss that a trigger price realises. A zero `entryPrice`
|
|
122
|
+
* or `leverage` gives `'0'`.
|
|
118
123
|
*
|
|
119
|
-
* @
|
|
120
|
-
* @param entryPrice - Position entry price
|
|
121
|
-
* @param leverage - Position leverage multiplier
|
|
122
|
-
* @param isLong - True for long positions, false for short
|
|
124
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
123
125
|
* @public
|
|
124
126
|
*/
|
|
125
127
|
export function calculateTriggerPercent(price, entryPrice, leverage, isLong) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if (
|
|
130
|
-
return
|
|
128
|
+
const priceBig = decimalStringToDivBig(price);
|
|
129
|
+
const entry = decimalStringToBig(entryPrice);
|
|
130
|
+
const leverageBig = decimalStringToBig(leverage);
|
|
131
|
+
if (entry.eq(0) || leverageBig.eq(0)) {
|
|
132
|
+
return '0';
|
|
131
133
|
}
|
|
132
134
|
const priceDiff = isLong
|
|
133
|
-
?
|
|
134
|
-
:
|
|
135
|
-
return priceDiff.div(
|
|
135
|
+
? priceBig.minus(entry)
|
|
136
|
+
: priceBig.times(-1).plus(entry);
|
|
137
|
+
return bigToDecimalString(priceDiff.div(entry).times(leverageBig).times(100));
|
|
136
138
|
}
|
|
139
|
+
/** @public */
|
|
140
|
+
export const safeCalculateTriggerPercent = createSafeFunction('calculateTriggerPercent', calculateTriggerPercent);
|
|
137
141
|
/**
|
|
138
|
-
*
|
|
142
|
+
* Realized PnL as a percentage of the position value at close:
|
|
143
|
+
* `realizedPnl ÷ (|size| × price) × 100`. A zero position value gives `'0'`.
|
|
139
144
|
*
|
|
140
|
-
* @
|
|
141
|
-
* @param size - Position size in asset units at close
|
|
142
|
-
* @param price - Price at close
|
|
143
|
-
* @returns PnL as a percentage of position value
|
|
145
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
144
146
|
* @public
|
|
145
147
|
*/
|
|
146
148
|
export function calculateRealizedPnlPercent(realizedPnl, size, price) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
const pnl = decimalStringToDivBig(realizedPnl);
|
|
150
|
+
const positionValue = decimalStringToBig(size)
|
|
151
|
+
.abs()
|
|
152
|
+
.times(decimalStringToBig(price));
|
|
151
153
|
if (positionValue.eq(0)) {
|
|
152
|
-
return 0;
|
|
154
|
+
return '0';
|
|
153
155
|
}
|
|
154
|
-
return
|
|
156
|
+
return bigToDecimalString(pnl.div(positionValue).times(100));
|
|
155
157
|
}
|
|
158
|
+
/** @public */
|
|
159
|
+
export const safeCalculateRealizedPnlPercent = createSafeFunction('calculateRealizedPnlPercent', calculateRealizedPnlPercent);
|
|
156
160
|
/**
|
|
157
161
|
* Walk one side of an orderbook to fill `sizeUsd` notional, accumulating base
|
|
158
162
|
* size and notional level-by-level to derive the VWAP fill. Levels are consumed
|
|
159
163
|
* in array order — the caller passes asks for a buy and bids for a sell, each
|
|
160
164
|
* already ordered best-price-first. When the book cannot absorb the full
|
|
161
165
|
* notional, the walk stops at the last level and flags `insufficientLiquidity`,
|
|
162
|
-
* returning the best obtainable fill.
|
|
163
|
-
* fields with `insufficientLiquidity` set.
|
|
166
|
+
* returning the best obtainable fill.
|
|
164
167
|
*
|
|
165
|
-
* @throws {PerpsError} `ValidationError` when a level's `price`
|
|
166
|
-
*
|
|
168
|
+
* @throws {PerpsError} `ValidationError` when `sizeUsd` or a level's `price`
|
|
169
|
+
* or `size` is not a decimal string.
|
|
167
170
|
* @public
|
|
168
171
|
*/
|
|
169
172
|
export function walkOrderbook(levels, sizeUsd) {
|
|
170
|
-
|
|
171
|
-
return {
|
|
172
|
-
baseSize: Number.NaN,
|
|
173
|
-
filledNotional: Number.NaN,
|
|
174
|
-
vwap: Number.NaN,
|
|
175
|
-
insufficientLiquidity: true,
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
let remaining = new DivBig(sizeUsd);
|
|
173
|
+
let remaining = decimalStringToDivBig(sizeUsd);
|
|
179
174
|
let baseSize = new DivBig(0);
|
|
180
175
|
let filledNotional = new DivBig(0);
|
|
181
176
|
for (const level of levels) {
|
|
182
177
|
if (remaining.lte(0)) {
|
|
183
178
|
break;
|
|
184
179
|
}
|
|
185
|
-
const
|
|
186
|
-
const levelNotional = size.times(price);
|
|
180
|
+
const price = decimalStringToDivBig(level.price);
|
|
181
|
+
const levelNotional = decimalStringToBig(level.size).times(price);
|
|
187
182
|
const take = remaining.lt(levelNotional) ? remaining : levelNotional;
|
|
188
183
|
if (take.eq(0)) {
|
|
189
184
|
continue;
|
|
@@ -193,20 +188,16 @@ export function walkOrderbook(levels, sizeUsd) {
|
|
|
193
188
|
remaining = remaining.minus(take);
|
|
194
189
|
}
|
|
195
190
|
return {
|
|
196
|
-
baseSize: baseSize
|
|
197
|
-
filledNotional: filledNotional
|
|
198
|
-
vwap: baseSize.eq(0)
|
|
191
|
+
baseSize: bigToDecimalString(baseSize),
|
|
192
|
+
filledNotional: bigToDecimalString(filledNotional),
|
|
193
|
+
vwap: baseSize.eq(0)
|
|
194
|
+
? '0'
|
|
195
|
+
: bigToDecimalString(filledNotional.div(baseSize)),
|
|
199
196
|
insufficientLiquidity: remaining.gt(0),
|
|
200
197
|
};
|
|
201
198
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
return { price: new DivBig(level.price), size: new DivBig(level.size) };
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
throw new PerpsError(PerpsErrorCode.ValidationError, `Malformed orderbook level: price='${level.price}', size='${level.size}'`);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
199
|
+
/** @public */
|
|
200
|
+
export const safeWalkOrderbook = createSafeFunction('walkOrderbook', walkOrderbook);
|
|
210
201
|
/**
|
|
211
202
|
* Build a {@link Quote} from a resolved market, its live {@link MarketContext},
|
|
212
203
|
* and its orderbook snapshot. Pure: walks the relevant side (buy → asks,
|
|
@@ -214,39 +205,40 @@ function parseLevel(level) {
|
|
|
214
205
|
* versus mark, applies the base taker fee on the filled notional, and carries
|
|
215
206
|
* the market's `funding` (`null` for spot, which has none).
|
|
216
207
|
*
|
|
217
|
-
* @throws {PerpsError} `ValidationError` when
|
|
218
|
-
*
|
|
219
|
-
* not finite (a non-finite `sizeUsd`, mark price or taker fee).
|
|
208
|
+
* @throws {PerpsError} `ValidationError` when `sizeUsd`, the mark price, the
|
|
209
|
+
* taker fee or a book level is not a decimal string.
|
|
220
210
|
* @public
|
|
221
211
|
*/
|
|
222
212
|
export function buildQuote(input) {
|
|
223
213
|
const { market, price, side, sizeUsd, feeTier } = input;
|
|
224
|
-
const markPrice =
|
|
214
|
+
const markPrice = decimalStringToDivBig(price.markPrice);
|
|
225
215
|
const levels = side === 'buy' ? input.asks : input.bids;
|
|
226
216
|
const walk = walkOrderbook(levels, sizeUsd);
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
217
|
+
const vwap = decimalStringToBig(walk.vwap);
|
|
218
|
+
const priceImpactBps = markPrice.eq(0) || vwap.eq(0)
|
|
219
|
+
? '0'
|
|
220
|
+
: bigToDecimalString(vwap.minus(markPrice).div(markPrice).abs().times(10_000));
|
|
231
221
|
return {
|
|
232
222
|
provider: input.provider,
|
|
233
223
|
symbol: input.symbol,
|
|
234
224
|
marketId: market.id,
|
|
235
225
|
type: input.type,
|
|
236
226
|
side,
|
|
237
|
-
sizeUsd:
|
|
238
|
-
baseSize:
|
|
227
|
+
sizeUsd: bigToDecimalString(decimalStringToBig(sizeUsd)),
|
|
228
|
+
baseSize: walk.baseSize,
|
|
239
229
|
markPrice: price.markPrice,
|
|
240
|
-
expectedFillPrice:
|
|
241
|
-
priceImpactBps
|
|
230
|
+
expectedFillPrice: walk.vwap,
|
|
231
|
+
priceImpactBps,
|
|
242
232
|
feeTier,
|
|
243
233
|
isDefaultFeeTier: true,
|
|
244
|
-
feeUsd:
|
|
234
|
+
feeUsd: estimateFees(walk.filledNotional, feeTier.taker),
|
|
245
235
|
funding: price.funding ?? null,
|
|
246
236
|
insufficientLiquidity: walk.insufficientLiquidity,
|
|
247
237
|
timestamp: input.timestamp,
|
|
248
238
|
};
|
|
249
239
|
}
|
|
240
|
+
/** @public */
|
|
241
|
+
export const safeBuildQuote = createSafeFunction('buildQuote', buildQuote);
|
|
250
242
|
/**
|
|
251
243
|
* Pick the matching open position for an order's market, if any.
|
|
252
244
|
*
|
|
@@ -265,14 +257,20 @@ export function findMatchingPosition(marketId, positions) {
|
|
|
265
257
|
* position can only close what's open.
|
|
266
258
|
*
|
|
267
259
|
* Inputs are non-negative magnitudes.
|
|
260
|
+
*
|
|
261
|
+
* @throws {PerpsError} `ValidationError` when an input is not a decimal string.
|
|
268
262
|
* @public
|
|
269
263
|
*/
|
|
270
264
|
export function resolveCloseSize(orderSize, positionSize) {
|
|
271
|
-
|
|
272
|
-
|
|
265
|
+
const order = decimalStringToBig(orderSize);
|
|
266
|
+
const position = decimalStringToBig(positionSize);
|
|
267
|
+
if (order.eq(0)) {
|
|
268
|
+
return bigToDecimalString(position);
|
|
273
269
|
}
|
|
274
|
-
return
|
|
270
|
+
return bigToDecimalString(order.lt(position) ? order : position);
|
|
275
271
|
}
|
|
272
|
+
/** @public */
|
|
273
|
+
export const safeResolveCloseSize = createSafeFunction('resolveCloseSize', resolveCloseSize);
|
|
276
274
|
/**
|
|
277
275
|
* Expected rPnL for a resting limit order against a matching position.
|
|
278
276
|
*
|
|
@@ -292,34 +290,31 @@ function regularOrderRealizedPnl(order, position) {
|
|
|
292
290
|
if (!reducesPosition) {
|
|
293
291
|
return null;
|
|
294
292
|
}
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
const
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
!Number.isFinite(orderSize) ||
|
|
302
|
-
!Number.isFinite(positionSize) ||
|
|
303
|
-
positionSize <= 0) {
|
|
293
|
+
if (order.price === undefined) {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
const orderSize = decimalStringToBig(order.remainingSize).abs();
|
|
297
|
+
const positionSize = decimalStringToBig(position.size).abs();
|
|
298
|
+
if (positionSize.lte(0)) {
|
|
304
299
|
return null;
|
|
305
300
|
}
|
|
306
301
|
// `resolveCloseSize` reads a zero size as "close the whole position", a
|
|
307
302
|
// convention that belongs to an order's submitted size. `remainingSize` is
|
|
308
303
|
// the unfilled quantity, so zero means nothing is left to fill.
|
|
309
|
-
if (orderSize
|
|
304
|
+
if (orderSize.eq(0)) {
|
|
310
305
|
return null;
|
|
311
306
|
}
|
|
312
|
-
const closeSize = resolveCloseSize(orderSize, positionSize);
|
|
313
307
|
return calculateRealizedPnl({
|
|
314
|
-
entryPrice,
|
|
315
|
-
closePrice:
|
|
316
|
-
closeSize,
|
|
308
|
+
entryPrice: position.entryPrice,
|
|
309
|
+
closePrice: order.price,
|
|
310
|
+
closeSize: resolveCloseSize(bigToDecimalString(orderSize), bigToDecimalString(positionSize)),
|
|
317
311
|
isLong,
|
|
318
312
|
});
|
|
319
313
|
}
|
|
320
314
|
/** Project the unfilled closing quantity of an active trigger at its trigger price. */
|
|
321
315
|
function triggerOrderRealizedPnl(order, position) {
|
|
322
316
|
if (!position ||
|
|
317
|
+
order.triggerPrice === undefined ||
|
|
323
318
|
!isActiveOrderStatus(order.status) ||
|
|
324
319
|
order.status === OrderStatus.PENDING) {
|
|
325
320
|
return null;
|
|
@@ -329,26 +324,19 @@ function triggerOrderRealizedPnl(order, position) {
|
|
|
329
324
|
(!isLong && order.side !== OrderSide.BUY)) {
|
|
330
325
|
return null;
|
|
331
326
|
}
|
|
332
|
-
const
|
|
333
|
-
const
|
|
334
|
-
|
|
335
|
-
const positionSize = Math.abs(Number.parseFloat(position.size));
|
|
336
|
-
if (!Number.isFinite(triggerPrice) ||
|
|
337
|
-
!Number.isFinite(entryPrice) ||
|
|
338
|
-
!Number.isFinite(orderSize) ||
|
|
339
|
-
!Number.isFinite(positionSize) ||
|
|
340
|
-
positionSize <= 0) {
|
|
327
|
+
const orderSize = decimalStringToBig(order.remainingSize).abs();
|
|
328
|
+
const positionSize = decimalStringToBig(position.size).abs();
|
|
329
|
+
if (positionSize.lte(0)) {
|
|
341
330
|
return null;
|
|
342
331
|
}
|
|
343
|
-
if (orderSize
|
|
344
|
-
(
|
|
332
|
+
if (orderSize.eq(0) &&
|
|
333
|
+
(!decimalStringToBig(order.originalSize).eq(0) || !order.reduceOnly)) {
|
|
345
334
|
return null;
|
|
346
335
|
}
|
|
347
|
-
const closeSize = resolveCloseSize(orderSize, positionSize);
|
|
348
336
|
return calculateRealizedPnl({
|
|
349
|
-
entryPrice,
|
|
350
|
-
closePrice: triggerPrice,
|
|
351
|
-
closeSize,
|
|
337
|
+
entryPrice: position.entryPrice,
|
|
338
|
+
closePrice: order.triggerPrice,
|
|
339
|
+
closeSize: resolveCloseSize(bigToDecimalString(orderSize), bigToDecimalString(positionSize)),
|
|
352
340
|
isLong,
|
|
353
341
|
});
|
|
354
342
|
}
|
|
@@ -360,6 +348,8 @@ function triggerOrderRealizedPnl(order, position) {
|
|
|
360
348
|
*
|
|
361
349
|
* @returns Realised PnL if the order would reduce the position, otherwise
|
|
362
350
|
* `null`.
|
|
351
|
+
* @throws {PerpsError} `ValidationError` when a price or size on the order or
|
|
352
|
+
* the position is not a decimal string.
|
|
363
353
|
* @public
|
|
364
354
|
*/
|
|
365
355
|
export function estimateRealizedPnl(order, position) {
|
|
@@ -371,4 +361,6 @@ export function estimateRealizedPnl(order, position) {
|
|
|
371
361
|
}
|
|
372
362
|
return null;
|
|
373
363
|
}
|
|
364
|
+
/** @public */
|
|
365
|
+
export const safeEstimateRealizedPnl = createSafeFunction('estimateRealizedPnl', estimateRealizedPnl);
|
|
374
366
|
//# sourceMappingURL=order.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}
|