@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/cjs/math/order.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.safeEstimateRealizedPnl = exports.safeResolveCloseSize = exports.safeBuildQuote = exports.safeWalkOrderbook = exports.safeCalculateRealizedPnlPercent = exports.safeCalculateTriggerPercent = exports.safeCalculateTriggerPrice = exports.safeCalculateExpectedPnl = exports.safeApplySlippageToPrice = exports.safeEstimateFees = exports.safeCalculateSize = void 0;
|
|
3
4
|
exports.calculateSize = calculateSize;
|
|
4
5
|
exports.estimateFees = estimateFees;
|
|
5
|
-
exports.
|
|
6
|
+
exports.applySlippageToPrice = applySlippageToPrice;
|
|
6
7
|
exports.calculateExpectedPnl = calculateExpectedPnl;
|
|
7
8
|
exports.calculateTriggerPrice = calculateTriggerPrice;
|
|
8
9
|
exports.calculateTriggerPercent = calculateTriggerPercent;
|
|
@@ -14,105 +15,98 @@ exports.resolveCloseSize = resolveCloseSize;
|
|
|
14
15
|
exports.estimateRealizedPnl = estimateRealizedPnl;
|
|
15
16
|
const perps_types_1 = require("@lifi/perps-types");
|
|
16
17
|
const big_js_1 = require("../decimal/big.js");
|
|
17
|
-
const
|
|
18
|
+
const decimalStringToBig_js_1 = require("../decimal/decimalStringToBig.js");
|
|
18
19
|
const PerpsError_js_1 = require("../errors/PerpsError.js");
|
|
20
|
+
const createSafeFunction_js_1 = require("../utils/createSafeFunction.js");
|
|
19
21
|
const orderClassification_js_1 = require("../utils/orderClassification.js");
|
|
20
22
|
const position_js_1 = require("./position.js");
|
|
21
23
|
function calculateSize(marginUsd, leverage, price) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
const notional = (0, decimalStringToBig_js_1.decimalStringToDivBig)(marginUsd).times((0, decimalStringToBig_js_1.decimalStringToBig)(leverage));
|
|
25
|
+
const priceBig = (0, decimalStringToBig_js_1.decimalStringToBig)(price);
|
|
26
|
+
if (priceBig.eq(0)) {
|
|
27
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, 'Price must not be zero.');
|
|
24
28
|
}
|
|
25
|
-
|
|
26
|
-
return Number.NaN;
|
|
27
|
-
}
|
|
28
|
-
return new big_js_1.DivBig(marginUsd).times(leverage).div(price).toNumber();
|
|
29
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)(notional.div(priceBig));
|
|
29
30
|
}
|
|
31
|
+
exports.safeCalculateSize = (0, createSafeFunction_js_1.createSafeFunction)('calculateSize', calculateSize);
|
|
30
32
|
function estimateFees(sizeUsd, feeRate) {
|
|
31
|
-
|
|
32
|
-
return Number.NaN;
|
|
33
|
-
}
|
|
34
|
-
return new big_js_1.DivBig(sizeUsd).times(feeRate).toNumber();
|
|
33
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)((0, decimalStringToBig_js_1.decimalStringToBig)(sizeUsd).times((0, decimalStringToBig_js_1.decimalStringToBig)(feeRate)));
|
|
35
34
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return price / multiplier.toNumber();
|
|
46
|
-
}
|
|
47
|
-
return new big_js_1.DivBig(price).div(multiplier).toNumber();
|
|
35
|
+
exports.safeEstimateFees = (0, createSafeFunction_js_1.createSafeFunction)('estimateFees', estimateFees);
|
|
36
|
+
function applySlippageToPrice(price, slippagePercent, isBuy) {
|
|
37
|
+
const base = (0, decimalStringToBig_js_1.decimalStringToDivBig)(price);
|
|
38
|
+
const slippage = (0, decimalStringToBig_js_1.decimalStringToBig)(slippagePercent);
|
|
39
|
+
if (slippage.lte(-100)) {
|
|
40
|
+
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Invalid \`slippagePercent\`: ${slippagePercent}.`);
|
|
41
|
+
}
|
|
42
|
+
const multiplier = new big_js_1.DivBig(slippage).div(100).plus(1);
|
|
43
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)(isBuy ? base.times(multiplier) : base.div(multiplier));
|
|
48
44
|
}
|
|
45
|
+
exports.safeApplySlippageToPrice = (0, createSafeFunction_js_1.createSafeFunction)('applySlippageToPrice', applySlippageToPrice);
|
|
49
46
|
function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong, margin) {
|
|
50
|
-
|
|
47
|
+
const trigger = (0, decimalStringToBig_js_1.decimalStringToDivBig)(triggerPrice);
|
|
48
|
+
const entry = (0, decimalStringToBig_js_1.decimalStringToBig)(entryPrice);
|
|
49
|
+
const leverageBig = (0, decimalStringToBig_js_1.decimalStringToBig)(leverage);
|
|
50
|
+
const marginBig = (0, decimalStringToBig_js_1.decimalStringToBig)(margin);
|
|
51
|
+
if (trigger.eq(0) || entry.eq(0) || marginBig.eq(0)) {
|
|
51
52
|
return null;
|
|
52
53
|
}
|
|
53
|
-
if (!(0, big_js_1.areFinite)(triggerPrice, entryPrice, leverage, margin)) {
|
|
54
|
-
return { amount: Number.NaN, percent: Number.NaN };
|
|
55
|
-
}
|
|
56
54
|
const priceDiff = isLong
|
|
57
|
-
?
|
|
58
|
-
:
|
|
59
|
-
const percent = priceDiff.div(
|
|
60
|
-
const amount = percent.times(
|
|
61
|
-
return {
|
|
55
|
+
? trigger.minus(entry)
|
|
56
|
+
: trigger.times(-1).plus(entry);
|
|
57
|
+
const percent = priceDiff.div(entry).times(leverageBig).times(100);
|
|
58
|
+
const amount = percent.times(marginBig).div(100);
|
|
59
|
+
return {
|
|
60
|
+
amount: (0, decimalStringToBig_js_1.bigToDecimalString)(amount),
|
|
61
|
+
percent: (0, decimalStringToBig_js_1.bigToDecimalString)(percent),
|
|
62
|
+
};
|
|
62
63
|
}
|
|
64
|
+
exports.safeCalculateExpectedPnl = (0, createSafeFunction_js_1.createSafeFunction)('calculateExpectedPnl', calculateExpectedPnl);
|
|
63
65
|
function calculateTriggerPrice(percent, entryPrice, leverage, isLong) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (
|
|
68
|
-
return
|
|
69
|
-
}
|
|
70
|
-
const priceDelta =
|
|
71
|
-
|
|
72
|
-
.div(new big_js_1.DivBig(leverage).times(100));
|
|
73
|
-
const entry = new big_js_1.DivBig(entryPrice);
|
|
74
|
-
return (isLong ? entry.plus(priceDelta) : entry.minus(priceDelta)).toNumber();
|
|
66
|
+
const percentBig = (0, decimalStringToBig_js_1.decimalStringToDivBig)(percent);
|
|
67
|
+
const entry = (0, decimalStringToBig_js_1.decimalStringToBig)(entryPrice);
|
|
68
|
+
const leverageBig = (0, decimalStringToBig_js_1.decimalStringToBig)(leverage);
|
|
69
|
+
if (entry.eq(0) || leverageBig.eq(0)) {
|
|
70
|
+
return '0';
|
|
71
|
+
}
|
|
72
|
+
const priceDelta = percentBig.times(entry).div(leverageBig.times(100));
|
|
73
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)(isLong ? entry.plus(priceDelta) : entry.minus(priceDelta));
|
|
75
74
|
}
|
|
75
|
+
exports.safeCalculateTriggerPrice = (0, createSafeFunction_js_1.createSafeFunction)('calculateTriggerPrice', calculateTriggerPrice);
|
|
76
76
|
function calculateTriggerPercent(price, entryPrice, leverage, isLong) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (
|
|
81
|
-
return
|
|
77
|
+
const priceBig = (0, decimalStringToBig_js_1.decimalStringToDivBig)(price);
|
|
78
|
+
const entry = (0, decimalStringToBig_js_1.decimalStringToBig)(entryPrice);
|
|
79
|
+
const leverageBig = (0, decimalStringToBig_js_1.decimalStringToBig)(leverage);
|
|
80
|
+
if (entry.eq(0) || leverageBig.eq(0)) {
|
|
81
|
+
return '0';
|
|
82
82
|
}
|
|
83
83
|
const priceDiff = isLong
|
|
84
|
-
?
|
|
85
|
-
:
|
|
86
|
-
return priceDiff.div(
|
|
84
|
+
? priceBig.minus(entry)
|
|
85
|
+
: priceBig.times(-1).plus(entry);
|
|
86
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)(priceDiff.div(entry).times(leverageBig).times(100));
|
|
87
87
|
}
|
|
88
|
+
exports.safeCalculateTriggerPercent = (0, createSafeFunction_js_1.createSafeFunction)('calculateTriggerPercent', calculateTriggerPercent);
|
|
88
89
|
function calculateRealizedPnlPercent(realizedPnl, size, price) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
const pnl = (0, decimalStringToBig_js_1.decimalStringToDivBig)(realizedPnl);
|
|
91
|
+
const positionValue = (0, decimalStringToBig_js_1.decimalStringToBig)(size)
|
|
92
|
+
.abs()
|
|
93
|
+
.times((0, decimalStringToBig_js_1.decimalStringToBig)(price));
|
|
93
94
|
if (positionValue.eq(0)) {
|
|
94
|
-
return 0;
|
|
95
|
+
return '0';
|
|
95
96
|
}
|
|
96
|
-
return
|
|
97
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)(pnl.div(positionValue).times(100));
|
|
97
98
|
}
|
|
99
|
+
exports.safeCalculateRealizedPnlPercent = (0, createSafeFunction_js_1.createSafeFunction)('calculateRealizedPnlPercent', calculateRealizedPnlPercent);
|
|
98
100
|
function walkOrderbook(levels, sizeUsd) {
|
|
99
|
-
|
|
100
|
-
return {
|
|
101
|
-
baseSize: Number.NaN,
|
|
102
|
-
filledNotional: Number.NaN,
|
|
103
|
-
vwap: Number.NaN,
|
|
104
|
-
insufficientLiquidity: true,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
let remaining = new big_js_1.DivBig(sizeUsd);
|
|
101
|
+
let remaining = (0, decimalStringToBig_js_1.decimalStringToDivBig)(sizeUsd);
|
|
108
102
|
let baseSize = new big_js_1.DivBig(0);
|
|
109
103
|
let filledNotional = new big_js_1.DivBig(0);
|
|
110
104
|
for (const level of levels) {
|
|
111
105
|
if (remaining.lte(0)) {
|
|
112
106
|
break;
|
|
113
107
|
}
|
|
114
|
-
const
|
|
115
|
-
const levelNotional = size.times(price);
|
|
108
|
+
const price = (0, decimalStringToBig_js_1.decimalStringToDivBig)(level.price);
|
|
109
|
+
const levelNotional = (0, decimalStringToBig_js_1.decimalStringToBig)(level.size).times(price);
|
|
116
110
|
const take = remaining.lt(levelNotional) ? remaining : levelNotional;
|
|
117
111
|
if (take.eq(0)) {
|
|
118
112
|
continue;
|
|
@@ -122,57 +116,56 @@ function walkOrderbook(levels, sizeUsd) {
|
|
|
122
116
|
remaining = remaining.minus(take);
|
|
123
117
|
}
|
|
124
118
|
return {
|
|
125
|
-
baseSize:
|
|
126
|
-
filledNotional:
|
|
127
|
-
vwap: baseSize.eq(0)
|
|
119
|
+
baseSize: (0, decimalStringToBig_js_1.bigToDecimalString)(baseSize),
|
|
120
|
+
filledNotional: (0, decimalStringToBig_js_1.bigToDecimalString)(filledNotional),
|
|
121
|
+
vwap: baseSize.eq(0)
|
|
122
|
+
? '0'
|
|
123
|
+
: (0, decimalStringToBig_js_1.bigToDecimalString)(filledNotional.div(baseSize)),
|
|
128
124
|
insufficientLiquidity: remaining.gt(0),
|
|
129
125
|
};
|
|
130
126
|
}
|
|
131
|
-
|
|
132
|
-
try {
|
|
133
|
-
return { price: new big_js_1.DivBig(level.price), size: new big_js_1.DivBig(level.size) };
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
throw new PerpsError_js_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `Malformed orderbook level: price='${level.price}', size='${level.size}'`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
127
|
+
exports.safeWalkOrderbook = (0, createSafeFunction_js_1.createSafeFunction)('walkOrderbook', walkOrderbook);
|
|
139
128
|
function buildQuote(input) {
|
|
140
129
|
const { market, price, side, sizeUsd, feeTier } = input;
|
|
141
|
-
const markPrice =
|
|
130
|
+
const markPrice = (0, decimalStringToBig_js_1.decimalStringToDivBig)(price.markPrice);
|
|
142
131
|
const levels = side === 'buy' ? input.asks : input.bids;
|
|
143
132
|
const walk = walkOrderbook(levels, sizeUsd);
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
133
|
+
const vwap = (0, decimalStringToBig_js_1.decimalStringToBig)(walk.vwap);
|
|
134
|
+
const priceImpactBps = markPrice.eq(0) || vwap.eq(0)
|
|
135
|
+
? '0'
|
|
136
|
+
: (0, decimalStringToBig_js_1.bigToDecimalString)(vwap.minus(markPrice).div(markPrice).abs().times(10_000));
|
|
148
137
|
return {
|
|
149
138
|
provider: input.provider,
|
|
150
139
|
symbol: input.symbol,
|
|
151
140
|
marketId: market.id,
|
|
152
141
|
type: input.type,
|
|
153
142
|
side,
|
|
154
|
-
sizeUsd: (0,
|
|
155
|
-
baseSize:
|
|
143
|
+
sizeUsd: (0, decimalStringToBig_js_1.bigToDecimalString)((0, decimalStringToBig_js_1.decimalStringToBig)(sizeUsd)),
|
|
144
|
+
baseSize: walk.baseSize,
|
|
156
145
|
markPrice: price.markPrice,
|
|
157
|
-
expectedFillPrice:
|
|
158
|
-
priceImpactBps
|
|
146
|
+
expectedFillPrice: walk.vwap,
|
|
147
|
+
priceImpactBps,
|
|
159
148
|
feeTier,
|
|
160
149
|
isDefaultFeeTier: true,
|
|
161
|
-
feeUsd: (
|
|
150
|
+
feeUsd: estimateFees(walk.filledNotional, feeTier.taker),
|
|
162
151
|
funding: price.funding ?? null,
|
|
163
152
|
insufficientLiquidity: walk.insufficientLiquidity,
|
|
164
153
|
timestamp: input.timestamp,
|
|
165
154
|
};
|
|
166
155
|
}
|
|
156
|
+
exports.safeBuildQuote = (0, createSafeFunction_js_1.createSafeFunction)('buildQuote', buildQuote);
|
|
167
157
|
function findMatchingPosition(marketId, positions) {
|
|
168
158
|
return positions.find((p) => p.market.id === marketId);
|
|
169
159
|
}
|
|
170
160
|
function resolveCloseSize(orderSize, positionSize) {
|
|
171
|
-
|
|
172
|
-
|
|
161
|
+
const order = (0, decimalStringToBig_js_1.decimalStringToBig)(orderSize);
|
|
162
|
+
const position = (0, decimalStringToBig_js_1.decimalStringToBig)(positionSize);
|
|
163
|
+
if (order.eq(0)) {
|
|
164
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)(position);
|
|
173
165
|
}
|
|
174
|
-
return
|
|
166
|
+
return (0, decimalStringToBig_js_1.bigToDecimalString)(order.lt(position) ? order : position);
|
|
175
167
|
}
|
|
168
|
+
exports.safeResolveCloseSize = (0, createSafeFunction_js_1.createSafeFunction)('resolveCloseSize', resolveCloseSize);
|
|
176
169
|
function regularOrderRealizedPnl(order, position) {
|
|
177
170
|
if (!position || !(0, orderClassification_js_1.isActiveOrderStatus)(order.status)) {
|
|
178
171
|
return null;
|
|
@@ -183,30 +176,27 @@ function regularOrderRealizedPnl(order, position) {
|
|
|
183
176
|
if (!reducesPosition) {
|
|
184
177
|
return null;
|
|
185
178
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
!Number.isFinite(orderSize) ||
|
|
193
|
-
!Number.isFinite(positionSize) ||
|
|
194
|
-
positionSize <= 0) {
|
|
179
|
+
if (order.price === undefined) {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
const orderSize = (0, decimalStringToBig_js_1.decimalStringToBig)(order.remainingSize).abs();
|
|
183
|
+
const positionSize = (0, decimalStringToBig_js_1.decimalStringToBig)(position.size).abs();
|
|
184
|
+
if (positionSize.lte(0)) {
|
|
195
185
|
return null;
|
|
196
186
|
}
|
|
197
|
-
if (orderSize
|
|
187
|
+
if (orderSize.eq(0)) {
|
|
198
188
|
return null;
|
|
199
189
|
}
|
|
200
|
-
const closeSize = resolveCloseSize(orderSize, positionSize);
|
|
201
190
|
return (0, position_js_1.calculateRealizedPnl)({
|
|
202
|
-
entryPrice,
|
|
203
|
-
closePrice:
|
|
204
|
-
closeSize,
|
|
191
|
+
entryPrice: position.entryPrice,
|
|
192
|
+
closePrice: order.price,
|
|
193
|
+
closeSize: resolveCloseSize((0, decimalStringToBig_js_1.bigToDecimalString)(orderSize), (0, decimalStringToBig_js_1.bigToDecimalString)(positionSize)),
|
|
205
194
|
isLong,
|
|
206
195
|
});
|
|
207
196
|
}
|
|
208
197
|
function triggerOrderRealizedPnl(order, position) {
|
|
209
198
|
if (!position ||
|
|
199
|
+
order.triggerPrice === undefined ||
|
|
210
200
|
!(0, orderClassification_js_1.isActiveOrderStatus)(order.status) ||
|
|
211
201
|
order.status === perps_types_1.OrderStatus.PENDING) {
|
|
212
202
|
return null;
|
|
@@ -216,26 +206,19 @@ function triggerOrderRealizedPnl(order, position) {
|
|
|
216
206
|
(!isLong && order.side !== perps_types_1.OrderSide.BUY)) {
|
|
217
207
|
return null;
|
|
218
208
|
}
|
|
219
|
-
const
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
const positionSize = Math.abs(Number.parseFloat(position.size));
|
|
223
|
-
if (!Number.isFinite(triggerPrice) ||
|
|
224
|
-
!Number.isFinite(entryPrice) ||
|
|
225
|
-
!Number.isFinite(orderSize) ||
|
|
226
|
-
!Number.isFinite(positionSize) ||
|
|
227
|
-
positionSize <= 0) {
|
|
209
|
+
const orderSize = (0, decimalStringToBig_js_1.decimalStringToBig)(order.remainingSize).abs();
|
|
210
|
+
const positionSize = (0, decimalStringToBig_js_1.decimalStringToBig)(position.size).abs();
|
|
211
|
+
if (positionSize.lte(0)) {
|
|
228
212
|
return null;
|
|
229
213
|
}
|
|
230
|
-
if (orderSize
|
|
231
|
-
(
|
|
214
|
+
if (orderSize.eq(0) &&
|
|
215
|
+
(!(0, decimalStringToBig_js_1.decimalStringToBig)(order.originalSize).eq(0) || !order.reduceOnly)) {
|
|
232
216
|
return null;
|
|
233
217
|
}
|
|
234
|
-
const closeSize = resolveCloseSize(orderSize, positionSize);
|
|
235
218
|
return (0, position_js_1.calculateRealizedPnl)({
|
|
236
|
-
entryPrice,
|
|
237
|
-
closePrice: triggerPrice,
|
|
238
|
-
closeSize,
|
|
219
|
+
entryPrice: position.entryPrice,
|
|
220
|
+
closePrice: order.triggerPrice,
|
|
221
|
+
closeSize: resolveCloseSize((0, decimalStringToBig_js_1.bigToDecimalString)(orderSize), (0, decimalStringToBig_js_1.bigToDecimalString)(positionSize)),
|
|
239
222
|
isLong,
|
|
240
223
|
});
|
|
241
224
|
}
|
|
@@ -248,4 +231,5 @@ function estimateRealizedPnl(order, position) {
|
|
|
248
231
|
}
|
|
249
232
|
return null;
|
|
250
233
|
}
|
|
234
|
+
exports.safeEstimateRealizedPnl = (0, createSafeFunction_js_1.createSafeFunction)('estimateRealizedPnl', estimateRealizedPnl);
|
|
251
235
|
//# sourceMappingURL=order.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +1,101 @@
|
|
|
1
|
-
import { type Position } from '@lifi/perps-types';
|
|
2
|
-
|
|
3
|
-
export declare function
|
|
4
|
-
export declare
|
|
5
|
-
export declare function
|
|
1
|
+
import { type PerpsMarket, type Position } from '@lifi/perps-types';
|
|
2
|
+
import type { LiquidationEstimateParams } from '../types/provider.js';
|
|
3
|
+
export declare function calculateNotionalValue(size: string, price: string): string;
|
|
4
|
+
export declare const safeCalculateNotionalValue: (size: string, price: string) => string | undefined;
|
|
5
|
+
export declare function calculateUnrealizedPnl(entryPrice: string, currentPrice: string, size: string): string;
|
|
6
|
+
export declare const safeCalculateUnrealizedPnl: (entryPrice: string, currentPrice: string, size: string) => string | undefined;
|
|
7
|
+
export declare function calculateRoe(pnl: string, margin: string): string;
|
|
8
|
+
export declare const safeCalculateRoe: (pnl: string, margin: string) => string | undefined;
|
|
9
|
+
export declare function calculateRequiredMargin(notionalValue: string, leverage: string): string;
|
|
10
|
+
export declare const safeCalculateRequiredMargin: (notionalValue: string, leverage: string) => string | undefined;
|
|
6
11
|
export declare function calculateLiquidationDistance(params: {
|
|
7
|
-
liquidationPrice:
|
|
8
|
-
currentPrice:
|
|
9
|
-
}):
|
|
12
|
+
liquidationPrice: string;
|
|
13
|
+
currentPrice: string;
|
|
14
|
+
}): string;
|
|
15
|
+
export declare const safeCalculateLiquidationDistance: (params: {
|
|
16
|
+
liquidationPrice: string;
|
|
17
|
+
currentPrice: string;
|
|
18
|
+
}) => string | undefined;
|
|
10
19
|
export declare function calculateEffectiveLeverage(params: {
|
|
11
|
-
positionValueUsd:
|
|
12
|
-
marginUsd:
|
|
13
|
-
}):
|
|
20
|
+
positionValueUsd: string;
|
|
21
|
+
marginUsd: string;
|
|
22
|
+
}): string;
|
|
23
|
+
export declare const safeCalculateEffectiveLeverage: (params: {
|
|
24
|
+
positionValueUsd: string;
|
|
25
|
+
marginUsd: string;
|
|
26
|
+
}) => string | undefined;
|
|
14
27
|
export declare function estimateLiquidationPrice(params: {
|
|
15
|
-
entryPrice:
|
|
16
|
-
leverage:
|
|
28
|
+
entryPrice: string;
|
|
29
|
+
leverage: string;
|
|
17
30
|
isLong: boolean;
|
|
18
|
-
maintenanceMarginRate:
|
|
19
|
-
}):
|
|
31
|
+
maintenanceMarginRate: string;
|
|
32
|
+
}): string | undefined;
|
|
33
|
+
export declare const safeEstimateLiquidationPrice: (params: {
|
|
34
|
+
entryPrice: string;
|
|
35
|
+
leverage: string;
|
|
36
|
+
isLong: boolean;
|
|
37
|
+
maintenanceMarginRate: string;
|
|
38
|
+
}) => string | undefined;
|
|
39
|
+
export declare function estimateLiquidationPriceAtMarketRate(market: PerpsMarket, params: LiquidationEstimateParams): string | undefined;
|
|
40
|
+
export declare const safeEstimateLiquidationPriceAtMarketRate: (market: PerpsMarket, params: LiquidationEstimateParams) => string | undefined;
|
|
20
41
|
export declare function wouldImmediatelyLiquidate(params: {
|
|
21
|
-
liquidationPrice:
|
|
22
|
-
currentPrice:
|
|
42
|
+
liquidationPrice: string;
|
|
43
|
+
currentPrice: string;
|
|
23
44
|
isLong: boolean;
|
|
24
45
|
}): boolean;
|
|
46
|
+
export declare const safeWouldImmediatelyLiquidate: (params: {
|
|
47
|
+
liquidationPrice: string;
|
|
48
|
+
currentPrice: string;
|
|
49
|
+
isLong: boolean;
|
|
50
|
+
}) => boolean | undefined;
|
|
25
51
|
export declare function estimateAverageEntryPrice(params: {
|
|
26
|
-
currentSize:
|
|
27
|
-
currentEntry:
|
|
28
|
-
addSize:
|
|
29
|
-
fillPrice:
|
|
30
|
-
}):
|
|
52
|
+
currentSize: string;
|
|
53
|
+
currentEntry: string;
|
|
54
|
+
addSize: string;
|
|
55
|
+
fillPrice: string;
|
|
56
|
+
}): string | undefined;
|
|
57
|
+
export declare const safeEstimateAverageEntryPrice: (params: {
|
|
58
|
+
currentSize: string;
|
|
59
|
+
currentEntry: string;
|
|
60
|
+
addSize: string;
|
|
61
|
+
fillPrice: string;
|
|
62
|
+
}) => string | undefined;
|
|
31
63
|
export declare function estimateNewLeverage(params: {
|
|
32
|
-
currentNotional:
|
|
33
|
-
currentMargin:
|
|
34
|
-
addNotional:
|
|
35
|
-
addMargin:
|
|
36
|
-
}):
|
|
64
|
+
currentNotional: string;
|
|
65
|
+
currentMargin: string;
|
|
66
|
+
addNotional: string;
|
|
67
|
+
addMargin: string;
|
|
68
|
+
}): string | undefined;
|
|
69
|
+
export declare const safeEstimateNewLeverage: (params: {
|
|
70
|
+
currentNotional: string;
|
|
71
|
+
currentMargin: string;
|
|
72
|
+
addNotional: string;
|
|
73
|
+
addMargin: string;
|
|
74
|
+
}) => string | undefined;
|
|
37
75
|
export declare function estimateUnrealizedPnl(params: {
|
|
38
|
-
entryPrice:
|
|
39
|
-
markPrice:
|
|
40
|
-
size:
|
|
76
|
+
entryPrice: string;
|
|
77
|
+
markPrice: string;
|
|
78
|
+
size: string;
|
|
41
79
|
isLong: boolean;
|
|
42
|
-
}):
|
|
80
|
+
}): string;
|
|
81
|
+
export declare const safeEstimateUnrealizedPnl: (params: {
|
|
82
|
+
entryPrice: string;
|
|
83
|
+
markPrice: string;
|
|
84
|
+
size: string;
|
|
85
|
+
isLong: boolean;
|
|
86
|
+
}) => string | undefined;
|
|
43
87
|
export declare function calculateRealizedPnl(params: {
|
|
44
|
-
entryPrice:
|
|
45
|
-
closePrice:
|
|
46
|
-
closeSize:
|
|
88
|
+
entryPrice: string;
|
|
89
|
+
closePrice: string;
|
|
90
|
+
closeSize: string;
|
|
91
|
+
isLong: boolean;
|
|
92
|
+
}): string;
|
|
93
|
+
export declare const safeCalculateRealizedPnl: (params: {
|
|
94
|
+
entryPrice: string;
|
|
95
|
+
closePrice: string;
|
|
96
|
+
closeSize: string;
|
|
47
97
|
isLong: boolean;
|
|
48
|
-
})
|
|
98
|
+
}) => string | undefined;
|
|
49
99
|
export declare function positionSupportsMarginAdjustment(position: Position): boolean;
|
|
50
100
|
export declare function positionSupportsMarginRemoval(position: Position): boolean;
|
|
51
101
|
//# sourceMappingURL=position.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/math/position.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/math/position.ts"],"names":[],"mappings":"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"}
|