@drift-labs/sdk 2.11.0-beta.0 → 2.11.0-beta.2

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.11.0-beta.0",
2
+ "version": "2.11.0-beta.2",
3
3
  "name": "drift",
4
4
  "instructions": [
5
5
  {
@@ -6190,7 +6190,12 @@
6190
6190
  ]
6191
6191
  },
6192
6192
  {
6193
- "name": "Match"
6193
+ "name": "Match",
6194
+ "fields": [
6195
+ {
6196
+ "defined": "usize"
6197
+ }
6198
+ ]
6194
6199
  }
6195
6200
  ]
6196
6201
  }
package/lib/math/amm.d.ts CHANGED
@@ -33,7 +33,7 @@ export declare type AssetType = 'quote' | 'base';
33
33
  * @returns quoteAssetReserve and baseAssetReserve after swap. : Precision AMM_RESERVE_PRECISION
34
34
  */
35
35
  export declare function calculateAmmReservesAfterSwap(amm: Pick<AMM, 'pegMultiplier' | 'quoteAssetReserve' | 'sqrtK' | 'baseAssetReserve'>, inputAssetType: AssetType, swapAmount: BN, swapDirection: SwapDirection): [BN, BN];
36
- export declare function calculateMarketOpenBidAsk(baseAssetReserve: BN, minBaseAssetReserve: BN, maxBaseAssetReserve: BN): [BN, BN];
36
+ export declare function calculateMarketOpenBidAsk(baseAssetReserve: BN, minBaseAssetReserve: BN, maxBaseAssetReserve: BN, stepSize?: BN): [BN, BN];
37
37
  export declare function calculateInventoryScale(baseAssetAmountWithAmm: BN, baseAssetReserve: BN, minBaseAssetReserve: BN, maxBaseAssetReserve: BN, directionalSpread: number, maxSpread: number): number;
38
38
  export declare function calculateEffectiveLeverage(baseSpread: number, quoteAssetReserve: BN, terminalQuoteAssetReserve: BN, pegMultiplier: BN, netBaseAssetAmount: BN, reservePrice: BN, totalFeeMinusDistributions: BN): number;
39
39
  export declare function calculateMaxSpread(marginRatioInitial: number): number;
package/lib/math/amm.js CHANGED
@@ -176,18 +176,24 @@ function calculateAmmReservesAfterSwap(amm, inputAssetType, swapAmount, swapDire
176
176
  return [newQuoteAssetReserve, newBaseAssetReserve];
177
177
  }
178
178
  exports.calculateAmmReservesAfterSwap = calculateAmmReservesAfterSwap;
