@drift-labs/sdk 2.143.0-beta.1 → 2.143.0-beta.3

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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.143.0-beta.1
1
+ 2.143.0-beta.3
@@ -25,3 +25,12 @@ export declare function isTakingOrder(order: Order, slot: number): boolean;
25
25
  export declare function isSignedMsgOrder(order: Order): boolean;
26
26
  export declare function hasBuilder(order: Order): boolean;
27
27
  export declare function calculateOrderBaseAssetAmount(order: Order, existingBaseAssetAmount: BN): BN;
28
+ /**
29
+ * Invert the size-premium liability weight: given a target margin ratio (liability weight),
30
+ * return the max `size` (AMM_RESERVE_PRECISION units) that still yields <= target.
31
+ *
32
+ * Returns:
33
+ * - BN size (>=0) if bounded
34
+ * - null if impossible (target < liabilityWeight) OR imfFactor == 0 (unbounded)
35
+ */
36
+ export declare function maxSizeForTargetLiabilityWeightBN(target: BN, imfFactor: BN, liabilityWeight: BN): BN | null;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateOrderBaseAssetAmount = exports.hasBuilder = exports.isSignedMsgOrder = exports.isTakingOrder = exports.isRestingLimitOrder = exports.isTriggered = exports.mustBeTriggered = exports.isLimitOrder = exports.isMarketOrder = exports.isOrderExpired = exports.calculateBaseAssetAmountToFillUpToLimitPrice = exports.calculateBaseAssetAmountForAmmToFulfill = exports.isFillableByVAMM = exports.hasAuctionPrice = exports.hasLimitPrice = exports.applyProtectedMakerParams = exports.getLimitPrice = exports.standardizePrice = exports.standardizeBaseAssetAmount = exports.isOrderReduceOnly = exports.isOrderRiskIncreasingInSameDirection = exports.isOrderRiskIncreasing = void 0;
3
+ exports.maxSizeForTargetLiabilityWeightBN = exports.calculateOrderBaseAssetAmount = exports.hasBuilder = exports.isSignedMsgOrder = exports.isTakingOrder = exports.isRestingLimitOrder = exports.isTriggered = exports.mustBeTriggered = exports.isLimitOrder = exports.isMarketOrder = exports.isOrderExpired = exports.calculateBaseAssetAmountToFillUpToLimitPrice = exports.calculateBaseAssetAmountForAmmToFulfill = exports.isFillableByVAMM = exports.hasAuctionPrice = exports.hasLimitPrice = exports.applyProtectedMakerParams = exports.getLimitPrice = exports.standardizePrice = exports.standardizeBaseAssetAmount = exports.isOrderReduceOnly = exports.isOrderRiskIncreasingInSameDirection = exports.isOrderRiskIncreasing = void 0;
4
4
  const types_1 = require("../types");
5
5
  const numericConstants_1 = require("../constants/numericConstants");
6
6
  const anchor_1 = require("@coral-xyz/anchor");
7
7
  const auction_1 = require("./auction");
8
8
  const amm_1 = require("./amm");
