@drift-labs/sdk 0.1.12 → 0.1.16

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.
Files changed (83) hide show
  1. package/README.md +2 -2
  2. package/lib/accounts/defaultClearingHouseAccountSubscriber.d.ts +1 -0
  3. package/lib/accounts/defaultClearingHouseAccountSubscriber.d.ts.map +1 -1
  4. package/lib/accounts/defaultClearingHouseAccountSubscriber.js +17 -0
  5. package/lib/accounts/defaultUserAccountSubscriber.d.ts +2 -0
  6. package/lib/accounts/defaultUserAccountSubscriber.d.ts.map +1 -1
  7. package/lib/accounts/defaultUserAccountSubscriber.js +16 -0
  8. package/lib/accounts/types.d.ts +3 -21
  9. package/lib/accounts/types.d.ts.map +1 -1
  10. package/lib/accounts/webSocketAccountSubscriber.d.ts +2 -0
  11. package/lib/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
  12. package/lib/accounts/webSocketAccountSubscriber.js +13 -3
  13. package/lib/clearingHouse.d.ts +4 -0
  14. package/lib/clearingHouse.d.ts.map +1 -1
  15. package/lib/clearingHouse.js +8 -0
  16. package/lib/clearingHouseUser.d.ts +31 -3
  17. package/lib/clearingHouseUser.d.ts.map +1 -1
  18. package/lib/clearingHouseUser.js +213 -47
  19. package/lib/constants/markets.d.ts.map +1 -1
  20. package/lib/constants/markets.js +21 -0
  21. package/lib/constants/numericConstants.d.ts +1 -0
  22. package/lib/constants/numericConstants.d.ts.map +1 -1
  23. package/lib/constants/numericConstants.js +2 -1
  24. package/lib/examples/makeTradeExample.d.ts.map +1 -1
  25. package/lib/examples/makeTradeExample.js +14 -13
  26. package/lib/idl/clearing_house.json +94 -42
  27. package/lib/index.d.ts +4 -1
  28. package/lib/index.d.ts.map +1 -1
  29. package/lib/index.js +4 -1
  30. package/lib/math/amm.d.ts +26 -1
  31. package/lib/math/amm.d.ts.map +1 -1
  32. package/lib/math/amm.js +85 -10
  33. package/lib/math/funding.d.ts +6 -6
  34. package/lib/math/funding.d.ts.map +1 -1
  35. package/lib/math/funding.js +41 -22
  36. package/lib/math/insuranceFund.d.ts +15 -0
  37. package/lib/math/insuranceFund.d.ts.map +1 -0
  38. package/lib/math/insuranceFund.js +36 -0
  39. package/lib/math/position.d.ts +1 -1
  40. package/lib/math/position.d.ts.map +1 -1
  41. package/lib/math/position.js +15 -23
  42. package/lib/math/trade.d.ts +1 -1
  43. package/lib/math/trade.d.ts.map +1 -1
  44. package/lib/math/trade.js +9 -4
  45. package/lib/types.d.ts +0 -13
  46. package/lib/types.d.ts.map +1 -1
  47. package/lib/util/computeUnits.d.ts +3 -0
  48. package/lib/util/computeUnits.d.ts.map +1 -0
  49. package/lib/util/computeUnits.js +27 -0
  50. package/lib/util/tps.d.ts +3 -0
  51. package/lib/util/tps.d.ts.map +1 -0
  52. package/lib/util/tps.js +27 -0
  53. package/lib/wallet.d.ts +10 -0
  54. package/lib/wallet.d.ts.map +1 -0
  55. package/lib/wallet.js +35 -0
  56. package/package.json +3 -13
  57. package/src/accounts/defaultClearingHouseAccountSubscriber.ts +18 -0
  58. package/src/accounts/defaultUserAccountSubscriber.ts +18 -0
  59. package/src/accounts/types.ts +3 -28
  60. package/src/accounts/webSocketAccountSubscriber.ts +16 -6
  61. package/src/clearingHouse.ts +9 -3
  62. package/src/clearingHouseUser.ts +306 -65
  63. package/src/constants/markets.ts +21 -0
  64. package/src/constants/numericConstants.ts +2 -0
  65. package/src/examples/makeTradeExample.ts +2 -1
  66. package/src/idl/clearing_house.json +94 -42
  67. package/src/index.ts +4 -1
  68. package/src/math/amm.ts +120 -13
  69. package/src/math/funding.ts +47 -25
  70. package/src/math/insuranceFund.ts +29 -0
  71. package/src/math/position.ts +16 -28
  72. package/src/math/trade.ts +9 -5
  73. package/src/types.ts +0 -14
  74. package/src/util/computeUnits.ts +21 -0
  75. package/src/util/tps.ts +27 -0
  76. package/src/wallet.ts +22 -0
  77. package/.eslintrc.json +0 -36
  78. package/.prettierignore +0 -1
  79. package/.prettierrc.js +0 -9
  80. package/lib/accounts/defaultHistoryAccountSubscriber.d.ts +0 -29
  81. package/lib/accounts/defaultHistoryAccountSubscriber.d.ts.map +0 -1
  82. package/lib/accounts/defaultHistoryAccountSubscriber.js +0 -110
  83. package/src/accounts/defaultHistoryAccountSubscriber.ts +0 -179