179
- function calculateMarketOpenBidAsk(baseAssetReserve, minBaseAssetReserve, maxBaseAssetReserve) {
179
+ function calculateMarketOpenBidAsk(baseAssetReserve, minBaseAssetReserve, maxBaseAssetReserve, stepSize) {
180
180
  // open orders
181
181
  let openAsks;
182
- if (maxBaseAssetReserve.gt(baseAssetReserve)) {
183
- openAsks = maxBaseAssetReserve.sub(baseAssetReserve).mul(new anchor_1.BN(-1));
182
+ if (minBaseAssetReserve.lt(baseAssetReserve)) {
183
+ openAsks = baseAssetReserve.sub(minBaseAssetReserve).mul(new anchor_1.BN(-1));
184
+ if (stepSize && openAsks.abs().div(numericConstants_1.TWO).lt(stepSize)) {
185
+ openAsks = numericConstants_1.ZERO;
186
+ }
184
187
  }
185
188
  else {
186
189
  openAsks = numericConstants_1.ZERO;
187
190
  }
188
191
  let openBids;
189
- if (minBaseAssetReserve.lt(baseAssetReserve)) {
190
- openBids = baseAssetReserve.sub(minBaseAssetReserve);
192
+ if (maxBaseAssetReserve.gt(baseAssetReserve)) {
193
+ openBids = maxBaseAssetReserve.sub(baseAssetReserve);
194
+ if (stepSize && openBids.div(numericConstants_1.TWO).lt(stepSize)) {
195
+ openBids = numericConstants_1.ZERO;
196
+ }
191
197
  }
192
198
  else {
193
199
  openBids = numericConstants_1.ZERO;
package/lib/user.js CHANGED
@@ -141,7 +141,7 @@ class User {
141
141
  return [numericConstants_1.ZERO, numericConstants_1.ZERO];
142
142
  }
143
143
  const market = this.driftClient.getPerpMarketAccount(marketIndex);
144
- const [marketOpenBids, marketOpenAsks] = (0, amm_1.calculateMarketOpenBidAsk)(market.amm.baseAssetReserve, market.amm.minBaseAssetReserve, market.amm.maxBaseAssetReserve);
144
+ const [marketOpenBids, marketOpenAsks] = (0, amm_1.calculateMarketOpenBidAsk)(market.amm.baseAssetReserve, market.amm.minBaseAssetReserve, market.amm.maxBaseAssetReserve, market.amm.orderStepSize);
145
145
  const lpOpenBids = marketOpenBids
146
146
  .mul(position.lpShares)
147
147
  .div(market.amm.sqrtK);
@@ -701,6 +701,9 @@ class User {
701
701
  */
702
702
  spotLiquidationPrice(spotPosition) {
703
703
  const currentSpotPosition = this.getSpotPosition(spotPosition.marketIndex);
704
+ if (!currentSpotPosition) {
705
+ return new _1.BN(-1);
706
+ }
704
707
  const mtc = this.getTotalCollateral('Maintenance');
705
708
  const mmr = this.getMaintenanceMarginRequirement();
706
709
  const deltaValueToLiq = mtc.sub(mmr); // QUOTE_PRECISION
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "2.11.0-beta.0",
3
+ "version": "2.11.0-beta.2",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "author": "crispheaney",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.11.0-beta.0",
2
+ "version": "2.11.0-beta.2",
3
3
  "name": "drift",
4
4
  "instructions": [
5
5
  {
@@ -6190,7 +6190,12 @@
6190
6190
  ]
6191
6191
  },
6192
6192
  {
6193
- "name": "Match"
6193
+ "name": "Match",
6194
+ "fields": [
6195
+ {
6196
+ "defined": "usize"
6197
+ }
6198
+ ]
6194
6199
  }
6195
6200
  ]
6196
6201
  }
package/src/math/amm.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  PERCENTAGE_PRECISION,
14
14
  BASE_PRECISION,
15
15
  DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT,
16
+ TWO,
16
17
  } from '../constants/numericConstants';
17
18
  import {
18
19
  AMM,
@@ -323,22 +324,32 @@ export function calculateAmmReservesAfterSwap(
323
324
  export function calculateMarketOpenBidAsk(
324
325
  baseAssetReserve: BN,
325
326
  minBaseAssetReserve: BN,
326
- maxBaseAssetReserve: BN
327
+ maxBaseAssetReserve: BN,
328
+ stepSize?: BN
327
329
  ): [BN, BN] {
328
330
  // open orders
329
331
  let openAsks;
330
- if (maxBaseAssetReserve.gt(baseAssetReserve)) {
331
- openAsks = maxBaseAssetReserve.sub(baseAssetReserve).mul(new BN(-1));
332
+ if (minBaseAssetReserve.lt(baseAssetReserve)) {
333
+ openAsks = baseAssetReserve.sub(minBaseAssetReserve).mul(new BN(-1));
334
+
335
+ if (stepSize && openAsks.abs().div(TWO).lt(stepSize)) {
336
+ openAsks = ZERO;
337
+ }
332
338
  } else {
333
339
  openAsks = ZERO;
334
340
  }
335
341
 
336
342
  let openBids;
337
- if (minBaseAssetReserve.lt(baseAssetReserve)) {
338
- openBids = baseAssetReserve.sub(minBaseAssetReserve);
343
+ if (maxBaseAssetReserve.gt(baseAssetReserve)) {
344
+ openBids = maxBaseAssetReserve.sub(baseAssetReserve);
345
+
346
+ if (stepSize && openBids.div(TWO).lt(stepSize)) {
347
+ openBids = ZERO;
348
+ }
339
349
  } else {
340
350
  openBids = ZERO;
341
351
  }
352
+
342
353
  return [openBids, openAsks];
343
354
  }
344
355
 
package/src/user.ts CHANGED
@@ -242,7 +242,8 @@ export class User {
242
242
  const [marketOpenBids, marketOpenAsks] = calculateMarketOpenBidAsk(
243
243
  market.amm.baseAssetReserve,
244
244
  market.amm.minBaseAssetReserve,
245
- market.amm.maxBaseAssetReserve
245
+ market.amm.maxBaseAssetReserve,
246
+ market.amm.orderStepSize
246
247
  );
247
248
 
248
249
  const lpOpenBids = marketOpenBids
@@ -1173,6 +1174,10 @@ export class User {
1173
1174
  ): BN {
1174
1175
  const currentSpotPosition = this.getSpotPosition(spotPosition.marketIndex);
1175
1176
 
1177
+ if (!currentSpotPosition) {
1178
+ return new BN(-1);
1179
+ }
1180
+
1176
1181
  const mtc = this.getTotalCollateral('Maintenance');
1177
1182
  const mmr = this.getMaintenanceMarginRequirement();
1178
1183