@drift-labs/sdk 2.11.0-beta.1 → 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.
- package/lib/idl/drift.json +1 -1
- package/lib/math/amm.d.ts +1 -1
- package/lib/math/amm.js +11 -5
- package/lib/user.js +1 -1
- package/package.json +1 -1
- package/src/idl/drift.json +1 -1
- package/src/math/amm.ts +16 -5
- package/src/user.ts +2 -1
package/lib/idl/drift.json
CHANGED
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 (
|
|
183
|
-
openAsks =
|
|
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 (
|
|
190
|
-
openBids =
|
|
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
package/src/idl/drift.json
CHANGED
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 (
|
|
331
|
-
openAsks =
|
|
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 (
|
|
338
|
-
openBids =
|
|
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
|