@drift-labs/sdk 0.1.36-master.1 → 0.1.36-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.
package/lib/math/amm.d.ts CHANGED
@@ -21,6 +21,7 @@ export declare type AssetType = 'quote' | 'base';
21
21
  * @returns quoteAssetReserve and baseAssetReserve after swap. : Precision AMM_RESERVE_PRECISION
22
22
  */
23
23
  export declare function calculateAmmReservesAfterSwap(amm: Pick<AMM, 'pegMultiplier' | 'quoteAssetReserve' | 'sqrtK' | 'baseAssetReserve'>, inputAssetType: AssetType, swapAmount: BN, swapDirection: SwapDirection): [BN, BN];
24
+ export declare function calculateSpread(amm: AMM, direction: PositionDirection): number;
24
25
  export declare function calculateSpreadReserves(amm: AMM, direction: PositionDirection): {
25
26
  baseAssetReserve: BN;
26
27
  quoteAssetReserve: BN;
package/lib/math/amm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateQuoteAssetAmountSwapped = exports.calculateBudgetedPeg = exports.calculateBudgetedK = exports.calculateMaxBaseAssetAmountToTrade = exports.calculateTerminalPrice = exports.calculateRepegCost = exports.calculateAdjustKCost = exports.getSwapDirection = exports.calculateSwapOutput = exports.calculateSpreadReserves = exports.calculateAmmReservesAfterSwap = exports.calculatePrice = void 0;
3
+ exports.calculateQuoteAssetAmountSwapped = exports.calculateBudgetedPeg = exports.calculateBudgetedK = exports.calculateMaxBaseAssetAmountToTrade = exports.calculateTerminalPrice = exports.calculateRepegCost = exports.calculateAdjustKCost = exports.getSwapDirection = exports.calculateSwapOutput = exports.calculateSpreadReserves = exports.calculateSpread = exports.calculateAmmReservesAfterSwap = exports.calculatePrice = void 0;
4
4
  const anchor_1 = require("@project-serum/anchor");
5
5
  const numericConstants_1 = require("../constants/numericConstants");
6
6
  const position_1 = require("./position");
@@ -51,14 +51,27 @@ function calculateAmmReservesAfterSwap(amm, inputAssetType, swapAmount, swapDire
51
51
  return [newQuoteAssetReserve, newBaseAssetReserve];
52
52
  }
53
53
  exports.calculateAmmReservesAfterSwap = calculateAmmReservesAfterSwap;
54
+ function calculateSpread(amm, direction) {
55
+ let spread;
56
+ // future logic
57
+ if ((0, types_1.isVariant)(direction, 'long')) {
58
+ spread = amm.baseSpread;
59
+ }
60
+ else {
61
+ spread = amm.baseSpread;
62
+ }
63
+ return spread;
64
+ }
65
+ exports.calculateSpread = calculateSpread;
54
66
  function calculateSpreadReserves(amm, direction) {
55
- if (amm.baseSpread === 0) {
67
+ const spread = calculateSpread(amm, direction);
68
+ if (spread === 0) {
56
69
  return {
57
70
  baseAssetReserve: amm.baseAssetReserve,
58
71
  quoteAssetReserve: amm.quoteAssetReserve,
59
72
  };
60
73
  }
61
- const quoteAsserReserveDelta = amm.quoteAssetReserve.div(numericConstants_1.BID_ASK_SPREAD_PRECISION.div(new anchor_1.BN(amm.baseSpread / 4)));
74
+ const quoteAsserReserveDelta = amm.quoteAssetReserve.div(numericConstants_1.BID_ASK_SPREAD_PRECISION.div(new anchor_1.BN(spread / 4)));
62
75
  let quoteAssetReserve;
63
76
  if ((0, types_1.isVariant)(direction, 'long')) {
64
77
  quoteAssetReserve = amm.quoteAssetReserve.add(quoteAsserReserveDelta);
@@ -0,0 +1,8 @@
1
+ import { StateAccount } from '../types';
2
+ /**
3
+ * Get the clearing house percent fee charged on notional of taking trades
4
+ *
5
+ * @param state
6
+ * @returns Precision : basis points (bps)
7
+ */
8
+ export declare function getExchangeFee(state: StateAccount): number;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getExchangeFee = void 0;
4
+ /**
5
+ * Get the clearing house percent fee charged on notional of taking trades
6
+ *
7
+ * @param state
8
+ * @returns Precision : basis points (bps)
9
+ */
10
+ function getExchangeFee(state) {
11
+ const exchangeFee = state.feeStructure.feeNumerator.toNumber() /
12
+ state.feeStructure.feeDenominator.toNumber();
13
+ return exchangeFee;
14
+ }
15
+ exports.getExchangeFee = getExchangeFee;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "0.1.36-master.1",
3
+ "version": "0.1.36-master.2",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "author": "crispheaney",
package/src/math/amm.ts CHANGED
@@ -98,6 +98,22 @@ export function calculateAmmReservesAfterSwap(
98
98
  return [newQuoteAssetReserve, newBaseAssetReserve];
99
99
  }
100
100
 
101
+ export function calculateSpread(
102
+ amm: AMM,
103
+ direction: PositionDirection
104
+ ): number {
105
+ let spread;
106
+
107
+ // future logic
108
+ if (isVariant(direction, 'long')) {
109
+ spread = amm.baseSpread;
110
+ } else {
111
+ spread = amm.baseSpread;
112
+ }
113
+
114
+ return spread;
115
+ }
116
+
101
117
  export function calculateSpreadReserves(
102
118
  amm: AMM,
103
119
  direction: PositionDirection
@@ -105,7 +121,9 @@ export function calculateSpreadReserves(
105
121
  baseAssetReserve: BN;
106
122
  quoteAssetReserve: BN;
107
123
  } {
108
- if (amm.baseSpread === 0) {
124
+ const spread = calculateSpread(amm, direction);
125
+
126
+ if (spread === 0) {
109
127
  return {
110
128
  baseAssetReserve: amm.baseAssetReserve,
111
129
  quoteAssetReserve: amm.quoteAssetReserve,
@@ -113,7 +131,7 @@ export function calculateSpreadReserves(
113
131
  }
114
132
 
115
133
  const quoteAsserReserveDelta = amm.quoteAssetReserve.div(
116
- BID_ASK_SPREAD_PRECISION.div(new BN(amm.baseSpread / 4))
134
+ BID_ASK_SPREAD_PRECISION.div(new BN(spread / 4))
117
135
  );
118
136
 
119
137
  let quoteAssetReserve;
@@ -0,0 +1,14 @@
1
+ import { StateAccount } from '../types';
2
+
3
+ /**
4
+ * Get the clearing house percent fee charged on notional of taking trades
5
+ *
6
+ * @param state
7
+ * @returns Precision : basis points (bps)
8
+ */
9
+ export function getExchangeFee(state: StateAccount): number {
10
+ const exchangeFee =
11
+ state.feeStructure.feeNumerator.toNumber() /
12
+ state.feeStructure.feeDenominator.toNumber();
13
+ return exchangeFee;
14
+ }