@haven-fi/solauto-sdk 1.0.700 → 1.0.702

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.
@@ -14,6 +14,7 @@ export declare class RebalanceSwapManager {
14
14
  swapQuote?: QuoteResponse;
15
15
  flBorrowAmount?: bigint;
16
16
  private jupSwapManager;
17
+ private solautoFeeBps;
17
18
  constructor(client: SolautoClient, values: RebalanceValues, flRequirements?: FlashLoanRequirements | undefined, targetLiqUtilizationRateBps?: number | undefined, priceType?: PriceType | undefined);
18
19
  private isBoost;
19
20
  private usdToSwap;
@@ -1 +1 @@
1
- {"version":3,"file":"rebalanceSwapManager.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceSwapManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAkB,UAAU,EAAa,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAiC,MAAM,iBAAiB,CAAC;AAU3E,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,2BAA2B,CAAC;IACpC,OAAO,CAAC,SAAS,CAAC;IAXb,UAAU,EAAG,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,cAAc,CAAkB;gBAG9B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,qBAAqB,YAAA,EACtC,2BAA2B,CAAC,EAAE,MAAM,YAAA,EACpC,SAAS,CAAC,EAAE,SAAS,YAAA;IAK/B,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAyCnB,OAAO,CAAC,kCAAkC;YAqC5B,mBAAmB;IA2CjC,OAAO,CAAC,mBAAmB;IAIrB,aAAa,CAAC,UAAU,EAAE,MAAM;IAyEhC,aAAa;;;;;;CAWpB"}
1
+ {"version":3,"file":"rebalanceSwapManager.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceSwapManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAkB,UAAU,EAAa,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAiC,MAAM,iBAAiB,CAAC;AAY3E,qBAAa,oBAAoB;IAS7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,2BAA2B,CAAC;IACpC,OAAO,CAAC,SAAS,CAAC;IAZb,UAAU,EAAG,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,aAAa,CAAU;gBAGrB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,qBAAqB,YAAA,EACtC,2BAA2B,CAAC,EAAE,MAAM,YAAA,EACpC,SAAS,CAAC,EAAE,SAAS,YAAA;IAU/B,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAyCnB,OAAO,CAAC,kCAAkC;YA6C5B,mBAAmB;IA2CjC,OAAO,CAAC,mBAAmB;IAIrB,aAAa,CAAC,UAAU,EAAE,MAAM;IAyEhC,aAAa;;;;;;CAWpB"}
@@ -5,6 +5,7 @@ const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters"
5
5
  const swap_1 = require("../swap");
6
6
  const generated_1 = require("../../generated");
7
7
  const utils_1 = require("../../utils");
8
+ const solautoFees_1 = require("./solautoFees");
8
9
  class RebalanceSwapManager {
9
10
  constructor(client, values, flRequirements, targetLiqUtilizationRateBps, priceType) {
10
11
  this.client = client;
@@ -13,6 +14,7 @@ class RebalanceSwapManager {
13
14
  this.targetLiqUtilizationRateBps = targetLiqUtilizationRateBps;
14
15
  this.priceType = priceType;
15
16
  this.jupSwapManager = new swap_1.JupSwapManager(client.signer);
17
+ this.solautoFeeBps = solautoFees_1.SolautoFeesBps.create(this.client.isReferred, this.targetLiqUtilizationRateBps, this.client.pos.netWorthUsd(this.priceType)).getSolautoFeesBps(values.rebalanceDirection).total;
16
18
  }
17
19
  isBoost() {
18
20
  return this.values.rebalanceDirection === generated_1.RebalanceDirection.Boost;
@@ -57,12 +59,20 @@ class RebalanceSwapManager {
57
59
  let debtUsd = this.client.pos.debtUsd(this.priceType);
58
60
  // TODO: add token balance change
59
61
  const { input, biasedInputPrice, output, biasedOutputPrice } = this.swapDetails();
60
- const swapInputUsd = swapInputAmount
62
+ let swapInputUsd = swapInputAmount
61
63
  ? (0, utils_1.fromBaseUnit)(swapInputAmount, (0, utils_1.tokenInfo)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(input.mint)).decimals) * biasedInputPrice
62
64
  : this.usdToSwap();
63
- const swapOutputUsd = swapOutputAmount
65
+ swapInputUsd = this.flRequirements?.flFeeBps
66
+ ? swapInputUsd + swapInputUsd * (0, utils_1.fromBps)(this.flRequirements.flFeeBps)
67
+ : swapInputUsd;
68
+ if (this.isBoost() && this.client.pos.state.debt.borrowFeeBps) {
69
+ swapInputUsd +=
70
+ swapInputUsd * (0, utils_1.fromBps)(this.client.pos.state.debt.borrowFeeBps);
71
+ }
72
+ let swapOutputUsd = swapOutputAmount
64
73
  ? (0, utils_1.fromBaseUnit)(swapOutputAmount, (0, utils_1.tokenInfo)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(output.mint)).decimals) * biasedOutputPrice
65
74
  : this.usdToSwap();
75
+ swapOutputUsd = swapOutputUsd - swapOutputUsd * (0, utils_1.fromBps)(this.solautoFeeBps);
66
76
  supplyUsd = this.isBoost()
67
77
  ? supplyUsd + swapOutputUsd
68
78
  : supplyUsd - swapInputUsd;
@@ -85,7 +95,7 @@ class RebalanceSwapManager {
85
95
  (0, utils_1.consoleLog)(postRebalanceRate, criteria.maxLiqUtilizationRateBps);
86
96
  if (insufficient) {
87
97
  (0, utils_1.consoleLog)("Insufficient swap quote:", swapQuote);
88
- const increment = 0.01 + i * 0.005;
98
+ const increment = 0.01 + i * 0.001;
89
99
  swapInput.amount = this.bigIntWithIncrement(swapInput.amount, this.isBoost() ? increment * -1 : increment);
90
100
  }
91
101
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/transactionsManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,aAAa,EAId,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;AAEzE,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAED,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,SAAS;IAC1D,SAAS,EAAE,CAAC,CAAC;IACb,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAChE,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,mBAAmB,CAAC,CAAC,SAAS,SAAS;IAClD,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IACvB,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAC1E,SAAS,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IACzC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACjD,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACxC,SAAS,CAAC,QAAQ,EAAE,0BAA0B,CAAM;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAE7B,kBAAkB,SAAmB;gBAEzB,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAmB9B,uBAAuB;IA0CrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,SAAS,CAAC,4BAA4B,CACpC,SAAS,EAAE,KAAK,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM;IAcpB,OAAO,CAAC,mBAAmB;IAoBd,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA8BxB,6BAA6B;YA8I7B,qBAAqB;YAiDrB,eAAe;cA2Db,eAAe,CAC7B,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,SAAS,CAAC,EAAE,kBAAkB;CAwDjC"}
1
+ {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/transactionsManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,aAAa,EAId,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;AAEzE,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAED,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,SAAS;IAC1D,SAAS,EAAE,CAAC,CAAC;IACb,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAChE,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,mBAAmB,CAAC,CAAC,SAAS,SAAS;IAClD,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IACvB,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAC1E,SAAS,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IACzC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACjD,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACxC,SAAS,CAAC,QAAQ,EAAE,0BAA0B,CAAM;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAE7B,kBAAkB,SAAmB;gBAEzB,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAmB9B,uBAAuB;IA0CrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,SAAS,CAAC,4BAA4B,CACpC,SAAS,EAAE,KAAK,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM;IAcpB,OAAO,CAAC,mBAAmB;IAoBd,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA8BxB,6BAA6B;YAiJ7B,qBAAqB;YAiDrB,eAAe;cA2Db,eAAe,CAC7B,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,SAAS,CAAC,EAAE,kBAAkB;CAyDjC"}
@@ -167,6 +167,7 @@ class TransactionsManager {
167
167
  }
168
168
  async processTransactionsAtomically(itemSets) {
169
169
  let num = 0;
170
+ let priorityFeeSetting;
170
171
  let transactions = [];
171
172
  await (0, utils_1.retryWithExponentialBackoff)(async (attemptNum, prevError) => {
172
173
  if (prevError &&
@@ -175,6 +176,7 @@ class TransactionsManager {
175
176
  throw prevError;
176
177
  }
177
178
  num = attemptNum;
179
+ priorityFeeSetting = this.getUpdatedPriorityFeeSetting(prevError, attemptNum);
178
180
  if (attemptNum > 0) {
179
181
  const refreshedSets = await this.refreshItemSets(itemSets, attemptNum, prevError);
180
182
  if (!refreshedSets || !refreshedSets.length) {
@@ -200,7 +202,7 @@ class TransactionsManager {
200
202
  let txSigs;
201
203
  let error;
202
204
  try {
203
- txSigs = await (0, utils_1.sendJitoBundledTransactions)(this.txHandler.umi, this.txHandler.connection, this.txHandler.signer, this.txHandler.otherSigners, transactions, this.txRunType, this.getUpdatedPriorityFeeSetting(prevError, attemptNum), () => this.updateStatusForSets(itemSets, TransactionStatus.Processing, attemptNum, undefined, true));
205
+ txSigs = await (0, utils_1.sendJitoBundledTransactions)(this.txHandler.umi, this.txHandler.connection, this.txHandler.signer, this.txHandler.otherSigners, transactions, this.txRunType, priorityFeeSetting, () => this.updateStatusForSets(itemSets, TransactionStatus.Processing, attemptNum, undefined, true));
204
206
  }
205
207
  catch (e) {
206
208
  error = e;
@@ -214,7 +216,7 @@ class TransactionsManager {
214
216
  this.updateStatusForSets(itemSets, TransactionStatus.Successful, attemptNum, txSigs);
215
217
  }, this.totalRetries, this.retryDelay, this.errorsToThrow).catch((e) => {
216
218
  this.txHandler.log("Capturing error info...");
217
- const errorDetails = (0, transactionUtils_1.getErrorInfo)(this.txHandler.umi, transactions, e, itemSets.filter((x) => this.statuses.find((y) => x.name() === y.name)?.simulationSuccessful).length === itemSets.length);
219
+ const errorDetails = (0, transactionUtils_1.getErrorInfo)(this.txHandler.umi, transactions, e, itemSets.filter((x) => this.statuses.find((y) => x.name() === y.name)?.simulationSuccessful).length === itemSets.length, priorityFeeSetting);
218
220
  const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${errorDetails.errorInfo?.split("\n")[0] ?? "unknown"}`;
219
221
  const errorInfo = errorDetails.errorName || errorDetails.errorInfo
220
222
  ? errorString
@@ -295,7 +297,7 @@ class TransactionsManager {
295
297
  }
296
298
  catch (e) {
297
299
  this.txHandler.log("Capturing error info...");
298
- const errorDetails = (0, transactionUtils_1.getErrorInfo)(this.txHandler.umi, [tx], e, this.statuses.find((x) => x.name === txName)?.simulationSuccessful);
300
+ const errorDetails = (0, transactionUtils_1.getErrorInfo)(this.txHandler.umi, [tx], e, this.statuses.find((x) => x.name === txName)?.simulationSuccessful, priorityFeeSetting);
299
301
  const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${errorDetails.errorInfo?.split("\n")[0] ?? "unknown"}`;
300
302
  const errorInfo = errorDetails.errorName || errorDetails.errorInfo
301
303
  ? errorString
@@ -1,13 +1,14 @@
1
1
  import { PublicKey } from "@solana/web3.js";
2
2
  import { TransactionBuilder, Umi } from "@metaplex-foundation/umi";
3
3
  import { SolautoClient, ReferralStateManager } from "../solauto";
4
- import { TransactionItemInputs } from "../../types";
4
+ import { TransactionItemInputs, PriorityFeeSetting } from "../../types";
5
5
  export declare function rebalanceChoresBefore(client: SolautoClient, tx: TransactionBuilder, accountsGettingCreated: string[]): Promise<TransactionBuilder>;
6
6
  export declare function getTransactionChores(client: SolautoClient, tx: TransactionBuilder): Promise<[TransactionBuilder, TransactionBuilder]>;
7
7
  export declare function convertReferralFeesToDestination(referralManager: ReferralStateManager, tokenAccount: PublicKey, destinationMint: PublicKey): Promise<TransactionItemInputs | undefined>;
8
- export declare function getErrorInfo(umi: Umi, txs: TransactionBuilder[], error: Error, simulationSuccessful?: boolean): {
8
+ export declare function getErrorInfo(umi: Umi, txs: TransactionBuilder[], error: Error, simulationSuccessful?: boolean, priorityFeeSetting?: PriorityFeeSetting): {
9
9
  errorName: string | undefined;
10
10
  errorInfo: string | undefined;
11
11
  canBeIgnored: boolean;
12
12
  };
13
+ export declare function usePriorityFee(priorityFeeSetting?: PriorityFeeSetting): priorityFeeSetting is PriorityFeeSetting.Min | PriorityFeeSetting.Low | PriorityFeeSetting.Default | PriorityFeeSetting.High | PriorityFeeSetting.VeryHigh;
13
14
  //# sourceMappingURL=transactionUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAiBlC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA4BjE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,aAAa,CAAC;AAwL3E,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAyF7B;AA+LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAuC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EAuH/B"}
1
+ {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAiBlC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA4BjE,OAAO,EAAE,qBAAqB,EAAyB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAwL/F,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAyF7B;AA+LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAuC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO,EAC9B,kBAAkB,CAAC,EAAE,kBAAkB;;;;EAuHxC;AAED,wBAAgB,cAAc,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,8JAErE"}
@@ -4,6 +4,7 @@ exports.rebalanceChoresBefore = rebalanceChoresBefore;
4
4
  exports.getTransactionChores = getTransactionChores;
5
5
  exports.convertReferralFeesToDestination = convertReferralFeesToDestination;
6
6
  exports.getErrorInfo = getErrorInfo;
7
+ exports.usePriorityFee = usePriorityFee;
7
8
  const web3_js_1 = require("@solana/web3.js");
8
9
  const spl_token_1 = require("@solana/spl-token");
9
10
  const umi_1 = require("@metaplex-foundation/umi");
@@ -339,7 +340,7 @@ async function convertReferralFeesToDestination(referralManager, tokenAccount, d
339
340
  .add(swapIx);
340
341
  return { tx, lookupTableAddresses };
341
342
  }
342
- function getErrorInfo(umi, txs, error, simulationSuccessful) {
343
+ function getErrorInfo(umi, txs, error, simulationSuccessful, priorityFeeSetting) {
343
344
  let canBeIgnored = false;
344
345
  let errorName = undefined;
345
346
  let errorInfo = undefined;
@@ -348,7 +349,7 @@ function getErrorInfo(umi, txs, error, simulationSuccessful) {
348
349
  let errCode;
349
350
  let errName;
350
351
  // sub ixs to account for computeUnitLimit and computeUnitPrice that get added
351
- const getComputeIxs = (txIdx) => (0, utils_1.addTxOptimizations)(umi, txs[txIdx], 1, simulationSuccessful ? 1 : undefined).getInstructions().length - txs[txIdx].getInstructions().length;
352
+ const getComputeIxs = (txIdx) => (0, utils_1.addTxOptimizations)(umi, txs[txIdx], usePriorityFee(priorityFeeSetting) ? 1 : undefined, simulationSuccessful ? 1 : undefined).getInstructions().length - txs[txIdx].getInstructions().length;
352
353
  try {
353
354
  if (error instanceof types_1.BundleSimulationError) {
354
355
  errTxIdx = error.details.transactionIdx;
@@ -423,3 +424,6 @@ function getErrorInfo(umi, txs, error, simulationSuccessful) {
423
424
  (0, utils_1.consoleLog)(errData);
424
425
  return errData;
425
426
  }
427
+ function usePriorityFee(priorityFeeSetting) {
428
+ return priorityFeeSetting !== undefined && priorityFeeSetting !== types_1.PriorityFeeSetting.None;
429
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"jitoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jitoUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAIV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,GAAG,EAEH,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAelE,wBAAgB,mBAAmB,IAAI,SAAS,CAG/C;AAkGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB;;;;IAkB/D;AAwHD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,GAAG,EAAE,kBAAkB,EAAE,EACzB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA+F/B"}
1
+ {"version":3,"file":"jitoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jitoUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAIV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,GAAG,EAEH,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAgBlE,wBAAgB,mBAAmB,IAAI,SAAS,CAG/C;AAkGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB;;;;IAkB/D;AAwHD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,GAAG,EAAE,kBAAkB,EAAE,EACzB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA+F/B"}
@@ -14,6 +14,7 @@ const types_2 = require("../types");
14
14
  const solanaUtils_1 = require("./solanaUtils");
15
15
  const generalUtils_1 = require("./generalUtils");
16
16
  const bs58_1 = __importDefault(require("bs58"));
17
+ const services_1 = require("../services");
17
18
  function getRandomTipAccount() {
18
19
  const randomInt = Math.floor(Math.random() * constants_1.JITO_TIP_ACCOUNTS.length);
19
20
  return new web3_js_1.PublicKey(constants_1.JITO_TIP_ACCOUNTS[randomInt]);
@@ -190,7 +191,7 @@ async function sendJitoBundledTransactions(umi, connection, userSigner, otherSig
190
191
  (0, generalUtils_1.consoleLog)(txs.map((tx) => tx.getInstructions().map((x) => x.programId.toString())));
191
192
  (0, generalUtils_1.consoleLog)("Transaction sizes: ", txs.map((x) => x.getTransactionSize(umi)));
192
193
  txs[0] = txs[0].prepend(getTipInstruction(userSigner, 150000));
193
- const feeEstimates = priorityFeeSetting !== types_1.PriorityFeeSetting.None
194
+ const feeEstimates = (0, services_1.usePriorityFee)(priorityFeeSetting)
194
195
  ? await Promise.all(txs.map(async (x) => (await (0, solanaUtils_1.getComputeUnitPriceEstimate)(umi, x, priorityFeeSetting, true)) ?? 1000000))
195
196
  : undefined;
196
197
  const latestBlockhash = (await umi.rpc.getLatestBlockhash({ commitment: "confirmed" })).blockhash;
@@ -1 +1 @@
1
- {"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ const accountUtils_1 = require("./accountUtils");
31
31
  const generalUtils_1 = require("./generalUtils");
32
32
  const solautoUtils_1 = require("./solautoUtils");
33
33
  const marginfi_1 = require("./marginfi");
34
+ const services_1 = require("../services");
34
35
  function getSolanaRpcConnection(rpcUrl, programId, lpEnv) {
35
36
  const connection = new web3_js_1.Connection(rpcUrl, {
36
37
  commitment: "confirmed",
@@ -270,7 +271,7 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, txType, prior
270
271
  (0, generalUtils_1.consoleLog)("Compute unit limit: ", cuLimit);
271
272
  }
272
273
  let cuPrice;
273
- if (prioritySetting !== types_1.PriorityFeeSetting.None) {
274
+ if ((0, services_1.usePriorityFee)(prioritySetting)) {
274
275
  cuPrice = await getComputeUnitPriceEstimate(umi, tx, prioritySetting);
275
276
  cuPrice = Math.min(cuPrice ?? 0, 100000000);
276
277
  (0, generalUtils_1.consoleLog)("Compute unit price: ", cuPrice);
@@ -8,6 +8,7 @@ import {
8
8
  deposit,
9
9
  getBatches,
10
10
  getClient,
11
+ getMaxLiqUtilizationRateBps,
11
12
  getPositionExBulk,
12
13
  getSolanaRpcConnection,
13
14
  getSolautoManagedPositions,
@@ -83,7 +84,7 @@ export async function main() {
83
84
  // repayGap: 100,
84
85
  // repayToBps: client.pos.maxRepayToBps,
85
86
  // }),
86
- deposit(client, toBaseUnit(5, client.pos.supplyMintInfo.decimals)),
87
+ deposit(client, toBaseUnit(50, client.pos.supplyMintInfo.decimals)),
87
88
  rebalance(client, client.pos.maxBoostToBps),
88
89
  // withdraw(client, "All"),
89
90
  // closeSolautoPosition(client)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.700",
3
+ "version": "1.0.702",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "Typescript SDK for the Solauto program on the Solana blockchain",
@@ -8,11 +8,13 @@ import { PriceType, RebalanceDirection, TokenType } from "../../generated";
8
8
  import {
9
9
  consoleLog,
10
10
  fromBaseUnit,
11
+ fromBps,
11
12
  getLiqUtilzationRateBps,
12
13
  safeGetPrice,
13
14
  toBaseUnit,
14
15
  tokenInfo,
15
16
  } from "../../utils";
17
+ import { SolautoFeesBps } from "./solautoFees";
16
18
 
17
19
  export class RebalanceSwapManager {
18
20
  public swapParams!: SwapParams;
@@ -20,6 +22,7 @@ export class RebalanceSwapManager {
20
22
  public flBorrowAmount?: bigint;
21
23
 
22
24
  private jupSwapManager!: JupSwapManager;
25
+ private solautoFeeBps!: number;
23
26
 
24
27
  constructor(
25
28
  private client: SolautoClient,
@@ -29,6 +32,11 @@ export class RebalanceSwapManager {
29
32
  private priceType?: PriceType
30
33
  ) {
31
34
  this.jupSwapManager = new JupSwapManager(client.signer);
35
+ this.solautoFeeBps = SolautoFeesBps.create(
36
+ this.client.isReferred,
37
+ this.targetLiqUtilizationRateBps,
38
+ this.client.pos.netWorthUsd(this.priceType)
39
+ ).getSolautoFeesBps(values.rebalanceDirection).total;
32
40
  }
33
41
 
34
42
  private isBoost() {
@@ -91,19 +99,27 @@ export class RebalanceSwapManager {
91
99
  const { input, biasedInputPrice, output, biasedOutputPrice } =
92
100
  this.swapDetails();
93
101
 
94
- const swapInputUsd = swapInputAmount
102
+ let swapInputUsd = swapInputAmount
95
103
  ? fromBaseUnit(
96
104
  swapInputAmount,
97
105
  tokenInfo(toWeb3JsPublicKey(input.mint)).decimals
98
106
  ) * biasedInputPrice
99
107
  : this.usdToSwap();
108
+ swapInputUsd = this.flRequirements?.flFeeBps
109
+ ? swapInputUsd + swapInputUsd * fromBps(this.flRequirements.flFeeBps)
110
+ : swapInputUsd;
111
+ if (this.isBoost() && this.client.pos.state.debt.borrowFeeBps) {
112
+ swapInputUsd +=
113
+ swapInputUsd * fromBps(this.client.pos.state.debt.borrowFeeBps);
114
+ }
100
115
 
101
- const swapOutputUsd = swapOutputAmount
116
+ let swapOutputUsd = swapOutputAmount
102
117
  ? fromBaseUnit(
103
118
  swapOutputAmount,
104
119
  tokenInfo(toWeb3JsPublicKey(output.mint)).decimals
105
120
  ) * biasedOutputPrice
106
121
  : this.usdToSwap();
122
+ swapOutputUsd = swapOutputUsd - swapOutputUsd * fromBps(this.solautoFeeBps);
107
123
 
108
124
  supplyUsd = this.isBoost()
109
125
  ? supplyUsd + swapOutputUsd
@@ -147,7 +163,7 @@ export class RebalanceSwapManager {
147
163
  if (insufficient) {
148
164
  consoleLog("Insufficient swap quote:", swapQuote);
149
165
 
150
- const increment = 0.01 + i * 0.005;
166
+ const increment = 0.01 + i * 0.001;
151
167
  swapInput.amount = this.bigIntWithIncrement(
152
168
  swapInput.amount,
153
169
  this.isBoost() ? increment * -1 : increment
@@ -269,6 +269,7 @@ export class TransactionsManager<T extends TxHandler> {
269
269
 
270
270
  private async processTransactionsAtomically(itemSets: TransactionSet[]) {
271
271
  let num = 0;
272
+ let priorityFeeSetting: PriorityFeeSetting;
272
273
  let transactions: TransactionBuilder[] = [];
273
274
 
274
275
  await retryWithExponentialBackoff(
@@ -282,6 +283,7 @@ export class TransactionsManager<T extends TxHandler> {
282
283
  }
283
284
 
284
285
  num = attemptNum;
286
+ priorityFeeSetting = this.getUpdatedPriorityFeeSetting(prevError, attemptNum);
285
287
 
286
288
  if (attemptNum > 0) {
287
289
  const refreshedSets = await this.refreshItemSets(
@@ -334,7 +336,7 @@ export class TransactionsManager<T extends TxHandler> {
334
336
  this.txHandler.otherSigners,
335
337
  transactions,
336
338
  this.txRunType,
337
- this.getUpdatedPriorityFeeSetting(prevError, attemptNum),
339
+ priorityFeeSetting,
338
340
  () =>
339
341
  this.updateStatusForSets(
340
342
  itemSets,
@@ -383,7 +385,8 @@ export class TransactionsManager<T extends TxHandler> {
383
385
  itemSets.filter(
384
386
  (x) =>
385
387
  this.statuses.find((y) => x.name() === y.name)?.simulationSuccessful
386
- ).length === itemSets.length
388
+ ).length === itemSets.length,
389
+ priorityFeeSetting
387
390
  );
388
391
 
389
392
  const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${errorDetails.errorInfo?.split("\n")[0] ?? "unknown"}`;
@@ -553,7 +556,8 @@ export class TransactionsManager<T extends TxHandler> {
553
556
  this.txHandler.umi,
554
557
  [tx],
555
558
  e,
556
- this.statuses.find((x) => x.name === txName)?.simulationSuccessful
559
+ this.statuses.find((x) => x.name === txName)?.simulationSuccessful,
560
+ priorityFeeSetting
557
561
  );
558
562
 
559
563
  const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${errorDetails.errorInfo?.split("\n")[0] ?? "unknown"}`;
@@ -56,7 +56,7 @@ import {
56
56
  getJupiterErrorFromCode,
57
57
  JUPITER_PROGRAM_ID,
58
58
  } from "../../jupiter-sdk";
59
- import { TransactionItemInputs, BundleSimulationError } from "../../types";
59
+ import { TransactionItemInputs, BundleSimulationError, PriorityFeeSetting } from "../../types";
60
60
  import { isMarginfiProgram } from "../../constants";
61
61
 
62
62
  interface wSolTokenUsage {
@@ -604,7 +604,8 @@ export function getErrorInfo(
604
604
  umi: Umi,
605
605
  txs: TransactionBuilder[],
606
606
  error: Error,
607
- simulationSuccessful?: boolean
607
+ simulationSuccessful?: boolean,
608
+ priorityFeeSetting?: PriorityFeeSetting
608
609
  ) {
609
610
  let canBeIgnored = false;
610
611
  let errorName: string | undefined = undefined;
@@ -620,7 +621,7 @@ export function getErrorInfo(
620
621
  addTxOptimizations(
621
622
  umi,
622
623
  txs[txIdx],
623
- 1,
624
+ usePriorityFee(priorityFeeSetting) ? 1 : undefined,
624
625
  simulationSuccessful ? 1 : undefined
625
626
  ).getInstructions().length - txs[txIdx].getInstructions().length;
626
627
 
@@ -724,3 +725,7 @@ export function getErrorInfo(
724
725
 
725
726
  return errData;
726
727
  }
728
+
729
+ export function usePriorityFee(priorityFeeSetting?: PriorityFeeSetting) {
730
+ return priorityFeeSetting !== undefined && priorityFeeSetting !== PriorityFeeSetting.None;
731
+ }
@@ -28,6 +28,7 @@ import {
28
28
  retryWithExponentialBackoff,
29
29
  } from "./generalUtils";
30
30
  import base58 from "bs58";
31
+ import { usePriorityFee } from "../services";
31
32
 
32
33
  export function getRandomTipAccount(): PublicKey {
33
34
  const randomInt = Math.floor(Math.random() * JITO_TIP_ACCOUNTS.length);
@@ -303,7 +304,7 @@ export async function sendJitoBundledTransactions(
303
304
  txs[0] = txs[0].prepend(getTipInstruction(userSigner, 150_000));
304
305
 
305
306
  const feeEstimates =
306
- priorityFeeSetting !== PriorityFeeSetting.None
307
+ usePriorityFee(priorityFeeSetting)
307
308
  ? await Promise.all(
308
309
  txs.map(
309
310
  async (x) =>
@@ -48,6 +48,7 @@ import {
48
48
  } from "./generalUtils";
49
49
  import { createDynamicSolautoProgram } from "./solautoUtils";
50
50
  import { createDynamicMarginfiProgram } from "./marginfi";
51
+ import { usePriorityFee } from "../services";
51
52
 
52
53
  export function getSolanaRpcConnection(
53
54
  rpcUrl: string,
@@ -469,7 +470,7 @@ export async function sendSingleOptimizedTransaction(
469
470
  }
470
471
 
471
472
  let cuPrice: number | undefined;
472
- if (prioritySetting !== PriorityFeeSetting.None) {
473
+ if (usePriorityFee(prioritySetting)) {
473
474
  cuPrice = await getComputeUnitPriceEstimate(umi, tx, prioritySetting);
474
475
  cuPrice = Math.min(cuPrice ?? 0, 100_000_000);
475
476
  consoleLog("Compute unit price: ", cuPrice);