@drift-labs/sdk 0.2.0-master.35 → 0.2.0-master.36
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/math/orders.js +11 -4
- package/package.json +1 -1
- package/src/math/orders.ts +17 -9
package/lib/math/orders.js
CHANGED
|
@@ -134,8 +134,14 @@ function calculateBaseAssetAmountForAmmToFulfill(order, market, oraclePriceData,
|
|
|
134
134
|
order.triggered === false) {
|
|
135
135
|
return numericConstants_1.ZERO;
|
|
136
136
|
}
|
|
137
|
-
const limitPrice =
|
|
138
|
-
|
|
137
|
+
const limitPrice = getOptionalLimitPrice(order, oraclePriceData, slot);
|
|
138
|
+
let baseAssetAmount;
|
|
139
|
+
if (limitPrice !== undefined) {
|
|
140
|
+
baseAssetAmount = calculateBaseAssetAmountToFillUpToLimitPrice(order, market, limitPrice, oraclePriceData);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
baseAssetAmount = order.baseAssetAmount.sub(order.baseAssetAmountFilled);
|
|
144
|
+
}
|
|
139
145
|
const maxBaseAssetAmount = (0, amm_1.calculateMaxBaseAssetAmountFillable)(market.amm, order.direction);
|
|
140
146
|
return anchor_1.BN.min(maxBaseAssetAmount, baseAssetAmount);
|
|
141
147
|
}
|
|
@@ -148,8 +154,9 @@ function calculateBaseAssetAmountToFillUpToLimitPrice(order, market, limitPrice,
|
|
|
148
154
|
if (!sameDirection) {
|
|
149
155
|
return numericConstants_1.ZERO;
|
|
150
156
|
}
|
|
151
|
-
|
|
152
|
-
|
|
157
|
+
const baseAssetAmountUnfilled = order.baseAssetAmount.sub(order.baseAssetAmountFilled);
|
|
158
|
+
return baseAssetAmount.gt(baseAssetAmountUnfilled)
|
|
159
|
+
? baseAssetAmountUnfilled
|
|
153
160
|
: baseAssetAmount;
|
|
154
161
|
}
|
|
155
162
|
exports.calculateBaseAssetAmountToFillUpToLimitPrice = calculateBaseAssetAmountToFillUpToLimitPrice;
|
package/package.json
CHANGED
package/src/math/orders.ts
CHANGED
|
@@ -209,13 +209,18 @@ export function calculateBaseAssetAmountForAmmToFulfill(
|
|
|
209
209
|
return ZERO;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
const limitPrice =
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
212
|
+
const limitPrice = getOptionalLimitPrice(order, oraclePriceData, slot);
|
|
213
|
+
let baseAssetAmount;
|
|
214
|
+
if (limitPrice !== undefined) {
|
|
215
|
+
baseAssetAmount = calculateBaseAssetAmountToFillUpToLimitPrice(
|
|
216
|
+
order,
|
|
217
|
+
market,
|
|
218
|
+
limitPrice,
|
|
219
|
+
oraclePriceData
|
|
220
|
+
);
|
|
221
|
+
} else {
|
|
222
|
+
baseAssetAmount = order.baseAssetAmount.sub(order.baseAssetAmountFilled);
|
|
223
|
+
}
|
|
219
224
|
|
|
220
225
|
const maxBaseAssetAmount = calculateMaxBaseAssetAmountFillable(
|
|
221
226
|
market.amm,
|
|
@@ -249,8 +254,11 @@ export function calculateBaseAssetAmountToFillUpToLimitPrice(
|
|
|
249
254
|
return ZERO;
|
|
250
255
|
}
|
|
251
256
|
|
|
252
|
-
|
|
253
|
-
|
|
257
|
+
const baseAssetAmountUnfilled = order.baseAssetAmount.sub(
|
|
258
|
+
order.baseAssetAmountFilled
|
|
259
|
+
);
|
|
260
|
+
return baseAssetAmount.gt(baseAssetAmountUnfilled)
|
|
261
|
+
? baseAssetAmountUnfilled
|
|
254
262
|
: baseAssetAmount;
|
|
255
263
|
}
|
|
256
264
|
|