@drift-labs/sdk 2.11.0-beta.1 → 2.11.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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.11.0-beta.1",
2
+ "version": "2.11.0",
3
3
  "name": "drift",
4
4
  "instructions": [
5
5
  {
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "2.11.0-beta.1",
3
+ "version": "2.11.0",
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.1",
2
+ "version": "2.11.0",
3
3
  "name": "drift",
4
4
  "instructions": [
5
5
  {
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