@drift-labs/sdk 0.1.29 → 0.1.30-master.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.
Files changed (85) hide show
  1. package/lib/accounts/bulkAccountLoader.d.ts +2 -1
  2. package/lib/accounts/bulkAccountLoader.js +44 -32
  3. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +15 -0
  4. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +50 -23
  5. package/lib/clearingHouse.d.ts +0 -1
  6. package/lib/clearingHouse.js +0 -14
  7. package/lib/constants/accounts.d.ts +15 -0
  8. package/lib/constants/accounts.js +18 -0
  9. package/lib/factory/clearingHouse.d.ts +14 -4
  10. package/lib/factory/clearingHouse.js +23 -6
  11. package/lib/idl/clearing_house.json +2 -33
  12. package/lib/index.d.ts +0 -1
  13. package/lib/index.js +0 -1
  14. package/lib/math/amm.d.ts +20 -0
  15. package/lib/math/amm.js +151 -1
  16. package/lib/tx/retryTxSender.d.ts +5 -2
  17. package/lib/tx/retryTxSender.js +14 -1
  18. package/lib/util/promiseTimeout.d.ts +1 -0
  19. package/lib/util/promiseTimeout.js +14 -0
  20. package/package.json +1 -1
  21. package/src/accounts/bulkAccountLoader.ts +51 -40
  22. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +73 -30
  23. package/src/clearingHouse.ts +0 -13
  24. package/src/constants/accounts.ts +26 -0
  25. package/src/factory/clearingHouse.ts +47 -7
  26. package/src/idl/clearing_house.json +2 -33
  27. package/src/index.ts +0 -1
  28. package/src/math/amm.ts +212 -1
  29. package/src/tx/retryTxSender.ts +19 -1
  30. package/src/util/promiseTimeout.ts +14 -0
  31. package/lib/math/repeg.d.ts +0 -32
  32. package/lib/math/repeg.js +0 -178
  33. package/src/accounts/pollingClearingHouseAccountSubscriber.js +0 -210
  34. package/src/accounts/pollingClearingHouseAccountSubscriber.js.map +0 -1
  35. package/src/accounts/pollingOracleSubscriber.js +0 -65
  36. package/src/accounts/pollingOracleSubscriber.js.map +0 -1
  37. package/src/accounts/pollingTokenAccountSubscriber.js +0 -65
  38. package/src/accounts/pollingTokenAccountSubscriber.js.map +0 -1
  39. package/src/accounts/utils.js +0 -8
  40. package/src/accounts/utils.js.map +0 -1
  41. package/src/accounts/webSocketAccountSubscriber.js +0 -64
  42. package/src/accounts/webSocketAccountSubscriber.js.map +0 -1
  43. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +0 -212
  44. package/src/accounts/webSocketClearingHouseAccountSubscriber.js.map +0 -1
  45. package/src/assert/assert.js +0 -10
  46. package/src/assert/assert.js.map +0 -1
  47. package/src/constants/markets.js +0 -167
  48. package/src/constants/markets.js.map +0 -1
  49. package/src/constants/numericConstants.js +0 -22
  50. package/src/constants/numericConstants.js.map +0 -1
  51. package/src/math/conversion.js +0 -16
  52. package/src/math/conversion.js.map +0 -1
  53. package/src/math/funding.js +0 -223
  54. package/src/math/funding.js.map +0 -1
  55. package/src/math/insuranceFund.js +0 -23
  56. package/src/math/insuranceFund.js.map +0 -1
  57. package/src/math/market.js +0 -30
  58. package/src/math/market.js.map +0 -1
  59. package/src/math/orders.js +0 -73
  60. package/src/math/orders.js.map +0 -1
  61. package/src/math/position.js +0 -121
  62. package/src/math/position.js.map +0 -1
  63. package/src/math/repeg.ts +0 -253
  64. package/src/math/trade.js +0 -182
  65. package/src/math/trade.js.map +0 -1
  66. package/src/math/utils.js +0 -27
  67. package/src/math/utils.js.map +0 -1
  68. package/src/oracles/switchboardClient.js +0 -60
  69. package/src/oracles/switchboardClient.js.map +0 -1
  70. package/src/oracles/types.js +0 -3
  71. package/src/oracles/types.js.map +0 -1
  72. package/src/token/index.js +0 -39
  73. package/src/token/index.js.map +0 -1
  74. package/src/tx/defaultTxSender.js +0 -13
  75. package/src/tx/defaultTxSender.js.map +0 -1
  76. package/src/tx/retryTxSender.js +0 -137
  77. package/src/tx/retryTxSender.js.map +0 -1
  78. package/src/tx/types.js +0 -3
  79. package/src/tx/types.js.map +0 -1
  80. package/src/tx/utils.js +0 -9
  81. package/src/tx/utils.js.map +0 -1
  82. package/src/util/computeUnits.js +0 -17
  83. package/src/util/computeUnits.js.map +0 -1
  84. package/src/util/tps.js +0 -17
  85. package/src/util/tps.js.map +0 -1