@@ -20,7 +20,7 @@ const market_1 = require("./market");
20
20
  * @param periodAdjustment
21
21
  * @returns Estimated funding rate. : Precision //TODO-PRECISION
22
22
  */
23
- function calculateAllEstimatedFundingRate(market, pythClient, periodAdjustment = new anchor_1.BN(1)) {
23
+ function calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
24
24
  return __awaiter(this, void 0, void 0, function* () {
25
25
  // periodAdjustment
26
26
  // 1: hourly
@@ -51,13 +51,33 @@ function calculateAllEstimatedFundingRate(market, pythClient, periodAdjustment =
51
51
  const lastOraclePriceTwapTs = market.amm.lastOraclePriceTwapTs;
52
52
  const timeSinceLastOracleTwapUpdate = now.sub(lastOraclePriceTwapTs);
53
53
  const oracleTwapTimeSinceLastUpdate = anchor_1.BN.max(secondsInHour, secondsInHour.sub(timeSinceLastOracleTwapUpdate));
54
- const oraclePriceData = yield pythClient.getPriceData(market.amm.oracle);
55
- const oraclePriceStableWithMantissa = new anchor_1.BN(((oraclePriceData.price + oraclePriceData.previousPrice) / 2) *
56
- numericConstants_1.MARK_PRICE_PRECISION.toNumber());
57
- const oracleTwapWithMantissa = oracleTwapTimeSinceLastUpdate
58
- .mul(lastOracleTwapWithMantissa)
59
- .add(timeSinceLastMarkChange.mul(oraclePriceStableWithMantissa))
60
- .div(timeSinceLastOracleTwapUpdate.add(oracleTwapTimeSinceLastUpdate));
54
+ // verify pyth input is positive for live update
55
+ let oracleStablePriceNum = 0;
56
+ let oracleInputCount = 0;
57
+ if (oraclePriceData.price >= 0) {
58
+ oracleStablePriceNum += oraclePriceData.price;
59
+ oracleInputCount += 1;
60
+ }
61
+ if (oraclePriceData.previousPrice >= 0) {
62
+ oracleStablePriceNum += oraclePriceData.previousPrice;
63
+ oracleInputCount += 1;
64
+ }
65
+ oracleStablePriceNum = oracleStablePriceNum / oracleInputCount;
66
+ const oraclePriceStableWithMantissa = new anchor_1.BN(oracleStablePriceNum * numericConstants_1.MARK_PRICE_PRECISION.toNumber());
67
+ let oracleTwapWithMantissa = lastOracleTwapWithMantissa;
68
+ const oracleLiveVsTwap = oraclePriceStableWithMantissa
69
+ .sub(lastOracleTwapWithMantissa)
70
+ .abs()
71
+ .mul(numericConstants_1.MARK_PRICE_PRECISION)
72
+ .mul(new anchor_1.BN(100))
73
+ .div(lastOracleTwapWithMantissa);
74
+ // verify pyth live input is within 10% of last twap for live update
75
+ if (oracleLiveVsTwap.lte(numericConstants_1.MARK_PRICE_PRECISION.mul(new anchor_1.BN(10)))) {
76
+ oracleTwapWithMantissa = oracleTwapTimeSinceLastUpdate
77
+ .mul(lastOracleTwapWithMantissa)
78
+ .add(timeSinceLastMarkChange.mul(oraclePriceStableWithMantissa))
79
+ .div(timeSinceLastOracleTwapUpdate.add(oracleTwapTimeSinceLastUpdate));
80
+ }
61
81
  const twapSpread = markTwapWithMantissa.sub(oracleTwapWithMantissa);
62
82
  const twapSpreadPct = twapSpread
63
83
  .mul(numericConstants_1.MARK_PRICE_PRECISION)
@@ -118,19 +138,18 @@ function calculateAllEstimatedFundingRate(market, pythClient, periodAdjustment =
118
138
  ];
119
139
  }
120
140
  if (largerSide.gt(numericConstants_1.ZERO)) {
121
- cappedAltEst = smallerSide.mul(twapSpread).div(largerSide);
141
+ // funding smaller flow
142
+ cappedAltEst = smallerSide.mul(twapSpread).div(hoursInDay);
122
143
  const feePoolTopOff = feePoolSize
123
144
  .mul(numericConstants_1.MARK_PRICE_PRECISION.div(numericConstants_1.QUOTE_PRECISION))
124
- .mul(numericConstants_1.AMM_RESERVE_PRECISION)
125
- .div(largerSide);
126
- cappedAltEst = cappedAltEst.add(feePoolTopOff);
145
+ .mul(numericConstants_1.AMM_RESERVE_PRECISION);
146
+ cappedAltEst = cappedAltEst.add(feePoolTopOff).div(largerSide);
127
147
  cappedAltEst = cappedAltEst
128
148
  .mul(numericConstants_1.MARK_PRICE_PRECISION)
129
149
  .mul(new anchor_1.BN(100))
130
150
  .div(oracleTwapWithMantissa)
131
- .mul(periodAdjustment)
132
- .div(hoursInDay);
133
- if (cappedAltEst.abs().gt(interpEst.abs())) {
151
+ .mul(periodAdjustment);
152
+ if (cappedAltEst.abs().gte(interpEst.abs())) {
134
153
  cappedAltEst = interpEst;
135
154
  }
136
155
  }
@@ -150,14 +169,14 @@ exports.calculateAllEstimatedFundingRate = calculateAllEstimatedFundingRate;
150
169
  /**
151
170
  *
152
171
  * @param market
153
- * @param pythClient
172
+ * @param oraclePriceData
154
173
  * @param periodAdjustment
155
174
  * @param estimationMethod
156
175
  * @returns Estimated funding rate. : Precision //TODO-PRECISION
157
176
  */
158
- function calculateEstimatedFundingRate(market, pythClient, periodAdjustment = new anchor_1.BN(1), estimationMethod) {
177
+ function calculateEstimatedFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1), estimationMethod) {
159
178
  return __awaiter(this, void 0, void 0, function* () {
160
- const [_1, _2, lowerboundEst, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, pythClient, periodAdjustment);
179
+ const [_1, _2, lowerboundEst, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
161
180
  if (estimationMethod == 'lowerbound') {
162
181
  //assuming remaining funding period has no gap
163
182
  return lowerboundEst;
@@ -179,9 +198,9 @@ exports.calculateEstimatedFundingRate = calculateEstimatedFundingRate;
179
198
  * @param estimationMethod
180
199
  * @returns Estimated funding rate. : Precision //TODO-PRECISION
181
200
  */
182
- function calculateLongShortFundingRate(market, pythClient, periodAdjustment = new anchor_1.BN(1)) {
201
+ function calculateLongShortFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
183
202
  return __awaiter(this, void 0, void 0, function* () {
184
- const [_1, _2, _, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, pythClient, periodAdjustment);
203
+ const [_1, _2, _, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
185
204
  if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort)) {
186
205
  return [cappedAltEst, interpEst];
187
206
  }
@@ -202,9 +221,9 @@ exports.calculateLongShortFundingRate = calculateLongShortFundingRate;
202
221
  * @param estimationMethod
203
222
  * @returns Estimated funding rate. : Precision //TODO-PRECISION
204
223
  */
205
- function calculateLongShortFundingRateAndLiveTwaps(market, pythClient, periodAdjustment = new anchor_1.BN(1)) {
224
+ function calculateLongShortFundingRateAndLiveTwaps(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
206
225
  return __awaiter(this, void 0, void 0, function* () {
207
- const [markTwapLive, oracleTwapLive, _2, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, pythClient, periodAdjustment);
226
+ const [markTwapLive, oracleTwapLive, _2, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
208
227
  if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort.abs())) {
209
228
  return [markTwapLive, oracleTwapLive, cappedAltEst, interpEst];
210
229
  }
@@ -0,0 +1,15 @@
1
+ import { MarketsAccount, StateAccount } from '../types';
2
+ import BN from 'bn.js';
3
+ import { Connection } from '@solana/web3.js';
4
+ /**
5
+ * In the case of a levered loss, the exchange first pays out undistributed fees and then the insurance fund.
6
+ * Thus the de facto size of the insurance fund is the amount in the insurance vault plus the sum of each markets
7
+ * undistributed fees.
8
+ *
9
+ * @param connection
10
+ * @param state
11
+ * @param marketsAccount
12
+ * @returns Precision : QUOTE_ASSET_PRECISION
13
+ */
14
+ export declare function calculateInsuranceFundSize(connection: Connection, state: StateAccount, marketsAccount: MarketsAccount): Promise<BN>;
15
+ //# sourceMappingURL=insuranceFund.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insuranceFund.d.ts","sourceRoot":"","sources":["../../src/math/insuranceFund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC/C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,cAAc,GAC5B,OAAO,CAAC,EAAE,CAAC,CAUb"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.calculateInsuranceFundSize = void 0;
16
+ const bn_js_1 = __importDefault(require("bn.js"));
17
+ /**
18
+ * In the case of a levered loss, the exchange first pays out undistributed fees and then the insurance fund.
19
+ * Thus the de facto size of the insurance fund is the amount in the insurance vault plus the sum of each markets
20
+ * undistributed fees.
21
+ *
22
+ * @param connection
23
+ * @param state
24
+ * @param marketsAccount
25
+ * @returns Precision : QUOTE_ASSET_PRECISION
26
+ */
27
+ function calculateInsuranceFundSize(connection, state, marketsAccount) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ const insuranceVaultPublicKey = state.insuranceVault;
30
+ const insuranceVaultAmount = new bn_js_1.default((yield connection.getTokenAccountBalance(insuranceVaultPublicKey)).value.amount);
31
+ return marketsAccount.markets.reduce((insuranceVaultAmount, market) => {
32
+ return insuranceVaultAmount.add(market.amm.totalFee.div(new bn_js_1.default(2)));
33
+ }, insuranceVaultAmount);
34
+ });
35
+ }
36
+ exports.calculateInsuranceFundSize = calculateInsuranceFundSize;
@@ -1,5 +1,5 @@
1
- import { Market, UserPosition } from '../types';
2
1
  import BN from 'bn.js';
2
+ import { Market, UserPosition } from '../types';
3
3
  /**
4
4
  * calculateBaseAssetValue
5
5
  * = market value of closing entire position
@@ -1 +1 @@
1
- {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/math/position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,YAAY,EAAE,MAAM,UAAU,CAAC;AAQnE,OAAO,EAAE,MAAM,OAAO,CAAC;AAQvB;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACxB,EAAE,CA+BJ;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,YAAY,EAC5B,WAAW,UAAQ,GACjB,EAAE,CAgCJ;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,YAAY,GAC1B,EAAE,CAoBJ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,EAAE,CAUlE"}
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/math/position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AAWvB,OAAO,EAAE,MAAM,EAAqB,YAAY,EAAE,MAAM,UAAU,CAAC;AAGnE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACxB,EAAE,CA6BJ;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,YAAY,EAC5B,WAAW,UAAQ,GACjB,EAAE,CAwBJ;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,YAAY,GAC1B,EAAE,CAoBJ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,EAAE,CAUlE"}
@@ -4,11 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.calculateEntryPrice = exports.calculatePositionFundingPNL = exports.calculatePositionPNL = exports.calculateBaseAssetValue = void 0;
7
- const types_1 = require("../types");
8
- const numericConstants_1 = require("../constants/numericConstants");
9
7
  const bn_js_1 = __importDefault(require("bn.js"));
8
+ const numericConstants_1 = require("../constants/numericConstants");
9
+ const types_1 = require("../types");
10
10
  const amm_1 = require("./amm");
11
- const numericConstants_2 = require("../constants/numericConstants");
12
11
  /**
13
12
  * calculateBaseAssetValue
14
13
  * = market value of closing entire position
@@ -29,14 +28,12 @@ function calculateBaseAssetValue(market, userPosition) {
29
28
  return market.amm.quoteAssetReserve
30
29
  .sub(newQuoteAssetReserve)
31
30
  .mul(market.amm.pegMultiplier)
32
- .div(numericConstants_1.PEG_PRECISION)
33
- .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
31
+ .div(numericConstants_1.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);
34
32
  case types_1.PositionDirection.LONG:
35
33
  return newQuoteAssetReserve
36
34
  .sub(market.amm.quoteAssetReserve)
37
35
  .mul(market.amm.pegMultiplier)
38
- .div(numericConstants_1.PEG_PRECISION)
39
- .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
36
+ .div(numericConstants_1.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);
40
37
  }
41
38
  }
42
39
  exports.calculateBaseAssetValue = calculateBaseAssetValue;
@@ -52,24 +49,19 @@ function calculatePositionPNL(market, marketPosition, withFunding = false) {
52
49
  if (marketPosition.baseAssetAmount.eq(numericConstants_1.ZERO)) {
53
50
  return numericConstants_1.ZERO;
54
51
  }
55
- const directionToClose = marketPosition.baseAssetAmount.gt(numericConstants_1.ZERO)
56
- ? types_1.PositionDirection.SHORT
57
- : types_1.PositionDirection.LONG;
58
52
  const baseAssetValue = calculateBaseAssetValue(market, marketPosition);
59
- let pnlAssetAmount;
60
- switch (directionToClose) {
61
- case types_1.PositionDirection.SHORT:
62
- pnlAssetAmount = baseAssetValue.sub(marketPosition.quoteAssetAmount);
63
- break;
64
- case types_1.PositionDirection.LONG:
65
- pnlAssetAmount = marketPosition.quoteAssetAmount.sub(baseAssetValue);
66
- break;
53
+ let pnl;
54
+ if (marketPosition.baseAssetAmount.gt(numericConstants_1.ZERO)) {
55
+ pnl = baseAssetValue.sub(marketPosition.quoteAssetAmount);
56
+ }
57
+ else {
58
+ pnl = marketPosition.quoteAssetAmount.sub(baseAssetValue).sub(numericConstants_1.ONE);
67
59
  }
68
60
  if (withFunding) {
69
- const fundingRatePnL = calculatePositionFundingPNL(market, marketPosition).div(numericConstants_2.PRICE_TO_QUOTE_PRECISION);
70
- pnlAssetAmount = pnlAssetAmount.add(fundingRatePnL);
61
+ const fundingRatePnL = calculatePositionFundingPNL(market, marketPosition).div(numericConstants_1.PRICE_TO_QUOTE_PRECISION);
62
+ pnl = pnl.add(fundingRatePnL);
71
63
  }
72
- return pnlAssetAmount;
64
+ return pnl;
73
65
  }
74
66
  exports.calculatePositionPNL = calculatePositionPNL;
75
67
  /**
@@ -92,8 +84,8 @@ function calculatePositionFundingPNL(market, marketPosition) {
92
84
  const perPositionFundingRate = ammCumulativeFundingRate
93
85
  .sub(marketPosition.lastCumulativeFundingRate)
94
86
  .mul(marketPosition.baseAssetAmount)
95
- .div(numericConstants_2.AMM_RESERVE_PRECISION)
96
- .div(numericConstants_2.FUNDING_PAYMENT_PRECISION)
87
+ .div(numericConstants_1.AMM_RESERVE_PRECISION)
88
+ .div(numericConstants_1.FUNDING_PAYMENT_PRECISION)
97
89
  .mul(new bn_js_1.default(-1));
98
90
  return perPositionFundingRate;
99
91
  }
@@ -44,5 +44,5 @@ export declare function calculateTradeAcquiredAmounts(direction: PositionDirecti
44
44
  * targetPrice => the target price TODO-PRECISION
45
45
  * ]
46
46
  */
47
- export declare function calculateTargetPriceTrade(market: Market, targetPrice: BN, pct?: BN): [PositionDirection, BN, BN, BN];
47
+ export declare function calculateTargetPriceTrade(market: Market, targetPrice: BN, pct?: BN, outputAssetType?: AssetType): [PositionDirection, BN, BN, BN];
48
48
  //# sourceMappingURL=trade.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trade.d.ts","sourceRoot":"","sources":["../../src/math/trade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAS3C,OAAO,EAIN,SAAS,EACT,MAAM,OAAO,CAAC;AAKf,oBAAY,eAAe,GACxB,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,oBAAoB,GACpB,QAAQ,GACR,QAAQ,GACR,kBAAkB,GAClB,qBAAqB,GACrB,yBAAyB,GACzB,0BAA0B,GAC1B,KAAK,CAAC;AAET;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAmB,GACjC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CA0ClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAmB,GACjC,CAAC,EAAE,EAAE,EAAE,CAAC,CAiBV;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,EAAE,EACf,GAAG,GAAE,EAAW,GACd,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CA6GjC"}
1
+ {"version":3,"file":"trade.d.ts","sourceRoot":"","sources":["../../src/math/trade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAS3C,OAAO,EAIN,SAAS,EACT,MAAM,OAAO,CAAC;AAKf,oBAAY,eAAe,GACxB,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,oBAAoB,GACpB,QAAQ,GACR,QAAQ,GACR,kBAAkB,GAClB,qBAAqB,GACrB,yBAAyB,GACzB,0BAA0B,GAC1B,KAAK,CAAC;AAET;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAmB,GACjC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CA0ClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAmB,GACjC,CAAC,EAAE,EAAE,EAAE,CAAC,CAiBV;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,EAAE,EACf,GAAG,GAAE,EAAW,EAChB,eAAe,GAAE,SAAmB,GAClC,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAgHjC"}
package/lib/math/trade.js CHANGED
@@ -85,7 +85,7 @@ exports.calculateTradeAcquiredAmounts = calculateTradeAcquiredAmounts;
85
85
  * targetPrice => the target price TODO-PRECISION
86
86
  * ]
87
87
  */
88
- function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT) {
88
+ function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT, outputAssetType = 'quote') {
89
89
  assert_1.assert(market.amm.baseAssetReserve.gt(numericConstants_1.ZERO));
90
90
  assert_1.assert(targetPrice.gt(numericConstants_1.ZERO));
91
91
  assert_1.assert(pct.lte(MAXPCT) && pct.gt(numericConstants_1.ZERO));
@@ -125,7 +125,7 @@ function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT) {
125
125
  .mul(peg)
126
126
  .div(numericConstants_1.PEG_PRECISION)
127
127
  .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
128
- baseSize = baseAssetReserveBefore.sub(baseAssetReserveAfter);
128
+ baseSize = baseAssetReserveAfter.sub(baseAssetReserveBefore);
129
129
  }
130
130
  else if (markPriceBefore.lt(targetPrice)) {
131
131
  // underestimate y2
@@ -140,7 +140,7 @@ function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT) {
140
140
  .mul(peg)
141
141
  .div(numericConstants_1.PEG_PRECISION)
142
142
  .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
143
- baseSize = baseAssetReserveAfter.sub(baseAssetReserveBefore);
143
+ baseSize = baseAssetReserveBefore.sub(baseAssetReserveAfter);
144
144
  }
145
145
  else {
146
146
  // no trade, market is at target
@@ -167,6 +167,11 @@ function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT) {
167
167
  tp1.toString() +
168
168
  'err: ' +
169
169
  tp2.sub(tp1).abs().toString());
170
- return [direction, tradeSize, entryPrice, targetPrice];
170
+ if (outputAssetType == 'quote') {
171
+ return [direction, tradeSize, entryPrice, targetPrice];
172
+ }
173
+ else {
174
+ return [direction, baseSize, entryPrice, targetPrice];
175
+ }
171
176
  }
172
177
  exports.calculateTargetPriceTrade = calculateTargetPriceTrade;
package/lib/types.d.ts CHANGED
@@ -224,9 +224,6 @@ export declare type UserPosition = {
224
224
  lastCumulativeFundingRate: BN;
225
225
  marketIndex: BN;
226
226
  quoteAssetAmount: BN;
227
- unrealizedPnl?: BN;
228
- unrealizedFundingPnl?: BN;
229
- baseAssetValue?: BN;
230
227
  };
231
228
  export declare type UserPositionsAccount = {
232
229
  positions: UserPosition[];
@@ -239,16 +236,6 @@ export declare type UserAccount = {
239
236
  positions: PublicKey;
240
237
  totalFeePaid: BN;
241
238
  };
242
- export declare type UserSnapshotRecord = {
243
- ts: BN;
244
- userAuthority: PublicKey;
245
- user: PublicKey;
246
- userPositions: UserPosition[];
247
- userTotalRealizedPnl: BN;
248
- userTotalUnrealizedPnl: BN;
249
- userTotalUnrealizedFundingPnl: BN;
250
- userCollateral: BN;
251
- };
252
239
  export interface IWallet {
253
240
  signTransaction(tx: Transaction): Promise<Transaction>;
254
241
  signAllTransactions(txs: Transaction[]): Promise<Transaction[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Connection, Finality, PublicKey } from '@solana/web3.js';
2
+ export declare function findComputeUnitConsumption(programId: PublicKey, connection: Connection, txSignature: string, commitment?: Finality): Promise<number[]>;
3
+ //# sourceMappingURL=computeUnits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeUnits.d.ts","sourceRoot":"","sources":["../../src/util/computeUnits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAElE,wBAAsB,0BAA0B,CAC/C,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,QAAsB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAanB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.findComputeUnitConsumption = void 0;
13
+ function findComputeUnitConsumption(programId, connection, txSignature, commitment = 'confirmed') {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const tx = yield connection.getTransaction(txSignature, { commitment });
16
+ const computeUnits = [];
17
+ const regex = new RegExp(`Program ${programId.toString()} consumed ([0-9]{0,6}) of 200000 compute units`);
18
+ tx.meta.logMessages.forEach((logMessage) => {
19
+ const match = logMessage.match(regex);
20
+ if (match && match[1]) {
21
+ computeUnits.push(match[1]);
22
+ }
23
+ });
24
+ return computeUnits;
25
+ });
26
+ }
27
+ exports.findComputeUnitConsumption = findComputeUnitConsumption;
@@ -0,0 +1,3 @@
1
+ import { Connection, PublicKey } from '@solana/web3.js';
2
+ export declare function estimateTps(programId: PublicKey, connection: Connection, failed: boolean): Promise<number>;
3
+ //# sourceMappingURL=tps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tps.d.ts","sourceRoot":"","sources":["../../src/util/tps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,wBAAsB,WAAW,CAChC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,OAAO,GACb,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.estimateTps = void 0;
13
+ function estimateTps(programId, connection, failed) {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ let signatures = yield connection.getSignaturesForAddress(programId, undefined, 'finalized');
16
+ if (failed) {
17
+ signatures = signatures.filter((signature) => signature.err);
18
+ }
19
+ const numberOfSignatures = signatures.length;
20
+ if (numberOfSignatures === 0) {
21
+ return 0;
22
+ }
23
+ return (numberOfSignatures /
24
+ (signatures[0].blockTime - signatures[numberOfSignatures - 1].blockTime));
25
+ });
26
+ }
27
+ exports.estimateTps = estimateTps;
@@ -0,0 +1,10 @@
1
+ import { Keypair, PublicKey, Transaction } from '@solana/web3.js';
2
+ import { IWallet } from './types';
3
+ export declare class Wallet implements IWallet {
4
+ readonly payer: Keypair;
5
+ constructor(payer: Keypair);
6
+ signTransaction(tx: Transaction): Promise<Transaction>;
7
+ signAllTransactions(txs: Transaction[]): Promise<Transaction[]>;
8
+ get publicKey(): PublicKey;
9
+ }
10
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,MAAO,YAAW,OAAO;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;IAE7B,eAAe,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAKtD,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOrE,IAAI,SAAS,IAAI,SAAS,CAEzB;CACD"}
package/lib/wallet.js ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Wallet = void 0;
13
+ class Wallet {
14
+ constructor(payer) {
15
+ this.payer = payer;
16
+ }
17
+ signTransaction(tx) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ tx.partialSign(this.payer);
20
+ return tx;
21
+ });
22
+ }
23
+ signAllTransactions(txs) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ return txs.map((t) => {
26
+ t.partialSign(this.payer);
27
+ return t;
28
+ });
29
+ });
30
+ }
31
+ get publicKey() {
32
+ return this.payer.publicKey;
33
+ }
34
+ }
35
+ exports.Wallet = Wallet;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "0.1.12",
3
+ "version": "0.1.16",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "author": "crispheaney",
@@ -12,9 +12,7 @@
12
12
  "scripts": {
13
13
  "build": "yarn clean && tsc",
14
14
  "clean": "rm -rf lib",
15
- "patch-and-pub": "npm version patch --force && npm publish",
16
- "prettify": "prettier --write './src/**/*.{ts,tsx}'",
17
- "lint": "eslint . --ext ts --ext tsx --ext js --quiet"
15
+ "patch-and-pub": "npm version patch --force && npm publish"
18
16
  },
