@haven-fi/solauto-sdk 1.0.711 → 1.0.713

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.
@@ -4,12 +4,13 @@ export declare class RebalanceTxBuilder {
4
4
  private client;
5
5
  private targetLiqUtilizationRateBps?;
6
6
  private optimizeSize?;
7
+ private bpsDistanceFromRebalance?;
7
8
  private values;
8
9
  private rebalanceType;
9
10
  private swapManager;
10
11
  private flRequirements?;
11
12
  private priceType;
12
- constructor(client: SolautoClient, targetLiqUtilizationRateBps?: number | undefined, optimizeSize?: boolean | undefined);
13
+ constructor(client: SolautoClient, targetLiqUtilizationRateBps?: number | undefined, optimizeSize?: boolean | undefined, bpsDistanceFromRebalance?: number | undefined);
13
14
  private shouldProceedWithRebalance;
14
15
  private getRebalanceValues;
15
16
  private getFlLiquiditySource;
@@ -1 +1 @@
1
- {"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAiCrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IACpC,OAAO,CAAC,YAAY,CAAC;IATvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAiC;gBAGxC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA,EACpC,YAAY,CAAC,EAAE,OAAO,YAAA;IAGhC,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,iCAAiC;YAgC3B,qBAAqB;IA0CnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,yBAAyB;YAqBnB,mBAAmB;YAyBnB,sBAAsB;YAyBtB,mBAAmB;IAsFpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
1
+ {"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAiCrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IACpC,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,wBAAwB,CAAC;IAVnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAiC;gBAGxC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA,EACpC,YAAY,CAAC,EAAE,OAAO,YAAA,EACtB,wBAAwB,CAAC,EAAE,MAAM,YAAA;IAG3C,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,iCAAiC;YAgC3B,qBAAqB;IA0CnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,yBAAyB;YAqBnB,mBAAmB;YAyBnB,sBAAsB;YAyBtB,mBAAmB;IAsFpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
@@ -10,10 +10,11 @@ const rebalanceValues_1 = require("./rebalanceValues");
10
10
  const solautoFees_1 = require("./solautoFees");
11
11
  const rebalanceSwapManager_1 = require("./rebalanceSwapManager");
12
12
  class RebalanceTxBuilder {
13
- constructor(client, targetLiqUtilizationRateBps, optimizeSize) {
13
+ constructor(client, targetLiqUtilizationRateBps, optimizeSize, bpsDistanceFromRebalance) {
14
14
  this.client = client;
15
15
  this.targetLiqUtilizationRateBps = targetLiqUtilizationRateBps;
16
16
  this.optimizeSize = optimizeSize;
17
+ this.bpsDistanceFromRebalance = bpsDistanceFromRebalance;
17
18
  this.priceType = generated_1.PriceType.Realtime;
18
19
  }
19
20
  shouldProceedWithRebalance() {
@@ -22,7 +23,7 @@ class RebalanceTxBuilder {
22
23
  }
23
24
  return (this.client.pos.supplyUsd() > 0 &&
24
25
  (this.targetLiqUtilizationRateBps !== undefined ||
25
- this.client.pos.eligibleForRebalance()));
26
+ this.client.pos.eligibleForRebalance(this.bpsDistanceFromRebalance)));
26
27
  }
27
28
  getRebalanceValues() {
28
29
  return (0, rebalanceValues_1.getRebalanceValues)(this.client.pos, this.priceType, this.targetLiqUtilizationRateBps, solautoFees_1.SolautoFeesBps.create(this.client.isReferred, this.targetLiqUtilizationRateBps, this.client.pos.netWorthUsd(this.priceType)), this.flRequirements?.flFeeBps ?? 0);
@@ -55,6 +55,7 @@ export declare class TransactionsManager<T extends TxHandler> {
55
55
  protected getUpdatedPriorityFeeSetting(prevError: Error | undefined, attemptNum: number): PriorityFeeSetting;
56
56
  private updateStatusForSets;
57
57
  send(items: TransactionItem[]): Promise<TransactionManagerStatuses>;
58
+ private shouldProceedToSend;
58
59
  private processTransactionsAtomically;
59
60
  private processTransactionSet;
60
61
  private refreshItemSets;
@@ -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;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"}
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;IA8BtC,OAAO,CAAC,mBAAmB;YAoBb,6BAA6B;YAwJ7B,qBAAqB;YAmDrB,eAAe;cAkDb,eAAe,CAC7B,EAAE,EAAE,kBAAkB,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,SAAS,CAAC,EAAE,kBAAkB;CAyDjC"}
@@ -165,6 +165,19 @@ class TransactionsManager {
165
165
  }
166
166
  return this.statuses;
167
167
  }
168
+ shouldProceedToSend(itemSets, attemptNum) {
169
+ if (!itemSets) {
170
+ return false;
171
+ }
172
+ const newItemSetNames = itemSets.flatMap((x) => x.items.map((y) => y.name ?? ""));
173
+ if (newItemSetNames.length === 1 &&
174
+ newItemSetNames[0] === this.updateOracleTxName) {
175
+ (0, utils_1.consoleLog)("Skipping unnecessary oracle update");
176
+ this.updateStatusForSets(itemSets, TransactionStatus.Skipped, attemptNum);
177
+ return false;
178
+ }
179
+ return true;
180
+ }
168
181
  async processTransactionsAtomically(itemSets) {
169
182
  let num = 0;
170
183
  let priorityFeeSetting;
@@ -186,6 +199,9 @@ class TransactionsManager {
186
199
  itemSets = refreshedSets;
187
200
  }
188
201
  }
202
+ if (!this.shouldProceedToSend(itemSets, attemptNum)) {
203
+ return;
204
+ }
189
205
  transactions = [];
190
206
  for (const set of itemSets) {
191
207
  transactions.push(await set.getSingleTransaction());
@@ -242,8 +258,9 @@ class TransactionsManager {
242
258
  const refreshedSets = await this.refreshItemSets(itemSets, attemptNum, prevError, currentIndex);
243
259
  itemSet = refreshedSets ? refreshedSets[0] : undefined;
244
260
  }
245
- if (!itemSet)
261
+ if (!itemSet || !this.shouldProceedToSend([itemSet], attemptNum)) {
246
262
  return;
263
+ }
247
264
  const tx = await itemSet.getSingleTransaction();
248
265
  if (tx.getInstructions().length === 0) {
249
266
  this.updateStatus(itemSet.name(), TransactionStatus.Skipped, attemptNum);
@@ -272,12 +289,6 @@ class TransactionsManager {
272
289
  ...itemSets.slice(currentIndex + 1).flatMap((set) => set.items),
273
290
  ]
274
291
  : itemSets.flatMap((set) => set.items));
275
- const newItemSetNames = newItemSets.map((x) => x.name());
276
- if (newItemSetNames.length === 1 &&
277
- newItemSetNames[0] === this.updateOracleTxName) {
278
- (0, utils_1.consoleLog)("Skipping unnecessary oracle update");
279
- return undefined;
280
- }
281
292
  if (currentIndex !== undefined && newItemSets.length > 1) {
282
293
  itemSets.splice(currentIndex, itemSets.length - currentIndex, ...newItemSets);
283
294
  const startOfQueuedStatuses = this.statuses.findIndex((x) => x.status === TransactionStatus.Queued);
@@ -10,6 +10,6 @@ export declare function deposit(client: SolautoClient, baseUnitAmount: bigint):
10
10
  export declare function borrow(client: SolautoClient, baseUnitAmount: bigint): TransactionItem;
11
11
  export declare function withdraw(client: SolautoClient, amount: "All" | bigint): TransactionItem;
12
12
  export declare function repay(client: SolautoClient, amount: "All" | bigint): TransactionItem;
13
- export declare function rebalance(client: SolautoClient, targetLiqUtilizationRateBps?: number): TransactionItem;
13
+ export declare function rebalance(client: SolautoClient, targetLiqUtilizationRateBps?: number, bpsDistanceFromRebalance?: number): TransactionItem;
14
14
  export declare function swapThenDeposit(client: SolautoClient, depositMint: PublicKey, depositAmountBaseUnit: bigint): TransactionItem[];
15
15
  //# sourceMappingURL=instructionUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructionUtils.d.ts","sourceRoot":"","sources":["../../src/utils/instructionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,aAAa,EAEb,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,gCAAgC,EAC/C,GAAG,CAAC,EAAE,kBAAkB,mBAQzB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,mBAOzD;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,gBAAgB,CAAC,gCAAgC,CAAC,EAC5D,GAAG,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,mBAY1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,mBAOrD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAUpE;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAWnE;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,mBAerE;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,mBAclE;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,mBAYrC;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,SAAS,EACtB,qBAAqB,EAAE,MAAM,qBAyC9B"}
1
+ {"version":3,"file":"instructionUtils.d.ts","sourceRoot":"","sources":["../../src/utils/instructionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,aAAa,EAEb,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,gCAAgC,EAC/C,GAAG,CAAC,EAAE,kBAAkB,mBAQzB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,mBAOzD;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,gBAAgB,CAAC,gCAAgC,CAAC,EAC5D,GAAG,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,mBAY1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,mBAOrD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAUpE;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAWnE;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,mBAerE;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,mBAclE;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,wBAAwB,CAAC,EAAE,MAAM,mBAalC;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,SAAS,EACtB,qBAAqB,EAAE,MAAM,qBAyC9B"}
@@ -77,8 +77,8 @@ function repay(client, amount) {
77
77
  }),
78
78
  }), "repay");
79
79
  }
80
- function rebalance(client, targetLiqUtilizationRateBps) {
81
- return new services_1.TransactionItem(async (attemptNum, prevError) => await new services_1.RebalanceTxBuilder(client, targetLiqUtilizationRateBps, attemptNum > 2 && prevError instanceof services_1.TransactionTooLargeError).buildRebalanceTx(attemptNum), "rebalance", true);
80
+ function rebalance(client, targetLiqUtilizationRateBps, bpsDistanceFromRebalance) {
81
+ return new services_1.TransactionItem(async (attemptNum, prevError) => await new services_1.RebalanceTxBuilder(client, targetLiqUtilizationRateBps, attemptNum > 2 && prevError instanceof services_1.TransactionTooLargeError, bpsDistanceFromRebalance).buildRebalanceTx(attemptNum), "rebalance", true);
82
82
  }
83
83
  function swapThenDeposit(client, depositMint, depositAmountBaseUnit) {
84
84
  return [
@@ -47,8 +47,8 @@ export async function main() {
47
47
  });
48
48
 
49
49
  await client.initializeExistingSolautoPosition({
50
- positionId: 2,
51
- authority: new PublicKey("EBhRj7jbF2EVE21i19JSuCX1BAbnZFYhoKW64HnaZ3kf"),
50
+ positionId: 1,
51
+ authority: new PublicKey("96929DasYJ2nbfdsFmUNzns2BQ9wKVfXbNoUDbc9zFUS"),
52
52
  // lpUserAccount: new PublicKey(
53
53
  // "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
54
54
  // ),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.711",
3
+ "version": "1.0.713",
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",
@@ -49,7 +49,8 @@ export class RebalanceTxBuilder {
49
49
  constructor(
50
50
  private client: SolautoClient,
51
51
  private targetLiqUtilizationRateBps?: number,
52
- private optimizeSize?: boolean
52
+ private optimizeSize?: boolean,
53
+ private bpsDistanceFromRebalance?: number
53
54
  ) {}
54
55
 
55
56
  private shouldProceedWithRebalance() {
@@ -62,7 +63,7 @@ export class RebalanceTxBuilder {
62
63
  return (
63
64
  this.client.pos.supplyUsd() > 0 &&
64
65
  (this.targetLiqUtilizationRateBps !== undefined ||
65
- this.client.pos.eligibleForRebalance())
66
+ this.client.pos.eligibleForRebalance(this.bpsDistanceFromRebalance))
66
67
  );
67
68
  }
68
69
 
@@ -267,6 +267,26 @@ export class TransactionsManager<T extends TxHandler> {
267
267
  return this.statuses;
268
268
  }
269
269
 
270
+ private shouldProceedToSend(itemSets: TransactionSet[], attemptNum: number) {
271
+ if (!itemSets) {
272
+ return false;
273
+ }
274
+
275
+ const newItemSetNames = itemSets.flatMap((x) =>
276
+ x.items.map((y) => y.name ?? "")
277
+ );
278
+ if (
279
+ newItemSetNames.length === 1 &&
280
+ newItemSetNames[0] === this.updateOracleTxName
281
+ ) {
282
+ consoleLog("Skipping unnecessary oracle update");
283
+ this.updateStatusForSets(itemSets, TransactionStatus.Skipped, attemptNum);
284
+ return false;
285
+ }
286
+
287
+ return true;
288
+ }
289
+
270
290
  private async processTransactionsAtomically(itemSets: TransactionSet[]) {
271
291
  let num = 0;
272
292
  let priorityFeeSetting: PriorityFeeSetting;
@@ -283,7 +303,10 @@ export class TransactionsManager<T extends TxHandler> {
283
303
  }
284
304
 
285
305
  num = attemptNum;
286
- priorityFeeSetting = this.getUpdatedPriorityFeeSetting(prevError, attemptNum);
306
+ priorityFeeSetting = this.getUpdatedPriorityFeeSetting(
307
+ prevError,
308
+ attemptNum
309
+ );
287
310
 
288
311
  if (attemptNum > 0) {
289
312
  const refreshedSets = await this.refreshItemSets(
@@ -298,6 +321,10 @@ export class TransactionsManager<T extends TxHandler> {
298
321
  }
299
322
  }
300
323
 
324
+ if (!this.shouldProceedToSend(itemSets, attemptNum)) {
325
+ return;
326
+ }
327
+
301
328
  transactions = [];
302
329
  for (const set of itemSets) {
303
330
  transactions.push(await set.getSingleTransaction());
@@ -436,7 +463,9 @@ export class TransactionsManager<T extends TxHandler> {
436
463
  );
437
464
  itemSet = refreshedSets ? refreshedSets[0] : undefined;
438
465
  }
439
- if (!itemSet) return;
466
+ if (!itemSet || !this.shouldProceedToSend([itemSet], attemptNum)) {
467
+ return;
468
+ }
440
469
 
441
470
  const tx = await itemSet.getSingleTransaction();
442
471
  if (tx.getInstructions().length === 0) {
@@ -487,15 +516,6 @@ export class TransactionsManager<T extends TxHandler> {
487
516
  : itemSets.flatMap((set) => set.items)
488
517
  );
489
518
 
490
- const newItemSetNames = newItemSets.map((x) => x.name());
491
- if (
492
- newItemSetNames.length === 1 &&
493
- newItemSetNames[0] === this.updateOracleTxName
494
- ) {
495
- consoleLog("Skipping unnecessary oracle update");
496
- return undefined;
497
- }
498
-
499
519
  if (currentIndex !== undefined && newItemSets.length > 1) {
500
520
  itemSets.splice(
501
521
  currentIndex,
@@ -122,14 +122,16 @@ export function repay(client: SolautoClient, amount: "All" | bigint) {
122
122
 
123
123
  export function rebalance(
124
124
  client: SolautoClient,
125
- targetLiqUtilizationRateBps?: number
125
+ targetLiqUtilizationRateBps?: number,
126
+ bpsDistanceFromRebalance?: number
126
127
  ) {
127
128
  return new TransactionItem(
128
129
  async (attemptNum, prevError) =>
129
130
  await new RebalanceTxBuilder(
130
131
  client,
131
132
  targetLiqUtilizationRateBps,
132
- attemptNum > 2 && prevError instanceof TransactionTooLargeError
133
+ attemptNum > 2 && prevError instanceof TransactionTooLargeError,
134
+ bpsDistanceFromRebalance
133
135
  ).buildRebalanceTx(attemptNum),
134
136
  "rebalance",
135
137
  true