9
+ const margin_1 = require("./margin");
9
10
  function isOrderRiskIncreasing(user, order) {
10
11
  if (!(0, types_1.isVariant)(order.status, 'open')) {
11
12
  return false;
@@ -257,3 +258,45 @@ function calculateOrderBaseAssetAmount(order, existingBaseAssetAmount) {
257
258
  }
258
259
  }
259
260
  exports.calculateOrderBaseAssetAmount = calculateOrderBaseAssetAmount;
261
+ // ---------- inverse ----------
262
+ /**
263
+ * Invert the size-premium liability weight: given a target margin ratio (liability weight),
264
+ * return the max `size` (AMM_RESERVE_PRECISION units) that still yields <= target.
265
+ *
266
+ * Returns:
267
+ * - BN size (>=0) if bounded
268
+ * - null if impossible (target < liabilityWeight) OR imfFactor == 0 (unbounded)
269
+ */
270
+ function maxSizeForTargetLiabilityWeightBN(target, imfFactor, liabilityWeight) {
271
+ if (target.lt(liabilityWeight))
272
+ return null;
273
+ if (imfFactor.isZero())
274
+ return null;
275
+ const base = liabilityWeight.muln(4).divn(5);
276
+ const denom = new anchor_1.BN(100000)
277
+ .mul(numericConstants_1.SPOT_MARKET_IMF_PRECISION)
278
+ .div(numericConstants_1.MARGIN_PRECISION);
279
+ if (denom.isZero())
280
+ throw new Error('denom=0: bad precision/spotImfPrecision');
281
+ const allowedInc = target.gt(base) ? target.sub(base) : numericConstants_1.ZERO;
282
+ const maxSqrt = allowedInc.mul(denom).div(imfFactor);
283
+ if (maxSqrt.lte(numericConstants_1.ZERO)) {
284
+ const fitsZero = (0, margin_1.calculateSizePremiumLiabilityWeight)(numericConstants_1.ZERO, imfFactor, liabilityWeight, numericConstants_1.MARGIN_PRECISION).lte(target);
285
+ return fitsZero ? numericConstants_1.ZERO : null;
286
+ }
287
+ let hi = maxSqrt.mul(maxSqrt).sub(numericConstants_1.ONE).divn(10);
288
+ if (hi.isNeg())
289
+ hi = numericConstants_1.ZERO;
290
+ let lo = numericConstants_1.ZERO;
291
+ while (lo.lt(hi)) {
292
+ const mid = lo.add(hi).add(numericConstants_1.ONE).divn(2); // upper mid to prevent infinite loop
293
+ if ((0, margin_1.calculateSizePremiumLiabilityWeight)(mid, imfFactor, liabilityWeight, numericConstants_1.MARGIN_PRECISION).lte(target)) {
294
+ lo = mid;
295
+ }
296
+ else {
297
+ hi = mid.sub(numericConstants_1.ONE);
298
+ }
299
+ }
300
+ return lo;
301
+ }
302
+ exports.maxSizeForTargetLiabilityWeightBN = maxSizeForTargetLiabilityWeightBN;
@@ -369,11 +369,12 @@ export declare class User {
369
369
  perpTier: number;
370
370
  spotTier: number;
371
371
  };
372
- getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, }: {
372
+ getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, includeOpenOrders, }: {
373
373
  marginCategory: MarginCategory;
374
374
  perpPosition: PerpPosition;
375
375
  oraclePriceData?: OraclePriceData;
376
376
  quoteOraclePriceData?: OraclePriceData;
377
+ includeOpenOrders?: boolean;
377
378
  }): HealthComponent;