19
17
  "keywords": [
20
18
  "drift-labs",
@@ -29,21 +27,13 @@
29
27
  "access": "public"
30
28
  },
31
29
  "dependencies": {
32
- "@project-serum/anchor": "^0.16.1",
30
+ "@project-serum/anchor": "0.19.1-beta.1",
33
31
  "@pythnetwork/client": "^2.4.0",
34
32
  "@solana/spl-token": "^0.1.6",
35
33
  "@solana/web3.js": "^1.22.0",
36
34
  "@types/bn.js": "^5.1.0",
37
35
  "strict-event-emitter-types": "^2.0.0"
38
36
  },
39
- "devDependencies": {
40
- "@typescript-eslint/eslint-plugin": "^4.28.0",
41
- "@typescript-eslint/parser": "^4.28.0",
42
- "eslint": "^7.29.0",
43
- "eslint-config-prettier": "^8.3.0",
44
- "eslint-plugin-prettier": "^3.4.0",
45
- "prettier": "^2.4.1"
46
- },
47
37
  "description": "SDK for Drift Protocol v1",
48
38
  "engines": {
49
39
  "node": ">=12"
@@ -194,6 +194,24 @@ export class DefaultClearingHouseAccountSubscriber
194
194
  return true;
195
195
  }
196
196
 