package/src/math/repeg.ts DELETED
@@ -1,253 +0,0 @@
1
- import { BN } from '@project-serum/anchor';
2
- import {
3
- MARK_PRICE_PRECISION,
4
- AMM_RESERVE_PRECISION,
5
- PEG_PRECISION,
6
- AMM_TO_QUOTE_PRECISION_RATIO,
7
- QUOTE_PRECISION,
8
- ZERO,
9
- } from '../constants/numericConstants';
10
- import { calculateBaseAssetValue } from './position';
11
- import { calculateTerminalPrice } from './amm';
12
-
13
- import { Market } from '../types';
14
- import { calculatePositionPNL, calculateMarkPrice, convertToNumber } from '..';
15
-
16
- /**
17
- * Helper function calculating adjust k cost
18
- * @param market
19
- * @param marketIndex
20
- * @param numerator
21
- * @param denomenator
22
- * @returns cost : Precision QUOTE_ASSET_PRECISION
23
- */
24
- export function calculateAdjustKCost(
25
- market: Market,
26
- marketIndex: BN,
27
- numerator: BN,
28
- denomenator: BN
29
- ): BN {
30
- const netUserPosition = {
31
- baseAssetAmount: market.baseAssetAmount,
32
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
33
- marketIndex: new BN(marketIndex),
34
- quoteAssetAmount: ZERO,
35
- openOrders: ZERO,
36
- };
37
-
38
- const currentValue = calculateBaseAssetValue(market, netUserPosition);
39
-
40
- const marketNewK = Object.assign({}, market);
41
- marketNewK.amm = Object.assign({}, market.amm);
42
-
43
- marketNewK.amm.baseAssetReserve = market.amm.baseAssetReserve
44
- .mul(numerator)
45
- .div(denomenator);
46
- marketNewK.amm.quoteAssetReserve = market.amm.quoteAssetReserve
47
- .mul(numerator)
48
- .div(denomenator);
49
- marketNewK.amm.sqrtK = market.amm.sqrtK.mul(numerator).div(denomenator);
50
-
51
- netUserPosition.quoteAssetAmount = currentValue;
52
-
53
- const cost = calculatePositionPNL(marketNewK, netUserPosition);
54
-
55
- return cost;
56
- }
57
-
58
- /**
59
- * Helper function calculating adjust pegMultiplier (repeg) cost
60
- *
61
- * @param market
62
- * @param marketIndex
63
- * @param newPeg
64
- * @returns cost : Precision QUOTE_ASSET_PRECISION
65
- */
66
- export function calculateRepegCost(
67
- market: Market,
68
- marketIndex: BN,
69
- newPeg: BN
70
- ): BN {
71
- const netUserPosition = {
72
- baseAssetAmount: market.baseAssetAmount,
73
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
74
- marketIndex: new BN(marketIndex),
75
- quoteAssetAmount: new BN(0),
76
- openOrders: ZERO,
77
- };
78
-
79
- const currentValue = calculateBaseAssetValue(market, netUserPosition);
80
- netUserPosition.quoteAssetAmount = currentValue;
81
- const prevMarketPrice = calculateMarkPrice(market);
82
- const marketNewPeg = Object.assign({}, market);
83
- marketNewPeg.amm = Object.assign({}, market.amm);
84
-
85
- // const marketNewPeg = JSON.parse(JSON.stringify(market));
86
- marketNewPeg.amm.pegMultiplier = newPeg;
87
-
88
- console.log(
89
- 'Price moves from',
90
- convertToNumber(prevMarketPrice),
91
- 'to',
92
- convertToNumber(calculateMarkPrice(marketNewPeg))
93
- );
94
-
95
- const cost = calculatePositionPNL(marketNewPeg, netUserPosition);
96
-
97
- return cost;
98
- }
99
-
100
- /**
101
- * Helper function calculating adjust pegMultiplier (repeg) cost
102
- *
103
- * @param market
104
- * @param marketIndex
105
- * @param newPeg
106
- * @returns cost : Precision QUOTE_ASSET_PRECISION
107
- */
108
- export function calculateReserveRebalanceCost(
109
- market: Market,
110
- marketIndex: BN
111
- ): BN {
112
- const netUserPosition = {
113
- baseAssetAmount: market.baseAssetAmount,
114
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
115
- marketIndex: new BN(marketIndex),
116
- quoteAssetAmount: new BN(0),
117
- openOrders: ZERO,
118
- };
119
-
120
- const currentValue = calculateBaseAssetValue(market, netUserPosition);
121
- netUserPosition.quoteAssetAmount = currentValue;
122
- const prevMarketPrice = calculateMarkPrice(market);
123
- const marketNewPeg = Object.assign({}, market);
124
- marketNewPeg.amm = Object.assign({}, market.amm);
125
-
126
- // const marketNewPeg = JSON.parse(JSON.stringify(market));
127
- const newPeg = calculateTerminalPrice(market)
128
- .mul(PEG_PRECISION)
129
- .div(MARK_PRICE_PRECISION);
130
- // const newPeg = prevMarketPrice.mul(PEG_PRECISION).div(MARK_PRICE_PRECISION);
131
-
132
- const newBaseReserve = market.amm.baseAssetReserve.add(
133
- market.baseAssetAmount
134
- );
135
- const newQuoteReserve = market.amm.sqrtK
136
- .mul(market.amm.sqrtK)
137
- .div(newBaseReserve);
138
- console.log(
139
- 'current reserves on close, quote:',
140
- convertToNumber(newQuoteReserve, AMM_RESERVE_PRECISION),
141
- 'base:',
142
- convertToNumber(newBaseReserve, AMM_RESERVE_PRECISION)
143
- );
144
-
145
- let newSqrtK;
146
- if (newPeg.lt(market.amm.pegMultiplier)) {
147
- newSqrtK = newBaseReserve;
148
- } else {
149
- newSqrtK = newQuoteReserve;
150
- }
151
-
152
- marketNewPeg.amm.baseAssetReserve = newSqrtK.sub(market.baseAssetAmount); // newSqrtK.sub(market.baseAssetAmount);
153
- marketNewPeg.amm.quoteAssetReserve = newSqrtK
154
- .mul(newSqrtK)
155
- .div(marketNewPeg.amm.baseAssetReserve);
156
- marketNewPeg.amm.sqrtK = newSqrtK;
157
- marketNewPeg.amm.pegMultiplier = newPeg;
158
-
159
- console.log(
160
- 'Price moves from',
161
- convertToNumber(prevMarketPrice),
162
- 'to',
163
- convertToNumber(calculateMarkPrice(marketNewPeg))
164
- );
165
-
166
- const cost = calculatePositionPNL(marketNewPeg, netUserPosition);
167
-
168
- return cost;
169
- }
170
-
171
- export function calculateBudgetedK(market: Market, cost: BN): [BN, BN] {
172
- // wolframalpha.com
173
- // (1/(x+d) - p/(x*p+d))*y*d*Q = C solve for p
174
- // p = (d(y*d*Q - C(x+d))) / (C*x(x+d) + y*y*d*Q)
175
-
176
- // todo: assumes k = x * y
177
- // otherwise use: (y(1-p) + (kp^2/(x*p+d)) - k/(x+d)) * Q = C solve for p
178
-
179
- // const k = market.amm.sqrtK.mul(market.amm.sqrtK);
180
- const x = market.amm.baseAssetReserve;
181
- const y = market.amm.quoteAssetReserve;
182
-
183
- const d = market.baseAssetAmount;
184
- const Q = market.amm.pegMultiplier;
185
-
186
- const C = cost.mul(new BN(-1));
187
-
188
- const numer1 = y.mul(d).mul(Q).div(AMM_RESERVE_PRECISION).div(PEG_PRECISION);
189
- const numer2 = C.mul(x.add(d)).div(QUOTE_PRECISION);
190
- const denom1 = C.mul(x)
191
- .mul(x.add(d))
192
- .div(AMM_RESERVE_PRECISION)
193
- .div(QUOTE_PRECISION);
194
- const denom2 = y
195
- .mul(d)
196
- .mul(d)
197
- .mul(Q)
198
- .div(AMM_RESERVE_PRECISION)
199
- .div(AMM_RESERVE_PRECISION)
200
- .div(PEG_PRECISION);
201
-
202
- const numerator = d
203
- .mul(numer1.add(numer2))
204
- .div(AMM_RESERVE_PRECISION)
205
- .div(AMM_RESERVE_PRECISION)
206
- .div(AMM_TO_QUOTE_PRECISION_RATIO);
207
- const denominator = denom1
208
- .add(denom2)
209
- .div(AMM_RESERVE_PRECISION)
210
- .div(AMM_TO_QUOTE_PRECISION_RATIO);
211
- console.log(numerator, denominator);
212
- // const p = (numerator).div(denominator);
213
-
214
- // const formulaCost = (numer21.sub(numer20).sub(numer1)).mul(market.amm.pegMultiplier).div(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO)
215
- // console.log(convertToNumber(formulaCost, QUOTE_PRECISION))
216
-
217
- return [numerator, denominator];
218
- }
219
-
220
- export function calculateBudgetedPeg(market: Market, cost: BN): BN {
221
- // wolframalpha.com
222
- // (1/(x+d) - p/(x*p+d))*y*d*Q = C solve for p
223
- // p = (d(y*d*Q - C(x+d))) / (C*x(x+d) + y*y*d*Q)
224
-
225
- // todo: assumes k = x * y
226
- // otherwise use: (y(1-p) + (kp^2/(x*p+d)) - k/(x+d)) * Q = C solve for p
227
-
228
- const k = market.amm.sqrtK.mul(market.amm.sqrtK);
229
- const x = market.amm.baseAssetReserve;
230
- const y = market.amm.quoteAssetReserve;
231
-
232
- const d = market.baseAssetAmount;
233
- const Q = market.amm.pegMultiplier;
234
-
235
- const C = cost.mul(new BN(-1));
236
-
237
- const deltaQuoteAssetReserves = y.sub(k.div(x.add(d)));
238
- const deltaPegMultiplier = C.mul(MARK_PRICE_PRECISION).div(
239
- deltaQuoteAssetReserves.div(AMM_TO_QUOTE_PRECISION_RATIO)
240
- );
241
- // .mul(PEG_PRECISION)
242
- // .div(QUOTE_PRECISION);
243
- console.log(
244
- Q.toNumber(),
245
- 'change by',
246
- deltaPegMultiplier.toNumber() / MARK_PRICE_PRECISION.toNumber()
247
- );
248
- const newPeg = Q.sub(
249
- deltaPegMultiplier.mul(PEG_PRECISION).div(MARK_PRICE_PRECISION)
250
- );
251
-
252
- return newPeg;
253
- }
package/src/math/trade.js DELETED
@@ -1,182 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateTargetPriceTrade = exports.calculateTradeAcquiredAmounts = exports.calculateTradeSlippage = void 0;
4
- const types_1 = require("../types");
5
- const anchor_1 = require("@project-serum/anchor");
6
- const assert_1 = require("../assert/assert");
7
- const numericConstants_1 = require("../constants/numericConstants");
8
- const market_1 = require("./market");
9
- const amm_1 = require("./amm");
10
- const utils_1 = require("./utils");
11
- const MAXPCT = new anchor_1.BN(1000); //percentage units are [0,1000] => [0,1]
12
- /**
13
- * Calculates avg/max slippage (price impact) for candidate trade
14
- * @param direction
15
- * @param amount
16
- * @param market
17
- * @return [pctAvgSlippage, pctMaxSlippage, entryPrice, newPrice]
18
- *
19
- * 'pctAvgSlippage' => the percentage change to entryPrice (average est slippage in execution) : Precision MARK_PRICE_PRECISION
20
- *
21
- * 'pctMaxSlippage' => the percentage change to maxPrice (highest est slippage in execution) : Precision MARK_PRICE_PRECISION
22
- *
23
- * 'entryPrice' => the average price of the trade : Precision MARK_PRICE_PRECISION
24
- *
25
- * 'newPrice' => the price of the asset after the trade : Precision MARK_PRICE_PRECISION
26
- */
27
- function calculateTradeSlippage(direction, amount, market, inputAssetType = 'quote') {
28
- const oldPrice = (0, market_1.calculateMarkPrice)(market);
29
- if (amount.eq(numericConstants_1.ZERO)) {
30
- return [numericConstants_1.ZERO, numericConstants_1.ZERO, oldPrice, oldPrice];
31
- }
32
- const [acquiredBase, acquiredQuote] = calculateTradeAcquiredAmounts(direction, amount, market, inputAssetType);
33
- const entryPrice = (0, amm_1.calculatePrice)(acquiredBase, acquiredQuote, market.amm.pegMultiplier).mul(new anchor_1.BN(-1));
34
- const newPrice = (0, amm_1.calculatePrice)(market.amm.baseAssetReserve.sub(acquiredBase), market.amm.quoteAssetReserve.sub(acquiredQuote), market.amm.pegMultiplier);
35
- if (direction == types_1.PositionDirection.SHORT) {
36
- (0, assert_1.assert)(newPrice.lt(oldPrice));
37
- }
38
- else {
39
- (0, assert_1.assert)(oldPrice.lt(newPrice));
40
- }
41
- const pctMaxSlippage = newPrice
42
- .sub(oldPrice)
43
- .mul(numericConstants_1.MARK_PRICE_PRECISION)
44
- .div(oldPrice)
45
- .abs();
46
- const pctAvgSlippage = entryPrice
47
- .sub(oldPrice)
48
- .mul(numericConstants_1.MARK_PRICE_PRECISION)
49
- .div(oldPrice)
50
- .abs();
51
- return [pctAvgSlippage, pctMaxSlippage, entryPrice, newPrice];
52
- }
53
- exports.calculateTradeSlippage = calculateTradeSlippage;
54
- /**
55
- * Calculates acquired amounts for trade executed
56
- * @param direction
57
- * @param amount
58
- * @param market
59
- * @return
60
- * | 'acquiredBase' => positive/negative change in user's base : BN TODO-PRECISION
61
- * | 'acquiredQuote' => positive/negative change in user's quote : BN TODO-PRECISION
62
- */
63
- function calculateTradeAcquiredAmounts(direction, amount, market, inputAssetType = 'quote') {
64
- if (amount.eq(numericConstants_1.ZERO)) {
65
- return [numericConstants_1.ZERO, numericConstants_1.ZERO];
66
- }
67
- const swapDirection = (0, amm_1.getSwapDirection)(inputAssetType, direction);
68
- const [newQuoteAssetReserve, newBaseAssetReserve] = (0, amm_1.calculateAmmReservesAfterSwap)(market.amm, inputAssetType, amount, swapDirection);
69
- const acquiredBase = market.amm.baseAssetReserve.sub(newBaseAssetReserve);
70
- let acquiredQuote = market.amm.quoteAssetReserve.sub(newQuoteAssetReserve);
71
- if (inputAssetType === 'base' && (0, types_1.isVariant)(swapDirection, 'remove')) {
72
- acquiredQuote = acquiredQuote.sub(numericConstants_1.ONE);
73
- }
74
- return [acquiredBase, acquiredQuote];
75
- }
76
- exports.calculateTradeAcquiredAmounts = calculateTradeAcquiredAmounts;
77
- /**
78
- * calculateTargetPriceTrade
79
- * simple function for finding arbitraging trades
80
- * @param market
81
- * @param targetPrice
82
- * @param pct optional default is 100% gap filling, can set smaller.
83
- * @returns trade direction/size in order to push price to a targetPrice,
84
- *
85
- * [
86
- * direction => direction of trade required, TODO-PRECISION
87
- * tradeSize => size of trade required, TODO-PRECISION
88
- * entryPrice => the entry price for the trade, TODO-PRECISION
89
- * targetPrice => the target price TODO-PRECISION
90
- * ]
91
- */
92
- function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT, outputAssetType = 'quote') {
93
- (0, assert_1.assert)(market.amm.baseAssetReserve.gt(numericConstants_1.ZERO));
94
- (0, assert_1.assert)(targetPrice.gt(numericConstants_1.ZERO));
95
- (0, assert_1.assert)(pct.lte(MAXPCT) && pct.gt(numericConstants_1.ZERO));
96
- const markPriceBefore = (0, market_1.calculateMarkPrice)(market);
97
- if (targetPrice.gt(markPriceBefore)) {
98
- const priceGap = targetPrice.sub(markPriceBefore);
99
- const priceGapScaled = priceGap.mul(pct).div(MAXPCT);
100
- targetPrice = markPriceBefore.add(priceGapScaled);
101
- }
102
- else {
103
- const priceGap = markPriceBefore.sub(targetPrice);
104
- const priceGapScaled = priceGap.mul(pct).div(MAXPCT);
105
- targetPrice = markPriceBefore.sub(priceGapScaled);
106
- }
107
- let direction;
108
- let tradeSize;
109
- let baseSize;
110
- const baseAssetReserveBefore = market.amm.baseAssetReserve;
111
- const quoteAssetReserveBefore = market.amm.quoteAssetReserve;
112
- const peg = market.amm.pegMultiplier;
113
- const invariant = market.amm.sqrtK.mul(market.amm.sqrtK);
114
- const k = invariant.mul(numericConstants_1.MARK_PRICE_PRECISION);
115
- let baseAssetReserveAfter;
116
- let quoteAssetReserveAfter;
117
- const biasModifier = new anchor_1.BN(1);
118
- let markPriceAfter;
119
- if (markPriceBefore.gt(targetPrice)) {
120
- // overestimate y2
121
- baseAssetReserveAfter = (0, utils_1.squareRootBN)(k.div(targetPrice).mul(peg).div(numericConstants_1.PEG_PRECISION).sub(biasModifier)).sub(new anchor_1.BN(1));
122
- quoteAssetReserveAfter = k
123
- .div(numericConstants_1.MARK_PRICE_PRECISION)
124
- .div(baseAssetReserveAfter);
125
- markPriceAfter = (0, amm_1.calculatePrice)(baseAssetReserveAfter, quoteAssetReserveAfter, peg);
126
- direction = types_1.PositionDirection.SHORT;
127
- tradeSize = quoteAssetReserveBefore
128
- .sub(quoteAssetReserveAfter)
129
- .mul(peg)
130
- .div(numericConstants_1.PEG_PRECISION)
131
- .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
132
- baseSize = baseAssetReserveAfter.sub(baseAssetReserveBefore);
133
- }
134
- else if (markPriceBefore.lt(targetPrice)) {
135
- // underestimate y2
136
- baseAssetReserveAfter = (0, utils_1.squareRootBN)(k.div(targetPrice).mul(peg).div(numericConstants_1.PEG_PRECISION).add(biasModifier)).add(new anchor_1.BN(1));
137
- quoteAssetReserveAfter = k
138
- .div(numericConstants_1.MARK_PRICE_PRECISION)
139
- .div(baseAssetReserveAfter);
140
- markPriceAfter = (0, amm_1.calculatePrice)(baseAssetReserveAfter, quoteAssetReserveAfter, peg);
141
- direction = types_1.PositionDirection.LONG;
142
- tradeSize = quoteAssetReserveAfter
143
- .sub(quoteAssetReserveBefore)
144
- .mul(peg)
145
- .div(numericConstants_1.PEG_PRECISION)
146
- .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
147
- baseSize = baseAssetReserveBefore.sub(baseAssetReserveAfter);
148
- }
149
- else {
150
- // no trade, market is at target
151
- direction = types_1.PositionDirection.LONG;
152
- tradeSize = numericConstants_1.ZERO;
153
- return [direction, tradeSize, targetPrice, targetPrice];
154
- }
155
- let tp1 = targetPrice;
156
- let tp2 = markPriceAfter;
157
- let originalDiff = targetPrice.sub(markPriceBefore);
158
- if (direction == types_1.PositionDirection.SHORT) {
159
- tp1 = markPriceAfter;
160
- tp2 = targetPrice;
161
- originalDiff = markPriceBefore.sub(targetPrice);
162
- }
163
- const entryPrice = tradeSize
164
- .mul(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO)
165
- .mul(numericConstants_1.MARK_PRICE_PRECISION)
166
- .div(baseSize.abs());
167
- (0, assert_1.assert)(tp1.sub(tp2).lte(originalDiff), 'Target Price Calculation incorrect');
168
- (0, assert_1.assert)(tp2.lte(tp1) || tp2.sub(tp1).abs() < 100000, 'Target Price Calculation incorrect' +
169
- tp2.toString() +
170
- '>=' +
171
- tp1.toString() +
172
- 'err: ' +
173
- tp2.sub(tp1).abs().toString());
174
- if (outputAssetType == 'quote') {
175
- return [direction, tradeSize, entryPrice, targetPrice];
176
- }
177
- else {
178
- return [direction, baseSize, entryPrice, targetPrice];
179
- }
180
- }
181
- exports.calculateTargetPriceTrade = calculateTargetPriceTrade;
182
- //# sourceMappingURL=trade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trade.js","sourceRoot":"","sources":["trade.ts"],"names":[],"mappings":"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"}
package/src/math/utils.js DELETED
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.squareRootBN = void 0;
4
- const __1 = require("../");
5
- const squareRootBN = (n, closeness = new __1.BN(1)) => {
6
- // Assuming the sqrt of n as n only
7
- let x = n;
8
- // The closed guess will be stored in the root
9
- let root;
10
- // To count the number of iterations
11
- let count = 0;
12
- const TWO = new __1.BN(2);
13
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
14
- while (count < Number.MAX_SAFE_INTEGER) {
15
- count++;
16
- // Calculate more closed x
17
- root = x.add(n.div(x)).div(TWO);
18
- // Check for closeness
19
- if (x.sub(root).abs().lte(closeness))
20
- break;
21
- // Update root
22
- x = root;
23
- }
24
- return root;
25
- };
26
- exports.squareRootBN = squareRootBN;
27
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":";;;AAAA,2BAAyB;AAElB,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACxD,mCAAmC;IACnC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,8CAA8C;IAC9C,IAAI,IAAI,CAAC;IAET,oCAAoC;IACpC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,GAAG,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;IAEtB,6DAA6D;IAC7D,OAAO,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE;QACvC,KAAK,EAAE,CAAC;QAER,0BAA0B;QAC1B,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEhC,sBAAsB;QACtB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,MAAM;QAE5C,cAAc;QACd,CAAC,GAAG,IAAI,CAAC;KACT;IAED,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AA1BW,QAAA,YAAY,gBA0BvB"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SwitchboardClient = void 0;
7
- const switchboard_v2_1 = require("@switchboard-xyz/switchboard-v2");
8
- const web3_js_1 = require("@solana/web3.js");
9
- const anchor_1 = require("@project-serum/anchor");
10
- const numericConstants_1 = require("../constants/numericConstants");
11
- const wallet_1 = require("../wallet");
12
- const switchboard_v2_json_1 = __importDefault(require("../idl/switchboard_v2.json"));
13
- // cache switchboard program for every client object since itll always be the same
14
- const programMap = new Map();
15
- class SwitchboardClient {
16
- constructor(connection, env) {
17
- this.connection = connection;
18
- this.env = env;
19
- }
20
- async getOraclePriceData(pricePublicKey) {
21
- const accountInfo = await this.connection.getAccountInfo(pricePublicKey);
22
- return this.getOraclePriceDataFromBuffer(accountInfo.data);
23
- }
24
- async getOraclePriceDataFromBuffer(buffer) {
25
- const program = await this.getProgram();
26
- const aggregatorAccountData = program.account.aggregatorAccountData.coder.accounts.decode('AggregatorAccountData', buffer);
27
- const price = convertSwitchboardDecimal(aggregatorAccountData.latestConfirmedRound.result);
28
- const confidence = convertSwitchboardDecimal(aggregatorAccountData.latestConfirmedRound
29
- .stdDeviation);
30
- const slot = aggregatorAccountData.latestConfirmedRound.roundOpenSlot;
31
- return {
32
- price,
33
- slot,
34
- confidence,
35
- };
36
- }
37
- async getProgram() {
38
- if (programMap.has(this.env)) {
39
- return programMap.get(this.env);
40
- }
41
- const program = await getSwitchboardProgram(this.env, this.connection);
42
- programMap.set(this.env, program);
43
- return program;
44
- }
45
- }
46
- exports.SwitchboardClient = SwitchboardClient;
47
- async function getSwitchboardProgram(env, connection) {
48
- const DEFAULT_KEYPAIR = web3_js_1.Keypair.fromSeed(new Uint8Array(32).fill(1));
49
- const programId = (0, switchboard_v2_1.getSwitchboardPid)(env);
50
- const wallet = new wallet_1.Wallet(DEFAULT_KEYPAIR);
51
- const provider = new anchor_1.Provider(connection, wallet, {});
52
- return new anchor_1.Program(switchboard_v2_json_1.default, programId, provider);
53
- }
54
- function convertSwitchboardDecimal(switchboardDecimal) {
55
- const switchboardPrecision = numericConstants_1.TEN.pow(new anchor_1.BN(switchboardDecimal.scale));
56
- return switchboardDecimal.mantissa
57
- .mul(numericConstants_1.MARK_PRICE_PRECISION)
58
- .div(switchboardPrecision);
59
- }
60
- //# sourceMappingURL=switchboardClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"switchboardClient.js","sourceRoot":"","sources":["switchboardClient.ts"],"names":[],"mappings":";;;;;;AAAA,oEAGyC;AACzC,6CAAiE;AAEjE,kDAAmE;AACnE,oEAA0E;AAE1E,sCAAmC;AACnC,qFAA0D;AAE1D,kFAAkF;AAClF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE9C,MAAa,iBAAiB;IAI7B,YAAmB,UAAsB,EAAE,GAAa;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC9B,cAAyB;QAEzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,4BAA4B,CACxC,MAAc;QAEd,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExC,MAAM,qBAAqB,GAC1B,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAC1D,uBAAuB,EACvB,MAAM,CACN,CAAC;QACH,MAAM,KAAK,GAAG,yBAAyB,CACtC,qBAAqB,CAAC,oBAAoB,CAAC,MAA4B,CACvE,CAAC;QAEF,MAAM,UAAU,GAAG,yBAAyB,CAC3C,qBAAqB,CAAC,oBAAoB;aACxC,YAAkC,CACpC,CAAC;QAEF,MAAM,IAAI,GAAO,qBAAqB,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAC1E,OAAO;YACN,KAAK;YACL,IAAI;YACJ,UAAU;SACV,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU;QACtB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC7B,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChC;QAED,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC;IAChB,CAAC;CACD;AApDD,8CAoDC;AAED,KAAK,UAAU,qBAAqB,CACnC,GAAa,EACb,UAAsB;IAEtB,MAAM,eAAe,GAAG,iBAAO,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAA,kCAAiB,EAAC,GAAG,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtD,OAAO,IAAI,gBAAO,CAAC,6BAAuB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,yBAAyB,CAAC,kBAAsC;IACxE,MAAM,oBAAoB,GAAG,sBAAG,CAAC,GAAG,CAAC,IAAI,WAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,OAAO,kBAAkB,CAAC,QAAQ;SAChC,GAAG,CAAC,uCAAoB,CAAC;SACzB,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC7B,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":""}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseTokenAccount = void 0;
4
- const spl_token_1 = require("@solana/spl-token");
5
- const web3_js_1 = require("@solana/web3.js");
6
- function parseTokenAccount(data) {
7
- const accountInfo = spl_token_1.AccountLayout.decode(data);
8
- accountInfo.mint = new web3_js_1.PublicKey(accountInfo.mint);
9
- accountInfo.owner = new web3_js_1.PublicKey(accountInfo.owner);
10
- accountInfo.amount = spl_token_1.u64.fromBuffer(accountInfo.amount);
11
- if (accountInfo.delegateOption === 0) {
12
- accountInfo.delegate = null;
13
- // eslint-disable-next-line new-cap
14
- accountInfo.delegatedAmount = new spl_token_1.u64(0);
15
- }
16
- else {
17
- accountInfo.delegate = new web3_js_1.PublicKey(accountInfo.delegate);
18
- accountInfo.delegatedAmount = spl_token_1.u64.fromBuffer(accountInfo.delegatedAmount);
19
- }
20
- accountInfo.isInitialized = accountInfo.state !== 0;
21
- accountInfo.isFrozen = accountInfo.state === 2;
22
- if (accountInfo.isNativeOption === 1) {
23
- accountInfo.rentExemptReserve = spl_token_1.u64.fromBuffer(accountInfo.isNative);
24
- accountInfo.isNative = true;
25
- }
26
- else {
27
- accountInfo.rentExemptReserve = null;
28
- accountInfo.isNative = false;
29
- }
30
- if (accountInfo.closeAuthorityOption === 0) {
31
- accountInfo.closeAuthority = null;
32
- }
33
- else {
34
- accountInfo.closeAuthority = new web3_js_1.PublicKey(accountInfo.closeAuthority);
35
- }
36
- return accountInfo;
37
- }
38
- exports.parseTokenAccount = parseTokenAccount;
39
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,iDAAoE;AACpE,6CAA4C;AAE5C,SAAgB,iBAAiB,CAAC,IAAY;IAC7C,MAAM,WAAW,GAAG,yBAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,WAAW,CAAC,IAAI,GAAG,IAAI,mBAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnD,WAAW,CAAC,KAAK,GAAG,IAAI,mBAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACrD,WAAW,CAAC,MAAM,GAAG,eAAG,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAExD,IAAI,WAAW,CAAC,cAAc,KAAK,CAAC,EAAE;QACrC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC5B,mCAAmC;QACnC,WAAW,CAAC,eAAe,GAAG,IAAI,eAAG,CAAC,CAAC,CAAC,CAAC;KACzC;SAAM;QACN,WAAW,CAAC,QAAQ,GAAG,IAAI,mBAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3D,WAAW,CAAC,eAAe,GAAG,eAAG,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;KAC1E;IAED,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,KAAK,KAAK,CAAC,CAAC;IACpD,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,KAAK,CAAC,CAAC;IAE/C,IAAI,WAAW,CAAC,cAAc,KAAK,CAAC,EAAE;QACrC,WAAW,CAAC,iBAAiB,GAAG,eAAG,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrE,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;KAC5B;SAAM;QACN,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACrC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;KAC7B;IAED,IAAI,WAAW,CAAC,oBAAoB,KAAK,CAAC,EAAE;QAC3C,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;KAClC;SAAM;QACN,WAAW,CAAC,cAAc,GAAG,IAAI,mBAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;KACvE;IAED,OAAO,WAAW,CAAC;AACpB,CAAC;AAjCD,8CAiCC"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DefaultTxSender = void 0;
4
- class DefaultTxSender {
5
- constructor(provider) {
6
- this.provider = provider;
7
- }
8
- send(tx, additionalSigners, opts) {
9
- return this.provider.send(tx, additionalSigners, opts);
10
- }
11
- }
12
- exports.DefaultTxSender = DefaultTxSender;
13
- //# sourceMappingURL=defaultTxSender.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaultTxSender.js","sourceRoot":"","sources":["defaultTxSender.ts"],"names":[],"mappings":";;;AASA,MAAa,eAAe;IAG3B,YAAmB,QAAkB;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,IAAI,CACH,EAAe,EACf,iBAAiC,EACjC,IAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;CACD;AAdD,0CAcC"}