378
379
  getHealthComponents({ marginCategory, }: {
379
380
  marginCategory: MarginCategory;
@@ -1829,12 +1829,22 @@ class User {
1829
1829
  spotTier: safestSpotTier,
1830
1830
  };
1831
1831
  }
1832
- getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, }) {
1832
+ getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, includeOpenOrders = true, }) {
1833
1833
  const perpMarket = this.driftClient.getPerpMarketAccount(perpPosition.marketIndex);
1834
1834
  const _oraclePriceData = oraclePriceData ||
1835
1835
  this.driftClient.getOracleDataForPerpMarket(perpMarket.marketIndex);
1836
1836
  const oraclePrice = _oraclePriceData.price;
1837
- const { worstCaseBaseAssetAmount: worstCaseBaseAmount, worstCaseLiabilityValue, } = (0, margin_1.calculateWorstCasePerpLiabilityValue)(perpPosition, perpMarket, oraclePrice);
1837
+ let worstCaseBaseAmount;
1838
+ let worstCaseLiabilityValue;
1839
+ if (includeOpenOrders) {
1840
+ const worstCaseIncludeOrders = (0, margin_1.calculateWorstCasePerpLiabilityValue)(perpPosition, perpMarket, oraclePrice);
1841
+ worstCaseBaseAmount = worstCaseIncludeOrders.worstCaseBaseAssetAmount;
1842
+ worstCaseLiabilityValue = worstCaseIncludeOrders.worstCaseLiabilityValue;
1843
+ }
1844
+ else {
1845
+ worstCaseBaseAmount = perpPosition.baseAssetAmount;
1846
+ worstCaseLiabilityValue = (0, margin_1.calculatePerpLiabilityValue)(perpPosition.baseAssetAmount, oraclePrice, (0, types_1.isVariant)(perpMarket.contractType, 'prediction'));
1847
+ }
1838
1848
  const userCustomMargin = Math.max(perpPosition.maxMarginRatio, this.getUserAccount().maxMarginRatio);
1839
1849
  const marginRatio = new anchor_1.BN((0, market_1.calculateMarketMarginRatio)(perpMarket, worstCaseBaseAmount.abs(), marginCategory, userCustomMargin, this.isHighLeverageMode(marginCategory)));
1840
1850
  const _quoteOraclePriceData = quoteOraclePriceData ||
@@ -25,4 +25,13 @@ export declare function isTakingOrder(order: Order, slot: number): boolean;
25
25
  export declare function isSignedMsgOrder(order: Order): boolean;
26
26
  export declare function hasBuilder(order: Order): boolean;
27
27
  export declare function calculateOrderBaseAssetAmount(order: Order, existingBaseAssetAmount: BN): BN;
28
+ /**
29
+ * Invert the size-premium liability weight: given a target margin ratio (liability weight),
30
+ * return the max `size` (AMM_RESERVE_PRECISION units) that still yields <= target.
31
+ *
32
+ * Returns:
33
+ * - BN size (>=0) if bounded
34
+ * - null if impossible (target < liabilityWeight) OR imfFactor == 0 (unbounded)
35
+ */
36
+ export declare function maxSizeForTargetLiabilityWeightBN(target: BN, imfFactor: BN, liabilityWeight: BN): BN | null;
28
37
  //# sourceMappingURL=orders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/math/orders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/math/orders.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateOrderBaseAssetAmount = exports.hasBuilder = exports.isSignedMsgOrder = exports.isTakingOrder = exports.isRestingLimitOrder = exports.isTriggered = exports.mustBeTriggered = exports.isLimitOrder = exports.isMarketOrder = exports.isOrderExpired = exports.calculateBaseAssetAmountToFillUpToLimitPrice = exports.calculateBaseAssetAmountForAmmToFulfill = exports.isFillableByVAMM = exports.hasAuctionPrice = exports.hasLimitPrice = exports.applyProtectedMakerParams = exports.getLimitPrice = exports.standardizePrice = exports.standardizeBaseAssetAmount = exports.isOrderReduceOnly = exports.isOrderRiskIncreasingInSameDirection = exports.isOrderRiskIncreasing = void 0;
3
+ exports.maxSizeForTargetLiabilityWeightBN = exports.calculateOrderBaseAssetAmount = exports.hasBuilder = exports.isSignedMsgOrder = exports.isTakingOrder = exports.isRestingLimitOrder = exports.isTriggered = exports.mustBeTriggered = exports.isLimitOrder = exports.isMarketOrder = exports.isOrderExpired = exports.calculateBaseAssetAmountToFillUpToLimitPrice = exports.calculateBaseAssetAmountForAmmToFulfill = exports.isFillableByVAMM = exports.hasAuctionPrice = exports.hasLimitPrice = exports.applyProtectedMakerParams = exports.getLimitPrice = exports.standardizePrice = exports.standardizeBaseAssetAmount = exports.isOrderReduceOnly = exports.isOrderRiskIncreasingInSameDirection = exports.isOrderRiskIncreasing = void 0;
4
4
  const types_1 = require("../types");
5
5
  const numericConstants_1 = require("../constants/numericConstants");
6
6
  const anchor_1 = require("@coral-xyz/anchor");
7
7
  const auction_1 = require("./auction");
8
8
  const amm_1 = require("./amm");
9
+ const margin_1 = require("./margin");
9
10
  function isOrderRiskIncreasing(user, order) {
10
11
  if (!(0, types_1.isVariant)(order.status, 'open')) {
11
12
  return false;
@@ -257,3 +258,45 @@ function calculateOrderBaseAssetAmount(order, existingBaseAssetAmount) {
257
258
  }
258
259
  }
259
260
  exports.calculateOrderBaseAssetAmount = calculateOrderBaseAssetAmount;
261
+ // ---------- inverse ----------
262
+ /**
263
+ * Invert the size-premium liability weight: given a target margin ratio (liability weight),
264
+ * return the max `size` (AMM_RESERVE_PRECISION units) that still yields <= target.
265
+ *
266
+ * Returns:
267
+ * - BN size (>=0) if bounded
268
+ * - null if impossible (target < liabilityWeight) OR imfFactor == 0 (unbounded)
269
+ */
270
+ function maxSizeForTargetLiabilityWeightBN(target, imfFactor, liabilityWeight) {
271
+ if (target.lt(liabilityWeight))
272
+ return null;
273
+ if (imfFactor.isZero())
274
+ return null;
275
+ const base = liabilityWeight.muln(4).divn(5);
276
+ const denom = new anchor_1.BN(100000)
277
+ .mul(numericConstants_1.SPOT_MARKET_IMF_PRECISION)
278
+ .div(numericConstants_1.MARGIN_PRECISION);
279
+ if (denom.isZero())
280
+ throw new Error('denom=0: bad precision/spotImfPrecision');
281
+ const allowedInc = target.gt(base) ? target.sub(base) : numericConstants_1.ZERO;
282
+ const maxSqrt = allowedInc.mul(denom).div(imfFactor);
283
+ if (maxSqrt.lte(numericConstants_1.ZERO)) {
284
+ const fitsZero = (0, margin_1.calculateSizePremiumLiabilityWeight)(numericConstants_1.ZERO, imfFactor, liabilityWeight, numericConstants_1.MARGIN_PRECISION).lte(target);
285
+ return fitsZero ? numericConstants_1.ZERO : null;
286
+ }
287
+ let hi = maxSqrt.mul(maxSqrt).sub(numericConstants_1.ONE).divn(10);
288
+ if (hi.isNeg())
289
+ hi = numericConstants_1.ZERO;
290
+ let lo = numericConstants_1.ZERO;
291
+ while (lo.lt(hi)) {
292
+ const mid = lo.add(hi).add(numericConstants_1.ONE).divn(2); // upper mid to prevent infinite loop
293
+ if ((0, margin_1.calculateSizePremiumLiabilityWeight)(mid, imfFactor, liabilityWeight, numericConstants_1.MARGIN_PRECISION).lte(target)) {
294
+ lo = mid;
295
+ }
296
+ else {
297
+ hi = mid.sub(numericConstants_1.ONE);
298
+ }
299
+ }
300
+ return lo;
301
+ }
302
+ exports.maxSizeForTargetLiabilityWeightBN = maxSizeForTargetLiabilityWeightBN;
@@ -369,11 +369,12 @@ export declare class User {
369
369
  perpTier: number;
370
370
  spotTier: number;
371
371
  };
372
- getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, }: {
372
+ getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, includeOpenOrders, }: {
373
373
  marginCategory: MarginCategory;
374
374
  perpPosition: PerpPosition;
375
375
  oraclePriceData?: OraclePriceData;
376
376
  quoteOraclePriceData?: OraclePriceData;
377
+ includeOpenOrders?: boolean;
377
378
  }): HealthComponent;
