@drift-labs/sdk 2.82.0-beta.4 → 2.82.0-beta.5

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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.82.0-beta.4
1
+ 2.82.0-beta.5
@@ -657,6 +657,16 @@ export declare class DriftClient {
657
657
  getDepositIntoSpotMarketRevenuePoolIx(marketIndex: number, amount: BN, userTokenAccountPublicKey: PublicKey): Promise<TransactionInstruction>;
658
658
  depositIntoSpotMarketRevenuePool(marketIndex: number, amount: BN, userTokenAccountPublicKey: PublicKey): Promise<TransactionSignature>;
659
659
  getPerpMarketExtendedInfo(marketIndex: number): PerpMarketExtendedInfo;
660
+ /**
661
+ * Calculates taker / maker fee (as a percentage, e.g. .001 = 10 basis points) for particular marketType
662
+ * @param marketType
663
+ * @param positionMarketIndex
664
+ * @returns : {takerFee: number, makerFee: number} Precision None
665
+ */
666
+ getMarketFees(marketType: MarketType, marketIndex?: number, user?: User): {
667
+ takerFee: number;
668
+ makerFee: number;
669
+ };
660
670
  /**
661
671
  * Returns the market index and type for a given market name
662
672
  * E.g. "SOL-PERP" -> { marketIndex: 0, marketType: MarketType.PERP }
@@ -3548,6 +3548,41 @@ class DriftClient {
3548
3548
  };
3549
3549
  return extendedInfo;
3550
3550
  }
3551
+ /**
3552
+ * Calculates taker / maker fee (as a percentage, e.g. .001 = 10 basis points) for particular marketType
3553
+ * @param marketType
3554
+ * @param positionMarketIndex
3555
+ * @returns : {takerFee: number, makerFee: number} Precision None
3556
+ */
3557
+ getMarketFees(marketType, marketIndex, user) {
3558
+ let feeTier;
3559
+ if (user) {
3560
+ feeTier = user.getUserFeeTier(marketType);
3561
+ }
3562
+ else {
3563
+ const state = this.getStateAccount();
3564
+ feeTier = (0, types_1.isVariant)(marketType, 'perp')
3565
+ ? state.perpFeeStructure.feeTiers[0]
3566
+ : state.spotFeeStructure.feeTiers[0];
3567
+ }
3568
+ let takerFee = feeTier.feeNumerator / feeTier.feeDenominator;
3569
+ let makerFee = feeTier.makerRebateNumerator / feeTier.makerRebateDenominator;
3570
+ if (marketIndex !== undefined) {
3571
+ let marketAccount = null;
3572
+ if ((0, types_1.isVariant)(marketType, 'perp')) {
3573
+ marketAccount = this.getPerpMarketAccount(marketIndex);
3574
+ }
3575
+ else {
3576
+ marketAccount = this.getSpotMarketAccount(marketIndex);
3577
+ }
3578
+ takerFee += (takerFee * marketAccount.feeAdjustment) / 100;
3579
+ makerFee += (makerFee * marketAccount.feeAdjustment) / 100;
3580
+ }
3581
+ return {
3582
+ takerFee,
3583
+ makerFee,
3584
+ };
3585
+ }
3551
3586
  /**
3552
3587
  * Returns the market index and type for a given market name
3553
3588
  * E.g. "SOL-PERP" -> { marketIndex: 0, marketType: MarketType.PERP }
package/lib/user.d.ts CHANGED
@@ -346,16 +346,6 @@ export declare class User {
346
346
  */
347
347
  accountLeverageRatioAfterTrade(targetMarketIndex: number, targetMarketType: MarketType, tradeQuoteAmount: BN, tradeSide: PositionDirection, includeOpenOrders?: boolean): BN;
348
348
  getUserFeeTier(marketType: MarketType, now?: BN): import("./types").FeeTier;
349
- /**
350
- * Calculates taker / maker fee (as a percentage, e.g. .001 = 10 basis points) for particular marketType
351
- * @param marketType
352
- * @param positionMarketIndex
353
- * @returns : {takerFee: number, makerFee: number} Precision None
354
- */
355
- getMarketFees(marketType: MarketType, marketIndex?: number): {
356
- takerFee: number;
357
- makerFee: number;
358
- };
359
349
  /**
360
350
  * Calculates how much perp fee will be taken for a given sized trade
361
351
  * @param quoteAmount
package/lib/user.js CHANGED
@@ -1709,32 +1709,6 @@ class User {
1709
1709
  }
1710
1710
  return state.spotFeeStructure.feeTiers[feeTierIndex];
1711
1711
  }
1712
- /**
1713
- * Calculates taker / maker fee (as a percentage, e.g. .001 = 10 basis points) for particular marketType
1714
- * @param marketType
1715
- * @param positionMarketIndex
1716
- * @returns : {takerFee: number, makerFee: number} Precision None
1717
- */
1718
- getMarketFees(marketType, marketIndex) {
1719
- const feeTier = this.getUserFeeTier(marketType);
1720
- let takerFee = feeTier.feeNumerator / feeTier.feeDenominator;
1721
- let makerFee = feeTier.makerRebateNumerator / feeTier.makerRebateDenominator;
1722
- if (marketIndex !== undefined) {
1723
- let marketAccount = null;
1724
- if ((0, types_1.isVariant)(marketType, 'perp')) {
1725
- marketAccount = this.driftClient.getPerpMarketAccount(marketIndex);
1726
- }
1727
- else {
1728
- marketAccount = this.driftClient.getSpotMarketAccount(marketIndex);
1729
- }
1730
- takerFee += (takerFee * marketAccount.feeAdjustment) / 100;
1731
- makerFee += (makerFee * marketAccount.feeAdjustment) / 100;
1732
- }
1733
- return {
1734
- takerFee,
1735
- makerFee,
1736
- };
1737
- }
1738
1712
  /**
1739
1713
  * Calculates how much perp fee will be taken for a given sized trade
1740
1714
  * @param quoteAmount
@@ -1742,7 +1716,7 @@ class User {
1742
1716
  */
1743
1717
  calculateFeeForQuoteAmount(quoteAmount, marketIndex) {
1744
1718
  if (marketIndex !== undefined) {
1745
- const takerFeeMultiplier = this.getMarketFees(_1.MarketType.PERP, marketIndex).takerFee;
1719
+ const takerFeeMultiplier = this.driftClient.getMarketFees(_1.MarketType.PERP, marketIndex, this).takerFee;
1746
1720
  const feeAmountNum = _1.BigNum.from(quoteAmount, numericConstants_1.QUOTE_PRECISION_EXP).toNum() *
1747
1721
  takerFeeMultiplier;
1748
1722
  return _1.BigNum.fromPrint(feeAmountNum.toString(), numericConstants_1.QUOTE_PRECISION_EXP).val;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "2.82.0-beta.4",
3
+ "version": "2.82.0-beta.5",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "author": "crispheaney",
@@ -6640,6 +6640,48 @@ export class DriftClient {
6640
6640
  return extendedInfo;
6641
6641
  }
6642
6642
 
6643
+ /**
6644
+ * Calculates taker / maker fee (as a percentage, e.g. .001 = 10 basis points) for particular marketType
6645
+ * @param marketType
6646
+ * @param positionMarketIndex
6647
+ * @returns : {takerFee: number, makerFee: number} Precision None
6648
+ */
6649
+ public getMarketFees(
6650
+ marketType: MarketType,
6651
+ marketIndex?: number,
6652
+ user?: User
6653
+ ) {
6654
+ let feeTier;
6655
+ if (user) {
6656
+ feeTier = user.getUserFeeTier(marketType);
6657
+ } else {
6658
+ const state = this.getStateAccount();
6659
+ feeTier = isVariant(marketType, 'perp')
6660
+ ? state.perpFeeStructure.feeTiers[0]
6661
+ : state.spotFeeStructure.feeTiers[0];
6662
+ }
6663
+
6664
+ let takerFee = feeTier.feeNumerator / feeTier.feeDenominator;
6665
+ let makerFee =
6666
+ feeTier.makerRebateNumerator / feeTier.makerRebateDenominator;
6667
+
6668
+ if (marketIndex !== undefined) {
6669
+ let marketAccount = null;
6670
+ if (isVariant(marketType, 'perp')) {
6671
+ marketAccount = this.getPerpMarketAccount(marketIndex);
6672
+ } else {
6673
+ marketAccount = this.getSpotMarketAccount(marketIndex);
6674
+ }
6675
+ takerFee += (takerFee * marketAccount.feeAdjustment) / 100;
6676
+ makerFee += (makerFee * marketAccount.feeAdjustment) / 100;
6677
+ }
6678
+
6679
+ return {
6680
+ takerFee,
6681
+ makerFee,
6682
+ };
6683
+ }
6684
+
6643
6685
  /**
6644
6686
  * Returns the market index and type for a given market name
6645
6687
  * E.g. "SOL-PERP" -> { marketIndex: 0, marketType: MarketType.PERP }
package/src/user.ts CHANGED
@@ -3162,35 +3162,6 @@ export class User {
3162
3162
  return state.spotFeeStructure.feeTiers[feeTierIndex];
3163
3163
  }
3164
3164
 
3165
- /**
3166
- * Calculates taker / maker fee (as a percentage, e.g. .001 = 10 basis points) for particular marketType
3167
- * @param marketType
3168
- * @param positionMarketIndex
3169
- * @returns : {takerFee: number, makerFee: number} Precision None
3170
- */
3171
- public getMarketFees(marketType: MarketType, marketIndex?: number) {
3172
- const feeTier = this.getUserFeeTier(marketType);
3173
- let takerFee = feeTier.feeNumerator / feeTier.feeDenominator;
3174
- let makerFee =
3175
- feeTier.makerRebateNumerator / feeTier.makerRebateDenominator;
3176
-
3177
- if (marketIndex !== undefined) {
3178
- let marketAccount = null;
3179
- if (isVariant(marketType, 'perp')) {
3180
- marketAccount = this.driftClient.getPerpMarketAccount(marketIndex);
3181
- } else {
3182
- marketAccount = this.driftClient.getSpotMarketAccount(marketIndex);
3183
- }
3184
- takerFee += (takerFee * marketAccount.feeAdjustment) / 100;
3185
- makerFee += (makerFee * marketAccount.feeAdjustment) / 100;
3186
- }
3187
-
3188
- return {
3189
- takerFee,
3190
- makerFee,
3191
- };
3192
- }
3193
-
3194
3165
  /**
3195
3166
  * Calculates how much perp fee will be taken for a given sized trade
3196
3167
  * @param quoteAmount
@@ -3198,9 +3169,10 @@ export class User {
3198
3169
  */
3199
3170
  public calculateFeeForQuoteAmount(quoteAmount: BN, marketIndex?: number): BN {
3200
3171
  if (marketIndex !== undefined) {
3201
- const takerFeeMultiplier = this.getMarketFees(
3172
+ const takerFeeMultiplier = this.driftClient.getMarketFees(
3202
3173
  MarketType.PERP,
3203
- marketIndex
3174
+ marketIndex,
3175
+ this
3204
3176
  ).takerFee;
3205
3177
  const feeAmountNum =
3206
3178
  BigNum.from(quoteAmount, QUOTE_PRECISION_EXP).toNum() *