@drift-labs/sdk 0.1.29-master.0 → 0.1.29-master.1

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,581 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClearingHouseUser = void 0;
4
- const types_1 = require("./types");
5
- const position_1 = require("./math/position");
6
- const numericConstants_1 = require("./constants/numericConstants");
7
- const _1 = require(".");
8
- const addresses_1 = require("./addresses");
9
- const clearingHouseUser_1 = require("./factory/clearingHouseUser");
10
- class ClearingHouseUser {
11
- constructor(clearingHouse, authority, accountSubscriber) {
12
- this._isSubscribed = false;
13
- this.clearingHouse = clearingHouse;
14
- this.authority = authority;
15
- this.accountSubscriber = accountSubscriber;
16
- this.eventEmitter = this.accountSubscriber.eventEmitter;
17
- }
18
- get isSubscribed() {
19
- return this._isSubscribed && this.accountSubscriber.isSubscribed;
20
- }
21
- set isSubscribed(val) {
22
- this._isSubscribed = val;
23
- }
24
- /**
25
- * @deprecated You should use getClearingHouseUser factory method instead
26
- * @param clearingHouse
27
- * @param authority
28
- * @returns
29
- */
30
- static from(clearingHouse, authority) {
31
- if (clearingHouse.accountSubscriber.type !== 'websocket')
32
- throw 'This method only works for clearing houses with a websocket account listener. Try using the getClearingHouseUser factory method to initialize a ClearingHouseUser instead';
33
- const config = (0, clearingHouseUser_1.getWebSocketClearingHouseUserConfig)(clearingHouse, authority);
34
- return (0, clearingHouseUser_1.getClearingHouseUser)(config);
35
- }
36
- /**
37
- * Subscribe to ClearingHouseUser state accounts
38
- * @returns SusbcriptionSuccess result
39
- */
40
- async subscribe() {
41
- // Clearing house should already be subscribed, but await for the subscription just incase to avoid race condition
42
- await this.clearingHouse.subscribe();
43
- this.isSubscribed = await this.accountSubscriber.subscribe();
44
- return this.isSubscribed;
45
- }
46
- /**
47
- * Forces the accountSubscriber to fetch account updates from rpc
48
- */
49
- async fetchAccounts() {
50
- await this.accountSubscriber.fetch();
51
- }
52
- async unsubscribe() {
53
- await this.accountSubscriber.unsubscribe();
54
- this.isSubscribed = false;
55
- }
56
- getUserAccount() {
57
- return this.accountSubscriber.getUserAccount();
58
- }
59
- getUserPositionsAccount() {
60
- return this.accountSubscriber.getUserPositionsAccount();
61
- }
62
- getUserOrdersAccount() {
63
- return this.accountSubscriber.getUserOrdersAccount();
64
- }
65
- /**
66
- * Gets the user's current position for a given market. If the user has no position returns undefined
67
- * @param marketIndex
68
- * @returns userPosition
69
- */
70
- getUserPosition(marketIndex) {
71
- return this.getUserPositionsAccount().positions.find((position) => position.marketIndex.eq(marketIndex));
72
- }
73
- getEmptyPosition(marketIndex) {
74
- return {
75
- baseAssetAmount: numericConstants_1.ZERO,
76
- lastCumulativeFundingRate: numericConstants_1.ZERO,
77
- marketIndex,
78
- quoteAssetAmount: numericConstants_1.ZERO,
79
- openOrders: numericConstants_1.ZERO,
80
- };
81
- }
82
- /**
83
- * @param orderId
84
- * @returns Order
85
- */
86
- getOrder(orderId) {
87
- return this.getUserOrdersAccount().orders.find((order) => order.orderId.eq(orderId));
88
- }
89
- /**
90
- * @param userOrderId
91
- * @returns Order
92
- */
93
- getOrderByUserOrderId(userOrderId) {
94
- return this.getUserOrdersAccount().orders.find((order) => order.userOrderId === userOrderId);
95
- }
96
- async getUserAccountPublicKey() {
97
- if (this.userAccountPublicKey) {
98
- return this.userAccountPublicKey;
99
- }
100
- this.userAccountPublicKey = await (0, addresses_1.getUserAccountPublicKey)(this.clearingHouse.program.programId, this.authority);
101
- return this.userAccountPublicKey;
102
- }
103
- async getUserOrdersAccountPublicKey() {
104
- if (this.userOrdersAccountPublicKey) {
105
- return this.userOrdersAccountPublicKey;
106
- }
107
- this.userOrdersAccountPublicKey = await (0, _1.getUserOrdersAccountPublicKey)(this.clearingHouse.program.programId, await this.getUserAccountPublicKey());
108
- return this.userOrdersAccountPublicKey;
109
- }
110
- async exists() {
111
- const userAccountPublicKey = await this.getUserAccountPublicKey();
112
- const userAccountRPCResponse = await this.clearingHouse.connection.getParsedAccountInfo(userAccountPublicKey);
113
- return userAccountRPCResponse.value !== null;
114
- }
115
- /**
116
- * calculates Buying Power = FC * MAX_LEVERAGE
117
- * @returns : Precision QUOTE_PRECISION
118
- */
119
- getBuyingPower(marketIndex) {
120
- return this.getFreeCollateral()
121
- .mul(this.getMaxLeverage(marketIndex, 'Initial'))
122
- .div(numericConstants_1.TEN_THOUSAND);
123
- }
124
- /**
125
- * calculates Free Collateral = Total collateral - initial margin requirement
126
- * @returns : Precision QUOTE_PRECISION
127
- */
128
- getFreeCollateral() {
129
- const totalCollateral = this.getTotalCollateral();
130
- const initialMarginRequirement = this.getInitialMarginRequirement();
131
- const freeCollateral = totalCollateral.sub(initialMarginRequirement);
132
- return freeCollateral.gte(numericConstants_1.ZERO) ? freeCollateral : numericConstants_1.ZERO;
133
- }
134
- getInitialMarginRequirement() {
135
- return this.getUserPositionsAccount().positions.reduce((marginRequirement, marketPosition) => {
136
- const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
137
- return marginRequirement.add((0, _1.calculateBaseAssetValue)(market, marketPosition)
138
- .mul(new _1.BN(market.marginRatioInitial))
139
- .div(numericConstants_1.MARGIN_PRECISION));
140
- }, numericConstants_1.ZERO);
141
- }
142
- /**
143
- * @returns The partial margin requirement in USDC. : QUOTE_PRECISION
144
- */
145
- getPartialMarginRequirement() {
146
- return this.getUserPositionsAccount().positions.reduce((marginRequirement, marketPosition) => {
147
- const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
148
- return marginRequirement.add((0, _1.calculateBaseAssetValue)(market, marketPosition)
149
- .mul(new _1.BN(market.marginRatioPartial))
150
- .div(numericConstants_1.MARGIN_PRECISION));
151
- }, numericConstants_1.ZERO);
152
- }
153
- /**
154
- * calculates unrealized position price pnl
155
- * @returns : Precision QUOTE_PRECISION
156
- */
157
- getUnrealizedPNL(withFunding, marketIndex) {
158
- return this.getUserPositionsAccount()
159
- .positions.filter((pos) => marketIndex ? pos.marketIndex === marketIndex : true)
160
- .reduce((pnl, marketPosition) => {
161
- const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
162
- return pnl.add((0, _1.calculatePositionPNL)(market, marketPosition, withFunding));
163
- }, numericConstants_1.ZERO);
164
- }
165
- /**
166
- * calculates unrealized funding payment pnl
167
- * @returns : Precision QUOTE_PRECISION
168
- */
169
- getUnrealizedFundingPNL(marketIndex) {
170
- return this.getUserPositionsAccount()
171
- .positions.filter((pos) => marketIndex ? pos.marketIndex === marketIndex : true)
172
- .reduce((pnl, marketPosition) => {
173
- const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
174
- return pnl.add((0, _1.calculatePositionFundingPNL)(market, marketPosition));
175
- }, numericConstants_1.ZERO);
176
- }
177
- /**
178
- * calculates TotalCollateral: collateral + unrealized pnl
179
- * @returns : Precision QUOTE_PRECISION
180
- */
181
- getTotalCollateral() {
182
- var _a;
183
- return ((_a = this.getUserAccount().collateral.add(this.getUnrealizedPNL(true))) !== null && _a !== void 0 ? _a : new _1.BN(0));
184
- }
185
- /**
186
- * calculates sum of position value across all positions
187
- * @returns : Precision QUOTE_PRECISION
188
- */
189
- getTotalPositionValue() {
190
- return this.getUserPositionsAccount().positions.reduce((positionValue, marketPosition) => {
191
- const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
192
- return positionValue.add((0, _1.calculateBaseAssetValue)(market, marketPosition));
193
- }, numericConstants_1.ZERO);
194
- }
195
- /**
196
- * calculates position value from closing 100%
197
- * @returns : Precision QUOTE_PRECISION
198
- */
199
- getPositionValue(marketIndex) {
200
- const userPosition = this.getUserPosition(marketIndex) || this.getEmptyPosition(marketIndex);
201
- const market = this.clearingHouse.getMarket(userPosition.marketIndex);
202
- return (0, _1.calculateBaseAssetValue)(market, userPosition);
203
- }
204
- getPositionSide(currentPosition) {
205
- if (currentPosition.baseAssetAmount.gt(numericConstants_1.ZERO)) {
206
- return _1.PositionDirection.LONG;
207
- }
208
- else if (currentPosition.baseAssetAmount.lt(numericConstants_1.ZERO)) {
209
- return _1.PositionDirection.SHORT;
210
- }
211
- else {
212
- return undefined;
213
- }
214
- }
215
- /**
216
- * calculates average exit price for closing 100% of position
217
- * @returns : Precision MARK_PRICE_PRECISION
218
- */
219
- getPositionEstimatedExitPriceAndPnl(position, amountToClose) {
220
- const market = this.clearingHouse.getMarket(position.marketIndex);
221
- const entryPrice = (0, position_1.calculateEntryPrice)(position);
222
- if (amountToClose) {
223
- if (amountToClose.eq(numericConstants_1.ZERO)) {
224
- return [(0, _1.calculateMarkPrice)(market), numericConstants_1.ZERO];
225
- }
226
- position = {
227
- baseAssetAmount: amountToClose,
228
- lastCumulativeFundingRate: position.lastCumulativeFundingRate,
229
- marketIndex: position.marketIndex,
230
- quoteAssetAmount: position.quoteAssetAmount,
231
- };
232
- }
233
- const baseAssetValue = (0, _1.calculateBaseAssetValue)(market, position);
234
- if (position.baseAssetAmount.eq(numericConstants_1.ZERO)) {
235
- return [numericConstants_1.ZERO, numericConstants_1.ZERO];
236
- }
237
- const exitPrice = baseAssetValue
238
- .mul(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO)
239
- .mul(numericConstants_1.MARK_PRICE_PRECISION)
240
- .div(position.baseAssetAmount.abs());
241
- const pnlPerBase = exitPrice.sub(entryPrice);
242
- const pnl = pnlPerBase
243
- .mul(position.baseAssetAmount)
244
- .div(numericConstants_1.MARK_PRICE_PRECISION)
245
- .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
246
- return [exitPrice, pnl];
247
- }
248
- /**
249
- * calculates current user leverage across all positions
250
- * @returns : Precision TEN_THOUSAND
251
- */
252
- getLeverage() {
253
- const totalCollateral = this.getTotalCollateral();
254
- const totalPositionValue = this.getTotalPositionValue();
255
- if (totalPositionValue.eq(numericConstants_1.ZERO) && totalCollateral.eq(numericConstants_1.ZERO)) {
256
- return numericConstants_1.ZERO;
257
- }
258
- return totalPositionValue.mul(numericConstants_1.TEN_THOUSAND).div(totalCollateral);
259
- }
260
- /**
261
- * calculates max allowable leverage exceeding hitting requirement category
262
- * @params category {Initial, Partial, Maintenance}
263
- * @returns : Precision TEN_THOUSAND
264
- */
265
- getMaxLeverage(marketIndex, category = 'Initial') {
266
- const market = this.clearingHouse.getMarket(marketIndex);
267
- let marginRatioCategory;
268
- switch (category) {
269
- case 'Initial':
270
- marginRatioCategory = market.marginRatioInitial;
271
- break;
272
- case 'Maintenance':
273
- marginRatioCategory = market.marginRatioMaintenance;
274
- break;
275
- case 'Partial':
276
- marginRatioCategory = market.marginRatioPartial;
277
- break;
278
- default:
279
- marginRatioCategory = market.marginRatioInitial;
280
- break;
281
- }
282
- const maxLeverage = numericConstants_1.TEN_THOUSAND.mul(numericConstants_1.TEN_THOUSAND).div(new _1.BN(marginRatioCategory));
283
- return maxLeverage;
284
- }
285
- /**
286
- * calculates margin ratio: total collateral / |total position value|
287
- * @returns : Precision TEN_THOUSAND
288
- */
289
- getMarginRatio() {
290
- const totalPositionValue = this.getTotalPositionValue();
291
- if (totalPositionValue.eq(numericConstants_1.ZERO)) {
292
- return numericConstants_1.BN_MAX;
293
- }
294
- return this.getTotalCollateral().mul(numericConstants_1.TEN_THOUSAND).div(totalPositionValue);
295
- }
296
- canBeLiquidated() {
297
- const totalCollateral = this.getTotalCollateral();
298
- const partialMaintenanceRequirement = this.getPartialMarginRequirement();
299
- const marginRatio = this.getMarginRatio();
300
- const canLiquidate = totalCollateral.lt(partialMaintenanceRequirement);
301
- return [canLiquidate, marginRatio];
302
- }
303
- /**
304
- * Checks if any user position cumulative funding differs from respective market cumulative funding
305
- * @returns
306
- */
307
- needsToSettleFundingPayment() {
308
- const marketsAccount = this.clearingHouse.getMarketsAccount();
309
- for (const userPosition of this.getUserPositionsAccount().positions) {
310
- if (userPosition.baseAssetAmount.eq(numericConstants_1.ZERO)) {
311
- continue;
312
- }
313
- const market = marketsAccount.markets[userPosition.marketIndex.toNumber()];
314
- if (market.amm.cumulativeFundingRateLong.eq(userPosition.lastCumulativeFundingRate) ||
315
- market.amm.cumulativeFundingRateShort.eq(userPosition.lastCumulativeFundingRate)) {
316
- continue;
317
- }
318
- return true;
319
- }
320
- return false;
321
- }
322
- /**
323
- * Calculate the liquidation price of a position, with optional parameter to calculate the liquidation price after a trade
324
- * @param marketPosition
325
- * @param positionBaseSizeChange // change in position size to calculate liquidation price for : Precision 10^13
326
- * @param partial
327
- * @returns Precision : MARK_PRICE_PRECISION
328
- */
329
- liquidationPrice(marketPosition, positionBaseSizeChange = numericConstants_1.ZERO, partial = false) {
330
- // solves formula for example canBeLiquidated below
331
- /* example: assume BTC price is $40k (examine 10% up/down)
332
-
333
- if 10k deposit and levered 10x short BTC => BTC up $400 means:
334
- 1. higher base_asset_value (+$4k)
335
- 2. lower collateral (-$4k)
336
- 3. (10k - 4k)/(100k + 4k) => 6k/104k => .0576
337
-
338
- for 10x long, BTC down $400:
339
- 3. (10k - 4k) / (100k - 4k) = 6k/96k => .0625 */
340
- const totalCollateral = this.getTotalCollateral();
341
- // calculate the total position value ignoring any value from the target market of the trade
342
- const totalPositionValueExcludingTargetMarket = this.getTotalPositionValueExcludingMarket(marketPosition.marketIndex);
343
- const currentMarketPosition = this.getUserPosition(marketPosition.marketIndex) ||
344
- this.getEmptyPosition(marketPosition.marketIndex);
345
- const currentMarketPositionBaseSize = currentMarketPosition.baseAssetAmount;
346
- const proposedBaseAssetAmount = currentMarketPositionBaseSize.add(positionBaseSizeChange);
347
- // calculate position for current market after trade
348
- const proposedMarketPosition = {
349
- marketIndex: marketPosition.marketIndex,
350
- baseAssetAmount: proposedBaseAssetAmount,
351
- lastCumulativeFundingRate: currentMarketPosition.lastCumulativeFundingRate,
352
- quoteAssetAmount: new _1.BN(0),
353
- openOrders: new _1.BN(0),
354
- };
355
- if (proposedBaseAssetAmount.eq(numericConstants_1.ZERO))
356
- return new _1.BN(-1);
357
- const market = this.clearingHouse.getMarket(proposedMarketPosition.marketIndex);
358
- const proposedMarketPositionValue = (0, _1.calculateBaseAssetValue)(market, proposedMarketPosition);
359
- // total position value after trade
360
- const totalPositionValueAfterTrade = totalPositionValueExcludingTargetMarket.add(proposedMarketPositionValue);
361
- const marginRequirementExcludingTargetMarket = this.getUserPositionsAccount().positions.reduce((totalMarginRequirement, position) => {
362
- if (!position.marketIndex.eq(marketPosition.marketIndex)) {
363
- const market = this.clearingHouse.getMarket(position.marketIndex);
364
- const positionValue = (0, _1.calculateBaseAssetValue)(market, position);
365
- const marketMarginRequirement = positionValue
366
- .mul(partial
367
- ? new _1.BN(market.marginRatioPartial)
368
- : new _1.BN(market.marginRatioMaintenance))
369
- .div(numericConstants_1.MARGIN_PRECISION);
370
- totalMarginRequirement = totalMarginRequirement.add(marketMarginRequirement);
371
- }
372
- return totalMarginRequirement;
373
- }, numericConstants_1.ZERO);
374
- const freeCollateralExcludingTargetMarket = totalCollateral.sub(marginRequirementExcludingTargetMarket);
375
- // if the position value after the trade is less than free collateral, there is no liq price
376
- if (totalPositionValueAfterTrade.lte(freeCollateralExcludingTargetMarket) &&
377
- proposedMarketPosition.baseAssetAmount.abs().gt(numericConstants_1.ZERO)) {
378
- return new _1.BN(-1);
379
- }
380
- const marginRequirementAfterTrade = marginRequirementExcludingTargetMarket.add(proposedMarketPositionValue
381
- .mul(partial
382
- ? new _1.BN(market.marginRatioPartial)
383
- : new _1.BN(market.marginRatioMaintenance))
384
- .div(numericConstants_1.MARGIN_PRECISION));
385
- const freeCollateralAfterTrade = totalCollateral.sub(marginRequirementAfterTrade);
386
- const marketMaxLeverage = partial
387
- ? this.getMaxLeverage(proposedMarketPosition.marketIndex, 'Partial')
388
- : this.getMaxLeverage(proposedMarketPosition.marketIndex, 'Maintenance');
389
- let priceDelta;
390
- if (proposedBaseAssetAmount.lt(numericConstants_1.ZERO)) {
391
- priceDelta = freeCollateralAfterTrade
392
- .mul(marketMaxLeverage) // precision is TEN_THOUSAND
393
- .div(marketMaxLeverage.add(numericConstants_1.TEN_THOUSAND))
394
- .mul(numericConstants_1.PRICE_TO_QUOTE_PRECISION)
395
- .mul(numericConstants_1.AMM_RESERVE_PRECISION)
396
- .div(proposedBaseAssetAmount);
397
- }
398
- else {
399
- priceDelta = freeCollateralAfterTrade
400
- .mul(marketMaxLeverage) // precision is TEN_THOUSAND
401
- .div(marketMaxLeverage.sub(numericConstants_1.TEN_THOUSAND))
402
- .mul(numericConstants_1.PRICE_TO_QUOTE_PRECISION)
403
- .mul(numericConstants_1.AMM_RESERVE_PRECISION)
404
- .div(proposedBaseAssetAmount);
405
- }
406
- let markPriceAfterTrade;
407
- if (positionBaseSizeChange.eq(numericConstants_1.ZERO)) {
408
- markPriceAfterTrade = (0, _1.calculateMarkPrice)(this.clearingHouse.getMarket(marketPosition.marketIndex));
409
- }
410
- else {
411
- const direction = positionBaseSizeChange.gt(numericConstants_1.ZERO)
412
- ? _1.PositionDirection.LONG
413
- : _1.PositionDirection.SHORT;
414
- markPriceAfterTrade = (0, _1.calculateTradeSlippage)(direction, positionBaseSizeChange.abs(), this.clearingHouse.getMarket(marketPosition.marketIndex), 'base')[3]; // newPrice after swap
415
- }
416
- if (priceDelta.gt(markPriceAfterTrade)) {
417
- return new _1.BN(-1);
418
- }
419
- return markPriceAfterTrade.sub(priceDelta);
420
- }
421
- /**
422
- * Calculates the estimated liquidation price for a position after closing a quote amount of the position.
423
- * @param positionMarketIndex
424
- * @param closeQuoteAmount
425
- * @returns : Precision MARK_PRICE_PRECISION
426
- */
427
- liquidationPriceAfterClose(positionMarketIndex, closeQuoteAmount) {
428
- const currentPosition = this.getUserPosition(positionMarketIndex) ||
429
- this.getEmptyPosition(positionMarketIndex);
430
- const closeBaseAmount = currentPosition.baseAssetAmount
431
- .mul(closeQuoteAmount)
432
- .div(currentPosition.quoteAssetAmount)
433
- .add(currentPosition.baseAssetAmount
434
- .mul(closeQuoteAmount)
435
- .mod(currentPosition.quoteAssetAmount))
436
- .neg();
437
- return this.liquidationPrice({
438
- marketIndex: positionMarketIndex,
439
- }, closeBaseAmount);
440
- }
441
- /**
442
- * Get the maximum trade size for a given market, taking into account the user's current leverage, positions, collateral, etc.
443
- *
444
- * To Calculate Max Quote Available:
445
- *
446
- * Case 1: SameSide
447
- * => Remaining quote to get to maxLeverage
448
- *
449
- * Case 2: NOT SameSide && currentLeverage <= maxLeverage
450
- * => Current opposite position x2 + remaining to get to maxLeverage
451
- *
452
- * Case 3: NOT SameSide && currentLeverage > maxLeverage && otherPositions - currentPosition > maxLeverage
453
- * => strictly reduce current position size
454
- *
455
- * Case 4: NOT SameSide && currentLeverage > maxLeverage && otherPositions - currentPosition < maxLeverage
456
- * => current position + remaining to get to maxLeverage
457
- *
458
- * @param targetMarketIndex
459
- * @param tradeSide
460
- * @returns tradeSizeAllowed : Precision QUOTE_PRECISION
461
- */
462
- getMaxTradeSizeUSDC(targetMarketIndex, tradeSide) {
463
- const currentPosition = this.getUserPosition(targetMarketIndex) ||
464
- this.getEmptyPosition(targetMarketIndex);
465
- const targetSide = (0, types_1.isVariant)(tradeSide, 'short') ? 'short' : 'long';
466
- const currentPositionSide = (currentPosition === null || currentPosition === void 0 ? void 0 : currentPosition.baseAssetAmount.isNeg())
467
- ? 'short'
468
- : 'long';
469
- const targetingSameSide = !currentPosition
470
- ? true
471
- : targetSide === currentPositionSide;
472
- // add any position we have on the opposite side of the current trade, because we can "flip" the size of this position without taking any extra leverage.
473
- const oppositeSizeValueUSDC = targetingSameSide
474
- ? numericConstants_1.ZERO
475
- : this.getPositionValue(targetMarketIndex);
476
- let maxPositionSize = this.getBuyingPower(targetMarketIndex);
477
- if (maxPositionSize.gte(numericConstants_1.ZERO)) {
478
- if (oppositeSizeValueUSDC.eq(numericConstants_1.ZERO)) {
479
- // case 1 : Regular trade where current total position less than max, and no opposite position to account for
480
- // do nothing
481
- }
482
- else {
483
- // case 2 : trade where current total position less than max, but need to account for flipping the current position over to the other side
484
- maxPositionSize = maxPositionSize.add(oppositeSizeValueUSDC.mul(new _1.BN(2)));
485
- }
486
- }
487
- else {
488
- // current leverage is greater than max leverage - can only reduce position size
489
- if (!targetingSameSide) {
490
- const market = this.clearingHouse.getMarket(targetMarketIndex);
491
- const marketPositionValue = this.getPositionValue(targetMarketIndex);
492
- const totalCollateral = this.getTotalCollateral();
493
- const marginRequirement = this.getInitialMarginRequirement();
494
- const marginFreedByClosing = marketPositionValue
495
- .mul(new _1.BN(market.marginRatioInitial))
496
- .div(numericConstants_1.MARGIN_PRECISION);
497
- const marginRequirementAfterClosing = marginRequirement.sub(marginFreedByClosing);
498
- if (marginRequirementAfterClosing.gt(totalCollateral)) {
499
- maxPositionSize = marketPositionValue;
500
- }
501
- else {
502
- const freeCollateralAfterClose = totalCollateral.sub(marginRequirementAfterClosing);
503
- const buyingPowerAfterClose = freeCollateralAfterClose
504
- .mul(this.getMaxLeverage(targetMarketIndex))
505
- .div(numericConstants_1.TEN_THOUSAND);
506
- maxPositionSize = marketPositionValue.add(buyingPowerAfterClose);
507
- }
508
- }
509
- else {
510
- // do nothing if targetting same side
511
- }
512
- }
513
- // subtract oneMillionth of maxPositionSize
514
- // => to avoid rounding errors when taking max leverage
515
- const oneMilli = maxPositionSize.div(numericConstants_1.QUOTE_PRECISION);
516
- return maxPositionSize.sub(oneMilli);
517
- }
518
- // TODO - should this take the price impact of the trade into account for strict accuracy?
519
- /**
520
- * Returns the leverage ratio for the account after adding (or subtracting) the given quote size to the given position
521
- * @param targetMarketIndex
522
- * @param positionMarketIndex
523
- * @param tradeQuoteAmount
524
- * @returns leverageRatio : Precision TEN_THOUSAND
525
- */
526
- accountLeverageRatioAfterTrade(targetMarketIndex, tradeQuoteAmount, tradeSide) {
527
- const currentPosition = this.getUserPosition(targetMarketIndex) ||
528
- this.getEmptyPosition(targetMarketIndex);
529
- let currentPositionQuoteAmount = this.getPositionValue(targetMarketIndex);
530
- const currentSide = currentPosition && currentPosition.baseAssetAmount.isNeg()
531
- ? _1.PositionDirection.SHORT
532
- : _1.PositionDirection.LONG;
533
- if (currentSide === _1.PositionDirection.SHORT)
534
- currentPositionQuoteAmount = currentPositionQuoteAmount.neg();
535
- if (tradeSide === _1.PositionDirection.SHORT)
536
- tradeQuoteAmount = tradeQuoteAmount.neg();
537
- const currentMarketPositionAfterTrade = currentPositionQuoteAmount
538
- .add(tradeQuoteAmount)
539
- .abs();
540
- const totalPositionAfterTradeExcludingTargetMarket = this.getTotalPositionValueExcludingMarket(targetMarketIndex);
541
- const totalCollateral = this.getTotalCollateral();
542
- if (totalCollateral.gt(numericConstants_1.ZERO)) {
543
- const newLeverage = currentMarketPositionAfterTrade
544
- .add(totalPositionAfterTradeExcludingTargetMarket)
545
- .abs()
546
- .mul(numericConstants_1.TEN_THOUSAND)
547
- .div(totalCollateral);
548
- return newLeverage;
549
- }
550
- else {
551
- return new _1.BN(0);
552
- }
553
- }
554
- /**
555
- * Calculates how much fee will be taken for a given sized trade
556
- * @param quoteAmount
557
- * @returns feeForQuote : Precision QUOTE_PRECISION
558
- */
559
- calculateFeeForQuoteAmount(quoteAmount) {
560
- const feeStructure = this.clearingHouse.getStateAccount().feeStructure;
561
- return quoteAmount
562
- .mul(feeStructure.feeNumerator)
563
- .div(feeStructure.feeDenominator);
564
- }
565
- /**
566
- * Get the total position value, excluding any position coming from the given target market
567
- * @param marketToIgnore
568
- * @returns positionValue : Precision QUOTE_PRECISION
569
- */
570
- getTotalPositionValueExcludingMarket(marketToIgnore) {
571
- const currentMarketPosition = this.getUserPosition(marketToIgnore) ||
572
- this.getEmptyPosition(marketToIgnore);
573
- let currentMarketPositionValueUSDC = numericConstants_1.ZERO;
574
- if (currentMarketPosition) {
575
- currentMarketPositionValueUSDC = this.getPositionValue(marketToIgnore);
576
- }
577
- return this.getTotalPositionValue().sub(currentMarketPositionValueUSDC);
578
- }
579
- }
580
- exports.ClearingHouseUser = ClearingHouseUser;
581
- //# sourceMappingURL=clearingHouseUser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clearingHouseUser.js","sourceRoot":"","sources":["clearingHouseUser.ts"],"names":[],"mappings":"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"}
package/src/config.js DELETED
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initialize = exports.getConfig = exports.configs = void 0;
4
- exports.configs = {
5
- devnet: {
6
- ENV: 'devnet',
7
- PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
8
- CLEARING_HOUSE_PROGRAM_ID: 'AsW7LnXB9UA1uec9wi9MctYTgTz7YH9snhxd16GsFaGX',
9
- USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
10
- },
11
- 'mainnet-beta': {
12
- ENV: 'mainnet-beta',
13
- PYTH_ORACLE_MAPPING_ADDRESS: 'AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J',
14
- CLEARING_HOUSE_PROGRAM_ID: 'dammHkt7jmytvbS3nHTxQNEcP59aE57nxwV21YdqEDN',
15
- USDC_MINT_ADDRESS: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
16
- },
17
- };
18
- let currentConfig = exports.configs.devnet;
19
- const getConfig = () => currentConfig;
20
- exports.getConfig = getConfig;
21
- /**
22
- * Allows customization of the SDK's environment and endpoints. You can pass individual settings to override the settings with your own presets.
23
- *
24
- * Defaults to master environment if you don't use this function.
25
- * @param props
26
- * @returns
27
- */
28
- const initialize = (props) => {
29
- var _a, _b;
30
- //@ts-ignore
31
- if (props.env === 'master')
32
- return { ...exports.configs['devnet'], ...((_a = props.overrideEnv) !== null && _a !== void 0 ? _a : {}) };
33
- currentConfig = { ...exports.configs[props.env], ...((_b = props.overrideEnv) !== null && _b !== void 0 ? _b : {}) };
34
- return currentConfig;
35
- };
36
- exports.initialize = initialize;
37
- //# sourceMappingURL=config.js.map
package/src/config.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":";;;AASa,QAAA,OAAO,GAAuC;IAC1D,MAAM,EAAE;QACP,GAAG,EAAE,QAAQ;QACb,2BAA2B,EAAE,8CAA8C;QAC3E,yBAAyB,EAAE,8CAA8C;QACzE,iBAAiB,EAAE,8CAA8C;KACjE;IACD,cAAc,EAAE;QACf,GAAG,EAAE,cAAc;QACnB,2BAA2B,EAAE,8CAA8C;QAC3E,yBAAyB,EAAE,6CAA6C;QACxE,iBAAiB,EAAE,8CAA8C;KACjE;CACD,CAAC;AAEF,IAAI,aAAa,GAAgB,eAAO,CAAC,MAAM,CAAC;AAEzC,MAAM,SAAS,GAAG,GAAgB,EAAE,CAAC,aAAa,CAAC;AAA7C,QAAA,SAAS,aAAoC;AAE1D;;;;;;GAMG;AACI,MAAM,UAAU,GAAG,CAAC,KAG1B,EAAe,EAAE;;IACjB,YAAY;IACZ,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,EAAE,GAAG,eAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAA,KAAK,CAAC,WAAW,mCAAI,EAAE,CAAC,EAAE,CAAC;IAE/D,aAAa,GAAG,EAAE,GAAG,eAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAA,KAAK,CAAC,WAAW,mCAAI,EAAE,CAAC,EAAE,CAAC;IAExE,OAAO,aAAa,CAAC;AACtB,CAAC,CAAC;AAXW,QAAA,UAAU,cAWrB"}