197
+ public async fetch(): Promise<void> {
198
+ if (!this.isSubscribed) {
199
+ return;
200
+ }
201
+
202
+ const promises = this.optionalExtraSubscriptions
203
+ .map((optionalSubscription) => {
204
+ const subscriber = `${optionalSubscription}Subscriber`;
205
+ return this[subscriber].fetch();
206
+ })
207
+ .concat([
208
+ this.stateAccountSubscriber.fetch(),
209
+ this.marketsAccountSubscriber.fetch(),
210
+ ]);
211
+
212
+ await Promise.all(promises);
213
+ }
214
+
197
215
  public async unsubscribe(): Promise<void> {
198
216
  if (!this.isSubscribed) {
199
217
  return;
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  AccountSubscriber,
3
+ NotSubscribedError,
3
4
  UserAccountEvents,
4
5
  UserAccountSubscriber,
5
6
  } from './types';
@@ -65,6 +66,13 @@ export class DefaultUserAccountSubscriber implements UserAccountSubscriber {
65
66
  return true;
66
67
  }
67
68
 
69
+ async fetch(): Promise<void> {
70
+ await Promise.all([
71
+ this.userDataAccountSubscriber.fetch(),
72
+ this.userPositionsAccountSubscriber.fetch(),
73
+ ]);
74
+ }
75
+
68
76
  async unsubscribe(): Promise<void> {
69
77
  if (!this.isSubscribed) {
70
78
  return;
@@ -76,11 +84,21 @@ export class DefaultUserAccountSubscriber implements UserAccountSubscriber {
76
84
  this.isSubscribed = false;
77
85
  }
78
86
 
87
+ assertIsSubscribed(): void {
88
+ if (!this.isSubscribed) {
89
+ throw new NotSubscribedError(
90
+ 'You must call `subscribe` before using this function'
91
+ );
92
+ }
93
+ }
94
+
79
95
  public getUserAccount(): UserAccount {
96
+ this.assertIsSubscribed();
80
97
  return this.userDataAccountSubscriber.data;
81
98
  }
82
99
 
83
100
  public getUserPositionsAccount(): UserPositionsAccount {
101
+ this.assertIsSubscribed();
84
102
  return this.userPositionsAccountSubscriber.data;
85
103
  }
86
104
  }