@drift-labs/sdk 2.121.0-beta.23 → 2.121.0-beta.25
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 +1 -1
- package/lib/browser/constants/spotMarkets.js +27 -1
- package/lib/browser/user.d.ts +6 -6
- package/lib/browser/user.js +14 -14
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +27 -1
- package/lib/node/user.d.ts +6 -6
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +14 -14
- package/package.json +1 -1
- package/src/constants/spotMarkets.ts +29 -1
- package/src/user.ts +26 -14
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.121.0-beta.
|
|
1
|
+
2.121.0-beta.25
|
|
@@ -84,7 +84,7 @@ exports.DevnetSpotMarkets = [
|
|
|
84
84
|
marketIndex: 6,
|
|
85
85
|
poolId: 1,
|
|
86
86
|
oracle: new web3_js_1.PublicKey('En8hkHLkRe9d9DraYmBTrus518BvmVH448YcvmrFM6Ce'),
|
|
87
|
-
oracleSource: __1.OracleSource.
|
|
87
|
+
oracleSource: __1.OracleSource.PYTH_STABLE_COIN_PULL,
|
|
88
88
|
mint: new web3_js_1.PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
|
|
89
89
|
precision: new __1.BN(10).pow(numericConstants_1.SIX),
|
|
90
90
|
precisionExp: numericConstants_1.SIX,
|
|
@@ -677,6 +677,32 @@ exports.MainnetSpotMarkets = [
|
|
|
677
677
|
pythFeedId: '0x31558e9ccb18c151af6c52bf78afd03098a7aca1b9cf171a65b693b464c2f066',
|
|
678
678
|
launchTs: 1747155600000,
|
|
679
679
|
},
|
|
680
|
+
{
|
|
681
|
+
symbol: 'USDC-4',
|
|
682
|
+
marketIndex: 47,
|
|
683
|
+
poolId: 4,
|
|
684
|
+
oracle: new web3_js_1.PublicKey('9VCioxmni2gDLv11qufWzT3RDERhQE4iY5Gf7NTfYyAV'),
|
|
685
|
+
oracleSource: __1.OracleSource.PYTH_LAZER_STABLE_COIN,
|
|
686
|
+
mint: new web3_js_1.PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
|
|
687
|
+
precision: numericConstants_1.QUOTE_PRECISION,
|
|
688
|
+
precisionExp: numericConstants_1.QUOTE_PRECISION_EXP,
|
|
689
|
+
pythFeedId: '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
|
690
|
+
pythLazerId: 7,
|
|
691
|
+
launchTs: 1747494165000,
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
symbol: 'USDT-4',
|
|
695
|
+
marketIndex: 48,
|
|
696
|
+
poolId: 4,
|
|
697
|
+
oracle: new web3_js_1.PublicKey('JDKJSkxjasBGL3ce1pkrN6tqDzuVUZPWzzkGuyX8m9yN'),
|
|
698
|
+
oracleSource: __1.OracleSource.PYTH_LAZER_STABLE_COIN,
|
|
699
|
+
mint: new web3_js_1.PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'),
|
|
700
|
+
precision: numericConstants_1.QUOTE_PRECISION,
|
|
701
|
+
precisionExp: numericConstants_1.QUOTE_PRECISION_EXP,
|
|
702
|
+
serumMarket: new web3_js_1.PublicKey('B2na8Awyd7cpC59iEU43FagJAPLigr3AP3s38KM982bu'),
|
|
703
|
+
pythFeedId: '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b',
|
|
704
|
+
pythLazerId: 8,
|
|
705
|
+
},
|
|
680
706
|
];
|
|
681
707
|
exports.SpotMarkets = {
|
|
682
708
|
devnet: exports.DevnetSpotMarkets,
|
package/lib/browser/user.d.ts
CHANGED
|
@@ -111,7 +111,7 @@ export declare class User {
|
|
|
111
111
|
/**
|
|
112
112
|
* @returns The margin requirement of a certain type (Initial or Maintenance) in USDC. : QUOTE_PRECISION
|
|
113
113
|
*/
|
|
114
|
-
getMarginRequirement(marginCategory: MarginCategory, liquidationBuffer?: BN, strict?: boolean, includeOpenOrders?: boolean): BN;
|
|
114
|
+
getMarginRequirement(marginCategory: MarginCategory, liquidationBuffer?: BN, strict?: boolean, includeOpenOrders?: boolean, enteringHighLeverage?: boolean): BN;
|
|
115
115
|
/**
|
|
116
116
|
* @returns The initial margin requirement in USDC. : QUOTE_PRECISION
|
|
117
117
|
*/
|
|
@@ -165,7 +165,7 @@ export declare class User {
|
|
|
165
165
|
* @returns : number (value from [0, 100])
|
|
166
166
|
*/
|
|
167
167
|
getHealth(): number;
|
|
168
|
-
calculateWeightedPerpPositionLiability(perpPosition: PerpPosition, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
|
|
168
|
+
calculateWeightedPerpPositionLiability(perpPosition: PerpPosition, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean, enteringHighLeverage?: boolean): BN;
|
|
169
169
|
/**
|
|
170
170
|
* calculates position value of a single perp market in margin system
|
|
171
171
|
* @returns : Precision QUOTE_PRECISION
|
|
@@ -175,7 +175,7 @@ export declare class User {
|
|
|
175
175
|
* calculates sum of position value across all positions in margin system
|
|
176
176
|
* @returns : Precision QUOTE_PRECISION
|
|
177
177
|
*/
|
|
178
|
-
getTotalPerpPositionLiability(marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
|
|
178
|
+
getTotalPerpPositionLiability(marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean, enteringHighLeverage?: boolean): BN;
|
|
179
179
|
/**
|
|
180
180
|
* calculates position value based on oracle
|
|
181
181
|
* @returns : Precision QUOTE_PRECISION
|
|
@@ -271,9 +271,9 @@ export declare class User {
|
|
|
271
271
|
* @param offsetCollateral // allows calculating the liquidation price after this offset collateral is added to the user's account (e.g. : what will the liquidation price be for this position AFTER I deposit $x worth of collateral)
|
|
272
272
|
* @returns Precision : PRICE_PRECISION
|
|
273
273
|
*/
|
|
274
|
-
liquidationPrice(marketIndex: number, positionBaseSizeChange?: BN, estimatedEntryPrice?: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean, offsetCollateral?: BN): BN;
|
|
275
|
-
calculateEntriesEffectOnFreeCollateral(market: PerpMarketAccount, oraclePrice: BN, perpPosition: PerpPosition, positionBaseSizeChange: BN, estimatedEntryPrice: BN, includeOpenOrders: boolean): BN;
|
|
276
|
-
calculateFreeCollateralDeltaForPerp(market: PerpMarketAccount, perpPosition: PerpPosition, positionBaseSizeChange: BN, oraclePrice: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean): BN | undefined;
|
|
274
|
+
liquidationPrice(marketIndex: number, positionBaseSizeChange?: BN, estimatedEntryPrice?: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean, offsetCollateral?: BN, enteringHighLeverage?: boolean): BN;
|
|
275
|
+
calculateEntriesEffectOnFreeCollateral(market: PerpMarketAccount, oraclePrice: BN, perpPosition: PerpPosition, positionBaseSizeChange: BN, estimatedEntryPrice: BN, includeOpenOrders: boolean, enteringHighLeverage?: boolean): BN;
|
|
276
|
+
calculateFreeCollateralDeltaForPerp(market: PerpMarketAccount, perpPosition: PerpPosition, positionBaseSizeChange: BN, oraclePrice: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean, enteringHighLeverage?: boolean): BN | undefined;
|
|
277
277
|
calculateFreeCollateralDeltaForSpot(market: SpotMarketAccount, signedTokenAmount: BN, marginCategory?: MarginCategory): BN;
|
|
278
278
|
/**
|
|
279
279
|
* Calculates the estimated liquidation price for a position after closing a quote amount of the position.
|
package/lib/browser/user.js
CHANGED
|
@@ -445,8 +445,8 @@ class User {
|
|
|
445
445
|
/**
|
|
446
446
|
* @returns The margin requirement of a certain type (Initial or Maintenance) in USDC. : QUOTE_PRECISION
|
|
447
447
|
*/
|
|
448
|
-
getMarginRequirement(marginCategory, liquidationBuffer, strict = false, includeOpenOrders = true) {
|
|
449
|
-
return this.getTotalPerpPositionLiability(marginCategory, liquidationBuffer, includeOpenOrders, strict).add(this.getSpotMarketLiabilityValue(undefined, marginCategory, liquidationBuffer, includeOpenOrders, strict));
|
|
448
|
+
getMarginRequirement(marginCategory, liquidationBuffer, strict = false, includeOpenOrders = true, enteringHighLeverage = false) {
|
|
449
|
+
return this.getTotalPerpPositionLiability(marginCategory, liquidationBuffer, includeOpenOrders, strict, enteringHighLeverage).add(this.getSpotMarketLiabilityValue(undefined, marginCategory, liquidationBuffer, includeOpenOrders, strict));
|
|
450
450
|
}
|
|
451
451
|
/**
|
|
452
452
|
* @returns The initial margin requirement in USDC. : QUOTE_PRECISION
|
|
@@ -739,7 +739,7 @@ class User {
|
|
|
739
739
|
}
|
|
740
740
|
return health;
|
|
741
741
|
}
|
|
742
|
-
calculateWeightedPerpPositionLiability(perpPosition, marginCategory, liquidationBuffer, includeOpenOrders, strict = false) {
|
|
742
|
+
calculateWeightedPerpPositionLiability(perpPosition, marginCategory, liquidationBuffer, includeOpenOrders, strict = false, enteringHighLeverage = false) {
|
|
743
743
|
const market = this.driftClient.getPerpMarketAccount(perpPosition.marketIndex);
|
|
744
744
|
if (perpPosition.lpShares.gt(numericConstants_1.ZERO)) {
|
|
745
745
|
// is an lp, clone so we dont mutate the position
|
|
@@ -761,7 +761,7 @@ class User {
|
|
|
761
761
|
liabilityValue = (0, _1.calculatePerpLiabilityValue)(baseAssetAmount, valuationPrice, (0, types_1.isVariant)(market.contractType, 'prediction'));
|
|
762
762
|
}
|
|
763
763
|
if (marginCategory) {
|
|
764
|
-
let marginRatio = new _1.BN((0, _1.calculateMarketMarginRatio)(market, baseAssetAmount.abs(), marginCategory, this.getUserAccount().maxMarginRatio, this.isHighLeverageMode()));
|
|
764
|
+
let marginRatio = new _1.BN((0, _1.calculateMarketMarginRatio)(market, baseAssetAmount.abs(), marginCategory, this.getUserAccount().maxMarginRatio, this.isHighLeverageMode() || enteringHighLeverage));
|
|
765
765
|
if (liquidationBuffer !== undefined) {
|
|
766
766
|
marginRatio = marginRatio.add(liquidationBuffer);
|
|
767
767
|
}
|
|
@@ -807,9 +807,9 @@ class User {
|
|
|
807
807
|
* calculates sum of position value across all positions in margin system
|
|
808
808
|
* @returns : Precision QUOTE_PRECISION
|
|
809
809
|
*/
|
|
810
|
-
getTotalPerpPositionLiability(marginCategory, liquidationBuffer, includeOpenOrders, strict = false) {
|
|
810
|
+
getTotalPerpPositionLiability(marginCategory, liquidationBuffer, includeOpenOrders, strict = false, enteringHighLeverage = false) {
|
|
811
811
|
return this.getActivePerpPositions().reduce((totalPerpValue, perpPosition) => {
|
|
812
|
-
const baseAssetValue = this.calculateWeightedPerpPositionLiability(perpPosition, marginCategory, liquidationBuffer, includeOpenOrders, strict);
|
|
812
|
+
const baseAssetValue = this.calculateWeightedPerpPositionLiability(perpPosition, marginCategory, liquidationBuffer, includeOpenOrders, strict, enteringHighLeverage);
|
|
813
813
|
return totalPerpValue.add(baseAssetValue);
|
|
814
814
|
}, numericConstants_1.ZERO);
|
|
815
815
|
}
|
|
@@ -1190,9 +1190,9 @@ class User {
|
|
|
1190
1190
|
* @param offsetCollateral // allows calculating the liquidation price after this offset collateral is added to the user's account (e.g. : what will the liquidation price be for this position AFTER I deposit $x worth of collateral)
|
|
1191
1191
|
* @returns Precision : PRICE_PRECISION
|
|
1192
1192
|
*/
|
|
1193
|
-
liquidationPrice(marketIndex, positionBaseSizeChange = numericConstants_1.ZERO, estimatedEntryPrice = numericConstants_1.ZERO, marginCategory = 'Maintenance', includeOpenOrders = false, offsetCollateral = numericConstants_1.ZERO) {
|
|
1193
|
+
liquidationPrice(marketIndex, positionBaseSizeChange = numericConstants_1.ZERO, estimatedEntryPrice = numericConstants_1.ZERO, marginCategory = 'Maintenance', includeOpenOrders = false, offsetCollateral = numericConstants_1.ZERO, enteringHighLeverage = false) {
|
|
1194
1194
|
const totalCollateral = this.getTotalCollateral(marginCategory, false, includeOpenOrders);
|
|
1195
|
-
const marginRequirement = this.getMarginRequirement(marginCategory, undefined, false, includeOpenOrders);
|
|
1195
|
+
const marginRequirement = this.getMarginRequirement(marginCategory, undefined, false, includeOpenOrders, enteringHighLeverage);
|
|
1196
1196
|
let freeCollateral = _1.BN.max(numericConstants_1.ZERO, totalCollateral.sub(marginRequirement)).add(offsetCollateral);
|
|
1197
1197
|
const oracle = this.driftClient.getPerpMarketAccount(marketIndex).amm.oracle;
|
|
1198
1198
|
const oraclePrice = this.driftClient.getOracleDataForPerpMarket(marketIndex).price;
|
|
@@ -1200,9 +1200,9 @@ class User {
|
|
|
1200
1200
|
const currentPerpPosition = this.getPerpPositionWithLPSettle(marketIndex, undefined, true)[0] ||
|
|
1201
1201
|
this.getEmptyPosition(marketIndex);
|
|
1202
1202
|
positionBaseSizeChange = (0, _1.standardizeBaseAssetAmount)(positionBaseSizeChange, market.amm.orderStepSize);
|
|
1203
|
-
const freeCollateralChangeFromNewPosition = this.calculateEntriesEffectOnFreeCollateral(market, oraclePrice, currentPerpPosition, positionBaseSizeChange, estimatedEntryPrice, includeOpenOrders);
|
|
1203
|
+
const freeCollateralChangeFromNewPosition = this.calculateEntriesEffectOnFreeCollateral(market, oraclePrice, currentPerpPosition, positionBaseSizeChange, estimatedEntryPrice, includeOpenOrders, enteringHighLeverage);
|
|
1204
1204
|
freeCollateral = freeCollateral.add(freeCollateralChangeFromNewPosition);
|
|
1205
|
-
let freeCollateralDelta = this.calculateFreeCollateralDeltaForPerp(market, currentPerpPosition, positionBaseSizeChange, oraclePrice, marginCategory, includeOpenOrders);
|
|
1205
|
+
let freeCollateralDelta = this.calculateFreeCollateralDeltaForPerp(market, currentPerpPosition, positionBaseSizeChange, oraclePrice, marginCategory, includeOpenOrders, enteringHighLeverage);
|
|
1206
1206
|
if (!freeCollateralDelta) {
|
|
1207
1207
|
return new _1.BN(-1);
|
|
1208
1208
|
}
|
|
@@ -1235,7 +1235,7 @@ class User {
|
|
|
1235
1235
|
}
|
|
1236
1236
|
return liqPrice;
|
|
1237
1237
|
}
|
|
1238
|
-
calculateEntriesEffectOnFreeCollateral(market, oraclePrice, perpPosition, positionBaseSizeChange, estimatedEntryPrice, includeOpenOrders) {
|
|
1238
|
+
calculateEntriesEffectOnFreeCollateral(market, oraclePrice, perpPosition, positionBaseSizeChange, estimatedEntryPrice, includeOpenOrders, enteringHighLeverage = false) {
|
|
1239
1239
|
let freeCollateralChange = numericConstants_1.ZERO;
|
|
1240
1240
|
// update free collateral to account for change in pnl from new position
|
|
1241
1241
|
if (!estimatedEntryPrice.eq(numericConstants_1.ZERO) && !positionBaseSizeChange.eq(numericConstants_1.ZERO)) {
|
|
@@ -1270,7 +1270,7 @@ class User {
|
|
|
1270
1270
|
baseAssetAmount = perpPosition.baseAssetAmount;
|
|
1271
1271
|
liabilityValue = (0, _1.calculatePerpLiabilityValue)(baseAssetAmount, oraclePrice, (0, types_1.isVariant)(market.contractType, 'prediction'));
|
|
1272
1272
|
}
|
|
1273
|
-
const marginRatio = (0, _1.calculateMarketMarginRatio)(market, baseAssetAmount.abs(), 'Maintenance', this.getUserAccount().maxMarginRatio, this.isHighLeverageMode());
|
|
1273
|
+
const marginRatio = (0, _1.calculateMarketMarginRatio)(market, baseAssetAmount.abs(), 'Maintenance', this.getUserAccount().maxMarginRatio, this.isHighLeverageMode() || enteringHighLeverage);
|
|
1274
1274
|
return liabilityValue.mul(new _1.BN(marginRatio)).div(numericConstants_1.MARGIN_PRECISION);
|
|
1275
1275
|
};
|
|
1276
1276
|
const freeCollateralConsumptionBefore = calculateMarginRequirement(perpPosition);
|
|
@@ -1279,14 +1279,14 @@ class User {
|
|
|
1279
1279
|
const freeCollateralConsumptionAfter = calculateMarginRequirement(perpPositionAfter);
|
|
1280
1280
|
return freeCollateralChange.sub(freeCollateralConsumptionAfter.sub(freeCollateralConsumptionBefore));
|
|
1281
1281
|
}
|
|
1282
|
-
calculateFreeCollateralDeltaForPerp(market, perpPosition, positionBaseSizeChange, oraclePrice, marginCategory = 'Maintenance', includeOpenOrders = false) {
|
|
1282
|
+
calculateFreeCollateralDeltaForPerp(market, perpPosition, positionBaseSizeChange, oraclePrice, marginCategory = 'Maintenance', includeOpenOrders = false, enteringHighLeverage = false) {
|
|
1283
1283
|
const baseAssetAmount = includeOpenOrders
|
|
1284
1284
|
? (0, margin_1.calculateWorstCaseBaseAssetAmount)(perpPosition, market, oraclePrice)
|
|
1285
1285
|
: perpPosition.baseAssetAmount;
|
|
1286
1286
|
// zero if include orders == false
|
|
1287
1287
|
const orderBaseAssetAmount = baseAssetAmount.sub(perpPosition.baseAssetAmount);
|
|
1288
1288
|
const proposedBaseAssetAmount = baseAssetAmount.add(positionBaseSizeChange);
|
|
1289
|
-
const marginRatio = (0, _1.calculateMarketMarginRatio)(market, proposedBaseAssetAmount.abs(), marginCategory, this.getUserAccount().maxMarginRatio, this.isHighLeverageMode());
|
|
1289
|
+
const marginRatio = (0, _1.calculateMarketMarginRatio)(market, proposedBaseAssetAmount.abs(), marginCategory, this.getUserAccount().maxMarginRatio, this.isHighLeverageMode() || enteringHighLeverage);
|
|
1290
1290
|
const marginRatioQuotePrecision = new _1.BN(marginRatio)
|
|
1291
1291
|
.mul(numericConstants_1.QUOTE_PRECISION)
|
|
1292
1292
|
.div(numericConstants_1.MARGIN_PRECISION);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotMarkets.d.ts","sourceRoot":"","sources":["../../../src/constants/spotMarkets.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AAYjD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,EAAE,CAAC;IACd,YAAY,EAAE,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,EA+F/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"spotMarkets.d.ts","sourceRoot":"","sources":["../../../src/constants/spotMarkets.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AAYjD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,EAAE,CAAC;IACd,YAAY,EAAE,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,EA+F/C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EA+qBhD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE;KAAG,GAAG,IAAI,QAAQ,GAAG,gBAAgB,EAAE;CAGhE,CAAC"}
|
|
@@ -84,7 +84,7 @@ exports.DevnetSpotMarkets = [
|
|
|
84
84
|
marketIndex: 6,
|
|
85
85
|
poolId: 1,
|
|
86
86
|
oracle: new web3_js_1.PublicKey('En8hkHLkRe9d9DraYmBTrus518BvmVH448YcvmrFM6Ce'),
|
|
87
|
-
oracleSource: __1.OracleSource.
|
|
87
|
+
oracleSource: __1.OracleSource.PYTH_STABLE_COIN_PULL,
|
|
88
88
|
mint: new web3_js_1.PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
|
|
89
89
|
precision: new __1.BN(10).pow(numericConstants_1.SIX),
|
|
90
90
|
precisionExp: numericConstants_1.SIX,
|
|
@@ -677,6 +677,32 @@ exports.MainnetSpotMarkets = [
|
|
|
677
677
|
pythFeedId: '0x31558e9ccb18c151af6c52bf78afd03098a7aca1b9cf171a65b693b464c2f066',
|
|
678
678
|
launchTs: 1747155600000,
|
|
679
679
|
},
|
|
680
|
+
{
|
|
681
|
+
symbol: 'USDC-4',
|
|
682
|
+
marketIndex: 47,
|
|
683
|
+
poolId: 4,
|
|
684
|
+
oracle: new web3_js_1.PublicKey('9VCioxmni2gDLv11qufWzT3RDERhQE4iY5Gf7NTfYyAV'),
|
|
685
|
+
oracleSource: __1.OracleSource.PYTH_LAZER_STABLE_COIN,
|
|
686
|
+
mint: new web3_js_1.PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
|
|
687
|
+
precision: numericConstants_1.QUOTE_PRECISION,
|
|
688
|
+
precisionExp: numericConstants_1.QUOTE_PRECISION_EXP,
|
|
689
|
+
pythFeedId: '0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
|
690
|
+
pythLazerId: 7,
|
|
691
|
+
launchTs: 1747494165000,
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
symbol: 'USDT-4',
|
|
695
|
+
marketIndex: 48,
|
|
696
|
+
poolId: 4,
|
|
697
|
+
oracle: new web3_js_1.PublicKey('JDKJSkxjasBGL3ce1pkrN6tqDzuVUZPWzzkGuyX8m9yN'),
|
|
698
|
+
oracleSource: __1.OracleSource.PYTH_LAZER_STABLE_COIN,
|
|
699
|
+
mint: new web3_js_1.PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'),
|
|
700
|
+
precision: numericConstants_1.QUOTE_PRECISION,
|
|
701
|
+
precisionExp: numericConstants_1.QUOTE_PRECISION_EXP,
|
|
702
|
+
serumMarket: new web3_js_1.PublicKey('B2na8Awyd7cpC59iEU43FagJAPLigr3AP3s38KM982bu'),
|
|
703
|
+
pythFeedId: '0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b',
|
|
704
|
+
pythLazerId: 8,
|
|
705
|
+
},
|
|
680
706
|
];
|
|
681
707
|
exports.SpotMarkets = {
|
|
682
708
|
devnet: exports.DevnetSpotMarkets,
|
package/lib/node/user.d.ts
CHANGED
|
@@ -111,7 +111,7 @@ export declare class User {
|
|
|
111
111
|
/**
|
|
112
112
|
* @returns The margin requirement of a certain type (Initial or Maintenance) in USDC. : QUOTE_PRECISION
|
|
113
113
|
*/
|
|
114
|
-
getMarginRequirement(marginCategory: MarginCategory, liquidationBuffer?: BN, strict?: boolean, includeOpenOrders?: boolean): BN;
|
|
114
|
+
getMarginRequirement(marginCategory: MarginCategory, liquidationBuffer?: BN, strict?: boolean, includeOpenOrders?: boolean, enteringHighLeverage?: boolean): BN;
|
|
115
115
|
/**
|
|
116
116
|
* @returns The initial margin requirement in USDC. : QUOTE_PRECISION
|
|
117
117
|
*/
|
|
@@ -165,7 +165,7 @@ export declare class User {
|
|
|
165
165
|
* @returns : number (value from [0, 100])
|
|
166
166
|
*/
|
|
167
167
|
getHealth(): number;
|
|
168
|
-
calculateWeightedPerpPositionLiability(perpPosition: PerpPosition, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
|
|
168
|
+
calculateWeightedPerpPositionLiability(perpPosition: PerpPosition, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean, enteringHighLeverage?: boolean): BN;
|
|
169
169
|
/**
|
|
170
170
|
* calculates position value of a single perp market in margin system
|
|
171
171
|
* @returns : Precision QUOTE_PRECISION
|
|
@@ -175,7 +175,7 @@ export declare class User {
|
|
|
175
175
|
* calculates sum of position value across all positions in margin system
|
|
176
176
|
* @returns : Precision QUOTE_PRECISION
|
|
177
177
|
*/
|
|
178
|
-
getTotalPerpPositionLiability(marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
|
|
178
|
+
getTotalPerpPositionLiability(marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean, enteringHighLeverage?: boolean): BN;
|
|
179
179
|
/**
|
|
180
180
|
* calculates position value based on oracle
|
|
181
181
|
* @returns : Precision QUOTE_PRECISION
|
|
@@ -271,9 +271,9 @@ export declare class User {
|
|
|
271
271
|
* @param offsetCollateral // allows calculating the liquidation price after this offset collateral is added to the user's account (e.g. : what will the liquidation price be for this position AFTER I deposit $x worth of collateral)
|
|
272
272
|
* @returns Precision : PRICE_PRECISION
|
|
273
273
|
*/
|
|
274
|
-
liquidationPrice(marketIndex: number, positionBaseSizeChange?: BN, estimatedEntryPrice?: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean, offsetCollateral?: BN): BN;
|
|
275
|
-
calculateEntriesEffectOnFreeCollateral(market: PerpMarketAccount, oraclePrice: BN, perpPosition: PerpPosition, positionBaseSizeChange: BN, estimatedEntryPrice: BN, includeOpenOrders: boolean): BN;
|
|
276
|
-
calculateFreeCollateralDeltaForPerp(market: PerpMarketAccount, perpPosition: PerpPosition, positionBaseSizeChange: BN, oraclePrice: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean): BN | undefined;
|
|
274
|
+
liquidationPrice(marketIndex: number, positionBaseSizeChange?: BN, estimatedEntryPrice?: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean, offsetCollateral?: BN, enteringHighLeverage?: boolean): BN;
|
|
275
|
+
calculateEntriesEffectOnFreeCollateral(market: PerpMarketAccount, oraclePrice: BN, perpPosition: PerpPosition, positionBaseSizeChange: BN, estimatedEntryPrice: BN, includeOpenOrders: boolean, enteringHighLeverage?: boolean): BN;
|
|
276
|
+
calculateFreeCollateralDeltaForPerp(market: PerpMarketAccount, perpPosition: PerpPosition, positionBaseSizeChange: BN, oraclePrice: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean, enteringHighLeverage?: boolean): BN | undefined;
|
|
277
277
|
calculateFreeCollateralDeltaForSpot(market: SpotMarketAccount, signedTokenAmount: BN, marginCategory?: MarginCategory): BN;
|
|
278
278
|
/**
|
|
279
279
|
* Calculates the estimated liquidation price for a position after closing a quote amount of the position.
|
package/lib/node/user.d.ts.map
CHANGED
|
@@ -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
|
@@ -445,8 +445,8 @@ class User {
|
|
|
445
445
|
/**
|
|
446
446
|
* @returns The margin requirement of a certain type (Initial or Maintenance) in USDC. : QUOTE_PRECISION
|
|
447
447
|
*/
|
|
448
|
-
getMarginRequirement(marginCategory, liquidationBuffer, strict = false, includeOpenOrders = true) {
|
|
449
|
-
return this.getTotalPerpPositionLiability(marginCategory, liquidationBuffer, includeOpenOrders, strict).add(this.getSpotMarketLiabilityValue(undefined, marginCategory, liquidationBuffer, includeOpenOrders, strict));
|
|
448
|
+
getMarginRequirement(marginCategory, liquidationBuffer, strict = false, includeOpenOrders = true, enteringHighLeverage = false) {
|
|
449
|
+
return this.getTotalPerpPositionLiability(marginCategory, liquidationBuffer, includeOpenOrders, strict, enteringHighLeverage).add(this.getSpotMarketLiabilityValue(undefined, marginCategory, liquidationBuffer, includeOpenOrders, strict));
|
|
450
450
|
}
|
|
451
451
|
/**
|
|
452
452
|
* @returns The initial margin requirement in USDC. : QUOTE_PRECISION
|
|
@@ -739,7 +739,7 @@ class User {
|
|
|
739
739
|
}
|
|
740
740
|
return health;
|
|
741
741
|
}
|
|
742
|
-
calculateWeightedPerpPositionLiability(perpPosition, marginCategory, liquidationBuffer, includeOpenOrders, strict = false) {
|
|
742
|
+
calculateWeightedPerpPositionLiability(perpPosition, marginCategory, liquidationBuffer, includeOpenOrders, strict = false, enteringHighLeverage = false) {
|
|
743
743
|
const market = this.driftClient.getPerpMarketAccount(perpPosition.marketIndex);
|
|
744
744
|
if (perpPosition.lpShares.gt(numericConstants_1.ZERO)) {
|
|
745
745
|
// is an lp, clone so we dont mutate the position
|
|
@@ -761,7 +761,7 @@ class User {
|
|
|
761
761
|
liabilityValue = (0, _1.calculatePerpLiabilityValue)(baseAssetAmount, valuationPrice, (0, types_1.isVariant)(market.contractType, 'prediction'));
|
|
762
762
|
}
|
|
763
763
|
if (marginCategory) {
|
|
764
|
-
let marginRatio = new _1.BN((0, _1.calculateMarketMarginRatio)(market, baseAssetAmount.abs(), marginCategory, this.getUserAccount().maxMarginRatio, this.isHighLeverageMode()));
|
|
764
|
+
let marginRatio = new _1.BN((0, _1.calculateMarketMarginRatio)(market, baseAssetAmount.abs(), marginCategory, this.getUserAccount().maxMarginRatio, this.isHighLeverageMode() || enteringHighLeverage));
|
|
765
765
|
if (liquidationBuffer !== undefined) {
|
|
766
766
|
marginRatio = marginRatio.add(liquidationBuffer);
|
|
767
767
|
}
|
|
@@ -807,9 +807,9 @@ class User {
|
|
|
807
807
|
* calculates sum of position value across all positions in margin system
|
|
808
808
|
* @returns : Precision QUOTE_PRECISION
|
|
809
809
|
*/
|
|
810
|
-
getTotalPerpPositionLiability(marginCategory, liquidationBuffer, includeOpenOrders, strict = false) {
|
|
810
|
+
getTotalPerpPositionLiability(marginCategory, liquidationBuffer, includeOpenOrders, strict = false, enteringHighLeverage = false) {
|
|
811
811
|
return this.getActivePerpPositions().reduce((totalPerpValue, perpPosition) => {
|
|
812
|
-
const baseAssetValue = this.calculateWeightedPerpPositionLiability(perpPosition, marginCategory, liquidationBuffer, includeOpenOrders, strict);
|
|
812
|
+
const baseAssetValue = this.calculateWeightedPerpPositionLiability(perpPosition, marginCategory, liquidationBuffer, includeOpenOrders, strict, enteringHighLeverage);
|
|
813
813
|
return totalPerpValue.add(baseAssetValue);
|
|
814
814
|
}, numericConstants_1.ZERO);
|
|
815
815
|
}
|
|
@@ -1190,9 +1190,9 @@ class User {
|
|
|
1190
1190
|
* @param offsetCollateral // allows calculating the liquidation price after this offset collateral is added to the user's account (e.g. : what will the liquidation price be for this position AFTER I deposit $x worth of collateral)
|
|
1191
1191
|
* @returns Precision : PRICE_PRECISION
|
|
1192
1192
|
*/
|
|
1193
|
-
liquidationPrice(marketIndex, positionBaseSizeChange = numericConstants_1.ZERO, estimatedEntryPrice = numericConstants_1.ZERO, marginCategory = 'Maintenance', includeOpenOrders = false, offsetCollateral = numericConstants_1.ZERO) {
|
|
1193
|
+
liquidationPrice(marketIndex, positionBaseSizeChange = numericConstants_1.ZERO, estimatedEntryPrice = numericConstants_1.ZERO, marginCategory = 'Maintenance', includeOpenOrders = false, offsetCollateral = numericConstants_1.ZERO, enteringHighLeverage = false) {
|
|
1194
1194
|
const totalCollateral = this.getTotalCollateral(marginCategory, false, includeOpenOrders);
|
|
1195
|
-
const marginRequirement = this.getMarginRequirement(marginCategory, undefined, false, includeOpenOrders);
|
|
1195
|
+
const marginRequirement = this.getMarginRequirement(marginCategory, undefined, false, includeOpenOrders, enteringHighLeverage);
|
|
1196
1196
|
let freeCollateral = _1.BN.max(numericConstants_1.ZERO, totalCollateral.sub(marginRequirement)).add(offsetCollateral);
|
|
1197
1197
|
const oracle = this.driftClient.getPerpMarketAccount(marketIndex).amm.oracle;
|
|
1198
1198
|
const oraclePrice = this.driftClient.getOracleDataForPerpMarket(marketIndex).price;
|
|
@@ -1200,9 +1200,9 @@ class User {
|
|
|
1200
1200
|
const currentPerpPosition = this.getPerpPositionWithLPSettle(marketIndex, undefined, true)[0] ||
|
|
1201
1201
|
this.getEmptyPosition(marketIndex);
|
|
1202
1202
|
positionBaseSizeChange = (0, _1.standardizeBaseAssetAmount)(positionBaseSizeChange, market.amm.orderStepSize);
|
|
1203
|
-
const freeCollateralChangeFromNewPosition = this.calculateEntriesEffectOnFreeCollateral(market, oraclePrice, currentPerpPosition, positionBaseSizeChange, estimatedEntryPrice, includeOpenOrders);
|
|
1203
|
+
const freeCollateralChangeFromNewPosition = this.calculateEntriesEffectOnFreeCollateral(market, oraclePrice, currentPerpPosition, positionBaseSizeChange, estimatedEntryPrice, includeOpenOrders, enteringHighLeverage);
|
|
1204
1204
|
freeCollateral = freeCollateral.add(freeCollateralChangeFromNewPosition);
|
|
1205
|
-
let freeCollateralDelta = this.calculateFreeCollateralDeltaForPerp(market, currentPerpPosition, positionBaseSizeChange, oraclePrice, marginCategory, includeOpenOrders);
|
|
1205
|
+
let freeCollateralDelta = this.calculateFreeCollateralDeltaForPerp(market, currentPerpPosition, positionBaseSizeChange, oraclePrice, marginCategory, includeOpenOrders, enteringHighLeverage);
|
|
1206
1206
|
if (!freeCollateralDelta) {
|
|
1207
1207
|
return new _1.BN(-1);
|
|
1208
1208
|
}
|
|
@@ -1235,7 +1235,7 @@ class User {
|
|
|
1235
1235
|
}
|
|
1236
1236
|
return liqPrice;
|
|
1237
1237
|
}
|
|
1238
|
-
calculateEntriesEffectOnFreeCollateral(market, oraclePrice, perpPosition, positionBaseSizeChange, estimatedEntryPrice, includeOpenOrders) {
|
|
1238
|
+
calculateEntriesEffectOnFreeCollateral(market, oraclePrice, perpPosition, positionBaseSizeChange, estimatedEntryPrice, includeOpenOrders, enteringHighLeverage = false) {
|
|
1239
1239
|
let freeCollateralChange = numericConstants_1.ZERO;
|
|
1240
1240
|
// update free collateral to account for change in pnl from new position
|
|
1241
1241
|
if (!estimatedEntryPrice.eq(numericConstants_1.ZERO) && !positionBaseSizeChange.eq(numericConstants_1.ZERO)) {
|
|
@@ -1270,7 +1270,7 @@ class User {
|
|
|
1270
1270
|
baseAssetAmount = perpPosition.baseAssetAmount;
|
|
1271
1271
|
liabilityValue = (0, _1.calculatePerpLiabilityValue)(baseAssetAmount, oraclePrice, (0, types_1.isVariant)(market.contractType, 'prediction'));
|
|
1272
1272
|
}
|
|
1273
|
-
const marginRatio = (0, _1.calculateMarketMarginRatio)(market, baseAssetAmount.abs(), 'Maintenance', this.getUserAccount().maxMarginRatio, this.isHighLeverageMode());
|
|
1273
|
+
const marginRatio = (0, _1.calculateMarketMarginRatio)(market, baseAssetAmount.abs(), 'Maintenance', this.getUserAccount().maxMarginRatio, this.isHighLeverageMode() || enteringHighLeverage);
|
|
1274
1274
|
return liabilityValue.mul(new _1.BN(marginRatio)).div(numericConstants_1.MARGIN_PRECISION);
|
|
1275
1275
|
};
|
|
1276
1276
|
const freeCollateralConsumptionBefore = calculateMarginRequirement(perpPosition);
|
|
@@ -1279,14 +1279,14 @@ class User {
|
|
|
1279
1279
|
const freeCollateralConsumptionAfter = calculateMarginRequirement(perpPositionAfter);
|
|
1280
1280
|
return freeCollateralChange.sub(freeCollateralConsumptionAfter.sub(freeCollateralConsumptionBefore));
|
|
1281
1281
|
}
|
|
1282
|
-
calculateFreeCollateralDeltaForPerp(market, perpPosition, positionBaseSizeChange, oraclePrice, marginCategory = 'Maintenance', includeOpenOrders = false) {
|
|
1282
|
+
calculateFreeCollateralDeltaForPerp(market, perpPosition, positionBaseSizeChange, oraclePrice, marginCategory = 'Maintenance', includeOpenOrders = false, enteringHighLeverage = false) {
|
|
1283
1283
|
const baseAssetAmount = includeOpenOrders
|
|
1284
1284
|
? (0, margin_1.calculateWorstCaseBaseAssetAmount)(perpPosition, market, oraclePrice)
|
|
1285
1285
|
: perpPosition.baseAssetAmount;
|
|
1286
1286
|
// zero if include orders == false
|
|
1287
1287
|
const orderBaseAssetAmount = baseAssetAmount.sub(perpPosition.baseAssetAmount);
|
|
1288
1288
|
const proposedBaseAssetAmount = baseAssetAmount.add(positionBaseSizeChange);
|
|
1289
|
-
const marginRatio = (0, _1.calculateMarketMarginRatio)(market, proposedBaseAssetAmount.abs(), marginCategory, this.getUserAccount().maxMarginRatio, this.isHighLeverageMode());
|
|
1289
|
+
const marginRatio = (0, _1.calculateMarketMarginRatio)(market, proposedBaseAssetAmount.abs(), marginCategory, this.getUserAccount().maxMarginRatio, this.isHighLeverageMode() || enteringHighLeverage);
|
|
1290
1290
|
const marginRatioQuotePrecision = new _1.BN(marginRatio)
|
|
1291
1291
|
.mul(numericConstants_1.QUOTE_PRECISION)
|
|
1292
1292
|
.div(numericConstants_1.MARGIN_PRECISION);
|
package/package.json
CHANGED
|
@@ -119,7 +119,7 @@ export const DevnetSpotMarkets: SpotMarketConfig[] = [
|
|
|
119
119
|
marketIndex: 6,
|
|
120
120
|
poolId: 1,
|
|
121
121
|
oracle: new PublicKey('En8hkHLkRe9d9DraYmBTrus518BvmVH448YcvmrFM6Ce'),
|
|
122
|
-
oracleSource: OracleSource.
|
|
122
|
+
oracleSource: OracleSource.PYTH_STABLE_COIN_PULL,
|
|
123
123
|
mint: new PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
|
|
124
124
|
precision: new BN(10).pow(SIX),
|
|
125
125
|
precisionExp: SIX,
|
|
@@ -788,6 +788,34 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [
|
|
|
788
788
|
'0x31558e9ccb18c151af6c52bf78afd03098a7aca1b9cf171a65b693b464c2f066',
|
|
789
789
|
launchTs: 1747155600000,
|
|
790
790
|
},
|
|
791
|
+
{
|
|
792
|
+
symbol: 'USDC-4',
|
|
793
|
+
marketIndex: 47,
|
|
794
|
+
poolId: 4,
|
|
795
|
+
oracle: new PublicKey('9VCioxmni2gDLv11qufWzT3RDERhQE4iY5Gf7NTfYyAV'),
|
|
796
|
+
oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN,
|
|
797
|
+
mint: new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
|
|
798
|
+
precision: QUOTE_PRECISION,
|
|
799
|
+
precisionExp: QUOTE_PRECISION_EXP,
|
|
800
|
+
pythFeedId:
|
|
801
|
+
'0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
|
802
|
+
pythLazerId: 7,
|
|
803
|
+
launchTs: 1747494165000,
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
symbol: 'USDT-4',
|
|
807
|
+
marketIndex: 48,
|
|
808
|
+
poolId: 4,
|
|
809
|
+
oracle: new PublicKey('JDKJSkxjasBGL3ce1pkrN6tqDzuVUZPWzzkGuyX8m9yN'),
|
|
810
|
+
oracleSource: OracleSource.PYTH_LAZER_STABLE_COIN,
|
|
811
|
+
mint: new PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'),
|
|
812
|
+
precision: QUOTE_PRECISION,
|
|
813
|
+
precisionExp: QUOTE_PRECISION_EXP,
|
|
814
|
+
serumMarket: new PublicKey('B2na8Awyd7cpC59iEU43FagJAPLigr3AP3s38KM982bu'),
|
|
815
|
+
pythFeedId:
|
|
816
|
+
'0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b',
|
|
817
|
+
pythLazerId: 8,
|
|
818
|
+
},
|
|
791
819
|
];
|
|
792
820
|
|
|
793
821
|
export const SpotMarkets: { [key in DriftEnv]: SpotMarketConfig[] } = {
|
package/src/user.ts
CHANGED
|
@@ -724,13 +724,15 @@ export class User {
|
|
|
724
724
|
marginCategory: MarginCategory,
|
|
725
725
|
liquidationBuffer?: BN,
|
|
726
726
|
strict = false,
|
|
727
|
-
includeOpenOrders = true
|
|
727
|
+
includeOpenOrders = true,
|
|
728
|
+
enteringHighLeverage = false
|
|
728
729
|
): BN {
|
|
729
730
|
return this.getTotalPerpPositionLiability(
|
|
730
731
|
marginCategory,
|
|
731
732
|
liquidationBuffer,
|
|
732
733
|
includeOpenOrders,
|
|
733
|
-
strict
|
|
734
|
+
strict,
|
|
735
|
+
enteringHighLeverage
|
|
734
736
|
).add(
|
|
735
737
|
this.getSpotMarketLiabilityValue(
|
|
736
738
|
undefined,
|
|
@@ -1413,7 +1415,8 @@ export class User {
|
|
|
1413
1415
|
marginCategory?: MarginCategory,
|
|
1414
1416
|
liquidationBuffer?: BN,
|
|
1415
1417
|
includeOpenOrders?: boolean,
|
|
1416
|
-
strict = false
|
|
1418
|
+
strict = false,
|
|
1419
|
+
enteringHighLeverage = false
|
|
1417
1420
|
): BN {
|
|
1418
1421
|
const market = this.driftClient.getPerpMarketAccount(
|
|
1419
1422
|
perpPosition.marketIndex
|
|
@@ -1463,7 +1466,7 @@ export class User {
|
|
|
1463
1466
|
baseAssetAmount.abs(),
|
|
1464
1467
|
marginCategory,
|
|
1465
1468
|
this.getUserAccount().maxMarginRatio,
|
|
1466
|
-
this.isHighLeverageMode()
|
|
1469
|
+
this.isHighLeverageMode() || enteringHighLeverage
|
|
1467
1470
|
)
|
|
1468
1471
|
);
|
|
1469
1472
|
|
|
@@ -1550,7 +1553,8 @@ export class User {
|
|
|
1550
1553
|
marginCategory?: MarginCategory,
|
|
1551
1554
|
liquidationBuffer?: BN,
|
|
1552
1555
|
includeOpenOrders?: boolean,
|
|
1553
|
-
strict = false
|
|
1556
|
+
strict = false,
|
|
1557
|
+
enteringHighLeverage = false
|
|
1554
1558
|
): BN {
|
|
1555
1559
|
return this.getActivePerpPositions().reduce(
|
|
1556
1560
|
(totalPerpValue, perpPosition) => {
|
|
@@ -1559,7 +1563,8 @@ export class User {
|
|
|
1559
1563
|
marginCategory,
|
|
1560
1564
|
liquidationBuffer,
|
|
1561
1565
|
includeOpenOrders,
|
|
1562
|
-
strict
|
|
1566
|
+
strict,
|
|
1567
|
+
enteringHighLeverage
|
|
1563
1568
|
);
|
|
1564
1569
|
return totalPerpValue.add(baseAssetValue);
|
|
1565
1570
|
},
|
|
@@ -2267,7 +2272,8 @@ export class User {
|
|
|
2267
2272
|
estimatedEntryPrice: BN = ZERO,
|
|
2268
2273
|
marginCategory: MarginCategory = 'Maintenance',
|
|
2269
2274
|
includeOpenOrders = false,
|
|
2270
|
-
offsetCollateral = ZERO
|
|
2275
|
+
offsetCollateral = ZERO,
|
|
2276
|
+
enteringHighLeverage = false
|
|
2271
2277
|
): BN {
|
|
2272
2278
|
const totalCollateral = this.getTotalCollateral(
|
|
2273
2279
|
marginCategory,
|
|
@@ -2278,7 +2284,8 @@ export class User {
|
|
|
2278
2284
|
marginCategory,
|
|
2279
2285
|
undefined,
|
|
2280
2286
|
false,
|
|
2281
|
-
includeOpenOrders
|
|
2287
|
+
includeOpenOrders,
|
|
2288
|
+
enteringHighLeverage
|
|
2282
2289
|
);
|
|
2283
2290
|
let freeCollateral = BN.max(
|
|
2284
2291
|
ZERO,
|
|
@@ -2308,7 +2315,8 @@ export class User {
|
|
|
2308
2315
|
currentPerpPosition,
|
|
2309
2316
|
positionBaseSizeChange,
|
|
2310
2317
|
estimatedEntryPrice,
|
|
2311
|
-
includeOpenOrders
|
|
2318
|
+
includeOpenOrders,
|
|
2319
|
+
enteringHighLeverage
|
|
2312
2320
|
);
|
|
2313
2321
|
|
|
2314
2322
|
freeCollateral = freeCollateral.add(freeCollateralChangeFromNewPosition);
|
|
@@ -2319,7 +2327,8 @@ export class User {
|
|
|
2319
2327
|
positionBaseSizeChange,
|
|
2320
2328
|
oraclePrice,
|
|
2321
2329
|
marginCategory,
|
|
2322
|
-
includeOpenOrders
|
|
2330
|
+
includeOpenOrders,
|
|
2331
|
+
enteringHighLeverage
|
|
2323
2332
|
);
|
|
2324
2333
|
|
|
2325
2334
|
if (!freeCollateralDelta) {
|
|
@@ -2388,7 +2397,8 @@ export class User {
|
|
|
2388
2397
|
perpPosition: PerpPosition,
|
|
2389
2398
|
positionBaseSizeChange: BN,
|
|
2390
2399
|
estimatedEntryPrice: BN,
|
|
2391
|
-
includeOpenOrders: boolean
|
|
2400
|
+
includeOpenOrders: boolean,
|
|
2401
|
+
enteringHighLeverage = false
|
|
2392
2402
|
): BN {
|
|
2393
2403
|
let freeCollateralChange = ZERO;
|
|
2394
2404
|
|
|
@@ -2441,7 +2451,7 @@ export class User {
|
|
|
2441
2451
|
baseAssetAmount.abs(),
|
|
2442
2452
|
'Maintenance',
|
|
2443
2453
|
this.getUserAccount().maxMarginRatio,
|
|
2444
|
-
this.isHighLeverageMode()
|
|
2454
|
+
this.isHighLeverageMode() || enteringHighLeverage
|
|
2445
2455
|
);
|
|
2446
2456
|
|
|
2447
2457
|
return liabilityValue.mul(new BN(marginRatio)).div(MARGIN_PRECISION);
|
|
@@ -2469,7 +2479,8 @@ export class User {
|
|
|
2469
2479
|
positionBaseSizeChange: BN,
|
|
2470
2480
|
oraclePrice: BN,
|
|
2471
2481
|
marginCategory: MarginCategory = 'Maintenance',
|
|
2472
|
-
includeOpenOrders = false
|
|
2482
|
+
includeOpenOrders = false,
|
|
2483
|
+
enteringHighLeverage = false
|
|
2473
2484
|
): BN | undefined {
|
|
2474
2485
|
const baseAssetAmount = includeOpenOrders
|
|
2475
2486
|
? calculateWorstCaseBaseAssetAmount(perpPosition, market, oraclePrice)
|
|
@@ -2487,8 +2498,9 @@ export class User {
|
|
|
2487
2498
|
proposedBaseAssetAmount.abs(),
|
|
2488
2499
|
marginCategory,
|
|
2489
2500
|
this.getUserAccount().maxMarginRatio,
|
|
2490
|
-
this.isHighLeverageMode()
|
|
2501
|
+
this.isHighLeverageMode() || enteringHighLeverage
|
|
2491
2502
|
);
|
|
2503
|
+
|
|
2492
2504
|
const marginRatioQuotePrecision = new BN(marginRatio)
|
|
2493
2505
|
.mul(QUOTE_PRECISION)
|
|
2494
2506
|
.div(MARGIN_PRECISION);
|