378
379
  getHealthComponents({ marginCategory, }: {
379
380
  marginCategory: MarginCategory;
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/user.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/user.ts"],"names":[],"mappings":"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"}
package/lib/node/user.js CHANGED
@@ -1829,12 +1829,22 @@ class User {
1829
1829
  spotTier: safestSpotTier,
1830
1830
  };
1831
1831
  }
1832
- getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, }) {
1832
+ getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, includeOpenOrders = true, }) {
1833
1833
  const perpMarket = this.driftClient.getPerpMarketAccount(perpPosition.marketIndex);
1834
1834
  const _oraclePriceData = oraclePriceData ||
1835
1835
  this.driftClient.getOracleDataForPerpMarket(perpMarket.marketIndex);
1836
1836
  const oraclePrice = _oraclePriceData.price;
1837
- const { worstCaseBaseAssetAmount: worstCaseBaseAmount, worstCaseLiabilityValue, } = (0, margin_1.calculateWorstCasePerpLiabilityValue)(perpPosition, perpMarket, oraclePrice);
1837
+ let worstCaseBaseAmount;
1838
+ let worstCaseLiabilityValue;
1839
+ if (includeOpenOrders) {
1840
+ const worstCaseIncludeOrders = (0, margin_1.calculateWorstCasePerpLiabilityValue)(perpPosition, perpMarket, oraclePrice);
1841
+ worstCaseBaseAmount = worstCaseIncludeOrders.worstCaseBaseAssetAmount;
1842
+ worstCaseLiabilityValue = worstCaseIncludeOrders.worstCaseLiabilityValue;
1843
+ }
1844
+ else {
1845
+ worstCaseBaseAmount = perpPosition.baseAssetAmount;
1846
+ worstCaseLiabilityValue = (0, margin_1.calculatePerpLiabilityValue)(perpPosition.baseAssetAmount, oraclePrice, (0, types_1.isVariant)(perpMarket.contractType, 'prediction'));
1847
+ }
1838
1848
  const userCustomMargin = Math.max(perpPosition.maxMarginRatio, this.getUserAccount().maxMarginRatio);
1839
1849
  const marginRatio = new anchor_1.BN((0, market_1.calculateMarketMarginRatio)(perpMarket, worstCaseBaseAmount.abs(), marginCategory, userCustomMargin, this.isHighLeverageMode(marginCategory)));
1840
1850
  const _quoteOraclePriceData = quoteOraclePriceData ||
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "2.143.0-beta.1",
3
+ "version": "2.143.0-beta.3",
4
4
  "main": "lib/node/index.js",
5
5
  "types": "lib/node/index.d.ts",
6
6
  "module": "./lib/browser/index.js",
@@ -9,7 +9,13 @@ import {
9
9
  ProtectedMakerParams,
10
10
  MarketTypeStr,
11
11
  } from '../types';
12
- import { ZERO, TWO, ONE } from '../constants/numericConstants';
12
+ import {
13
+ ZERO,
14
+ TWO,
15
+ ONE,
16
+ SPOT_MARKET_IMF_PRECISION,
17
+ MARGIN_PRECISION,
18
+ } from '../constants/numericConstants';
13
19
  import { BN } from '@coral-xyz/anchor';
14
20
  import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
15
21
  import {
@@ -22,6 +28,7 @@ import {
22
28
  calculateMaxBaseAssetAmountToTrade,
23
29
  calculateUpdatedAMM,
24
30
  } from './amm';
31
+ import { calculateSizePremiumLiabilityWeight } from './margin';
25
32
 
26
33
  export function isOrderRiskIncreasing(user: User, order: Order): boolean {
27
34
  if (!isVariant(order.status, 'open')) {
@@ -411,3 +418,65 @@ export function calculateOrderBaseAssetAmount(
411
418
  return BN.min(BN.max(existingBaseAssetAmount, ZERO), order.baseAssetAmount);
412
419
  }
413
420
  }
421
+
422
+ // ---------- inverse ----------
423
+ /**
424
+ * Invert the size-premium liability weight: given a target margin ratio (liability weight),
425
+ * return the max `size` (AMM_RESERVE_PRECISION units) that still yields <= target.
426
+ *
427
+ * Returns:
428
+ * - BN size (>=0) if bounded
429
+ * - null if impossible (target < liabilityWeight) OR imfFactor == 0 (unbounded)
430
+ */
431
+ export function maxSizeForTargetLiabilityWeightBN(
432
+ target: BN,
433
+ imfFactor: BN,
434
+ liabilityWeight: BN
435
+ ): BN | null {
436
+ if (target.lt(liabilityWeight)) return null;
437
+ if (imfFactor.isZero()) return null;
438
+
439
+ const base = liabilityWeight.muln(4).divn(5);
440
+
441
+ const denom = new BN(100_000)
442
+ .mul(SPOT_MARKET_IMF_PRECISION)
443
+ .div(MARGIN_PRECISION);
444
+ if (denom.isZero())
445
+ throw new Error('denom=0: bad precision/spotImfPrecision');
446
+
447
+ const allowedInc = target.gt(base) ? target.sub(base) : ZERO;
448
+
449
+ const maxSqrt = allowedInc.mul(denom).div(imfFactor);
450
+
451
+ if (maxSqrt.lte(ZERO)) {
452
+ const fitsZero = calculateSizePremiumLiabilityWeight(
453
+ ZERO,
454
+ imfFactor,
455
+ liabilityWeight,
456
+ MARGIN_PRECISION
457
+ ).lte(target);
458
+ return fitsZero ? ZERO : null;
459
+ }
460
+
461
+ let hi = maxSqrt.mul(maxSqrt).sub(ONE).divn(10);
462
+ if (hi.isNeg()) hi = ZERO;
463
+
464
+ let lo = ZERO;
465
+ while (lo.lt(hi)) {
466
+ const mid = lo.add(hi).add(ONE).divn(2); // upper mid to prevent infinite loop
467
+ if (
468
+ calculateSizePremiumLiabilityWeight(
469
+ mid,
470
+ imfFactor,
471
+ liabilityWeight,
472
+ MARGIN_PRECISION
473
+ ).lte(target)
474
+ ) {
475
+ lo = mid;
476
+ } else {
477
+ hi = mid.sub(ONE);
478
+ }
479
+ }
480
+
481
+ return lo;
482
+ }
package/src/user.ts CHANGED
@@ -3590,11 +3590,13 @@ export class User {
3590
3590
  perpPosition,
3591
3591
  oraclePriceData,
3592
3592
  quoteOraclePriceData,
3593
+ includeOpenOrders = true,
3593
3594
  }: {
3594
3595
  marginCategory: MarginCategory;
3595
3596
  perpPosition: PerpPosition;
3596
3597
  oraclePriceData?: OraclePriceData;
3597
3598
  quoteOraclePriceData?: OraclePriceData;
3599
+ includeOpenOrders?: boolean;
3598
3600
  }): HealthComponent {
3599
3601
  const perpMarket = this.driftClient.getPerpMarketAccount(
3600
3602
  perpPosition.marketIndex
@@ -3603,14 +3605,25 @@ export class User {
3603
3605
  oraclePriceData ||
3604
3606
  this.driftClient.getOracleDataForPerpMarket(perpMarket.marketIndex);
3605
3607
  const oraclePrice = _oraclePriceData.price;
3606
- const {
3607
- worstCaseBaseAssetAmount: worstCaseBaseAmount,
3608
- worstCaseLiabilityValue,
3609
- } = calculateWorstCasePerpLiabilityValue(
3610
- perpPosition,
3611
- perpMarket,
3612
- oraclePrice
3613
- );
3608
+
3609
+ let worstCaseBaseAmount;
3610
+ let worstCaseLiabilityValue;
3611
+ if (includeOpenOrders) {
3612
+ const worstCaseIncludeOrders = calculateWorstCasePerpLiabilityValue(
3613
+ perpPosition,
3614
+ perpMarket,
3615
+ oraclePrice
3616
+ );
3617
+ worstCaseBaseAmount = worstCaseIncludeOrders.worstCaseBaseAssetAmount;
3618
+ worstCaseLiabilityValue = worstCaseIncludeOrders.worstCaseLiabilityValue;
3619
+ } else {
3620
+ worstCaseBaseAmount = perpPosition.baseAssetAmount;
3621
+ worstCaseLiabilityValue = calculatePerpLiabilityValue(
3622
+ perpPosition.baseAssetAmount,
3623
+ oraclePrice,
3624
+ isVariant(perpMarket.contractType, 'prediction')
3625
+ );
3626
+ }
3614
3627
 
3615
3628
  const userCustomMargin = Math.max(
3616
3629
  perpPosition.maxMarginRatio,