@haven-fi/solauto-sdk 1.0.634 → 1.0.635

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.
@@ -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;AA0BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IARtC,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,CAAa;gBAGpB,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAyCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,mBAAmB;YAOb,mBAAmB;YAqCnB,sBAAsB;YAyBtB,mBAAmB;IAkEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAW9C"}
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;AA0BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IARtC,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;IAG9C,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAyCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,mBAAmB;YAOb,mBAAmB;YA4CnB,sBAAsB;YAyBtB,mBAAmB;IAkEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
@@ -13,6 +13,7 @@ class RebalanceTxBuilder {
13
13
  constructor(client, targetLiqUtilizationRateBps) {
14
14
  this.client = client;
15
15
  this.targetLiqUtilizationRateBps = targetLiqUtilizationRateBps;
16
+ this.priceType = generated_1.PriceType.Realtime;
16
17
  }
17
18
  shouldProceedWithRebalance() {
18
19
  return (this.client.pos.supplyUsd() > 0 &&
@@ -118,13 +119,19 @@ class RebalanceTxBuilder {
118
119
  (0, utils_1.safeGetPrice)(mint, generated_1.PriceType.Ema));
119
120
  }
120
121
  async setRebalanceDetails(attemptNum) {
121
- this.priceType = generated_1.PriceType.Realtime;
122
- this.values = this.getRebalanceValues();
123
- const postRebalanceEmaUtilRateBps = (0, utils_1.getLiqUtilzationRateBps)(this.realtimeUsdToEmaUsd(this.values.endResult.supplyUsd, this.client.pos.supplyMint), this.realtimeUsdToEmaUsd(this.values.endResult.debtUsd, this.client.pos.debtMint), this.client.pos.state.liqThresholdBps);
122
+ let rebalanceValues = this.getRebalanceValues();
123
+ if (!rebalanceValues) {
124
+ return false;
125
+ }
126
+ const postRebalanceEmaUtilRateBps = (0, utils_1.getLiqUtilzationRateBps)(this.realtimeUsdToEmaUsd(rebalanceValues.endResult.supplyUsd, this.client.pos.supplyMint), this.realtimeUsdToEmaUsd(rebalanceValues.endResult.debtUsd, this.client.pos.debtMint), this.client.pos.state.liqThresholdBps);
124
127
  if (postRebalanceEmaUtilRateBps > this.client.pos.maxBoostToBps) {
125
128
  this.priceType = generated_1.PriceType.Ema;
126
- this.values = this.getRebalanceValues();
129
+ rebalanceValues = this.getRebalanceValues();
130
+ if (!rebalanceValues) {
131
+ return false;
132
+ }
127
133
  }
134
+ this.values = rebalanceValues;
128
135
  this.flRequirements = await this.flashLoanRequirements(attemptNum);
129
136
  if (this.flRequirements?.flFeeBps) {
130
137
  this.values = this.getRebalanceValues(this.flRequirements.flFeeBps);
@@ -132,6 +139,7 @@ class RebalanceTxBuilder {
132
139
  this.swapManager = new rebalanceSwapManager_1.RebalanceSwapManager(this.client, this.values, this.flRequirements, this.targetLiqUtilizationRateBps);
133
140
  await this.swapManager.setSwapParams(attemptNum);
134
141
  this.setRebalanceType();
142
+ return true;
135
143
  }
136
144
  async refreshBeforeRebalance() {
137
145
  if (this.client.selfManaged ||
@@ -200,7 +208,10 @@ class RebalanceTxBuilder {
200
208
  this.client.log("Not eligible for a rebalance");
201
209
  return undefined;
202
210
  }
203
- await this.setRebalanceDetails(attemptNum);
211
+ const proceed = await this.setRebalanceDetails(attemptNum);
212
+ if (!proceed) {
213
+ return undefined;
214
+ }
204
215
  return await this.assembleTransaction();
205
216
  }
206
217
  }
@@ -26,6 +26,6 @@ export interface RebalanceValues extends DebtAdjustment {
26
26
  tokenBalanceChange?: TokenBalanceChange;
27
27
  repayingCloseToMaxLtv: boolean;
28
28
  }
29
- export declare function getRebalanceValues(solautoPosition: SolautoPositionEx, priceType: PriceType, targetLiqUtilizationRateBps?: number, solautoFeeBps?: SolautoFeesBps, flFeeBps?: number): RebalanceValues;
29
+ export declare function getRebalanceValues(solautoPosition: SolautoPositionEx, priceType: PriceType, targetLiqUtilizationRateBps?: number, solautoFeeBps?: SolautoFeesBps, flFeeBps?: number): RebalanceValues | undefined;
30
30
  export {};
31
31
  //# sourceMappingURL=rebalanceValues.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rebalanceValues.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,iCAAiC,EAAE,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,yBAAyB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,iCAAiC,EAAE,MAAM,CAAC;CAC3C;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,MAAM,EACzB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,gBAAgB,GACtB,yBAAyB,CA8B3B;AAED,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,cAAc,EACnB,2BAA2B,EAAE,MAAM,EACnC,IAAI,CAAC,EAAE,gBAAgB,GACtB,cAAc,CAgChB;AA2ED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,SAAS,EACpB,2BAA2B,CAAC,EAAE,MAAM,EACpC,aAAa,CAAC,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,CA2CjB"}
1
+ {"version":3,"file":"rebalanceValues.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,iCAAiC,EAAE,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,yBAAyB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,iCAAiC,EAAE,MAAM,CAAC;CAC3C;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,MAAM,EACzB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,gBAAgB,GACtB,yBAAyB,CA8B3B;AAED,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,cAAc,EACnB,2BAA2B,EAAE,MAAM,EACnC,IAAI,CAAC,EAAE,gBAAgB,GACtB,cAAc,CAgChB;AA2ED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,SAAS,EACpB,2BAA2B,CAAC,EAAE,MAAM,EACpC,aAAa,CAAC,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS,CA8C7B"}
@@ -67,7 +67,7 @@ function getTargetLiqUtilizationRateBps(solautoPosition, priceType, targetLiqUti
67
67
  // else if (tokenBalanceChange !== null) {
68
68
  // return currentRate;
69
69
  // }
70
- throw new generated_1.InvalidRebalanceConditionError((0, generated_1.createSolautoProgram)());
70
+ return undefined;
71
71
  }
72
72
  function getAdjustedPositionValues(solautoPosition, priceType, tokenBalanceChange) {
73
73
  let supplyUsd = solautoPosition.supplyUsd(priceType);
@@ -100,6 +100,9 @@ function getRebalanceDirection(solautoPosition, targetLtvBps) {
100
100
  function getRebalanceValues(solautoPosition, priceType, targetLiqUtilizationRateBps, solautoFeeBps, flFeeBps) {
101
101
  const tokenBalanceChange = getTokenBalanceChange();
102
102
  const targetRate = getTargetLiqUtilizationRateBps(solautoPosition, priceType, targetLiqUtilizationRateBps, tokenBalanceChange);
103
+ if (targetRate === undefined) {
104
+ return undefined;
105
+ }
103
106
  const rebalanceDirection = getRebalanceDirection(solautoPosition, targetRate);
104
107
  const position = getAdjustedPositionValues(solautoPosition, priceType, tokenBalanceChange);
105
108
  const fees = {
@@ -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;AA2BjE,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;AA8LD,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;AA2BjE,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;AA8LD,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;;;;EA8G/B"}
@@ -339,14 +339,6 @@ async function convertReferralFeesToDestination(referralManager, tokenAccount, d
339
339
  return { tx, lookupTableAddresses };
340
340
  }
341
341
  function getErrorInfo(umi, txs, error, simulationSuccessful) {
342
- if (error instanceof generated_1.InvalidRebalanceConditionError) {
343
- return {
344
- canBeIgnored: true,
345
- errorName: generated_1.InvalidRebalanceConditionError.name,
346
- errorInfo: new generated_1.InvalidRebalanceConditionError((0, generated_1.createSolautoProgram)())
347
- .message,
348
- };
349
- }
350
342
  let canBeIgnored = false;
351
343
  let errorName = undefined;
352
344
  let errorInfo = undefined;
@@ -86,7 +86,7 @@ export declare abstract class SolautoPositionEx {
86
86
  supplyPrice?: number;
87
87
  debtPrice?: number;
88
88
  }): Promise<void>;
89
- simulateRebalance(unixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number): void;
89
+ simulateRebalance(unixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number): undefined;
90
90
  refetchPositionData(): Promise<void>;
91
91
  }
92
92
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
@@ -221,6 +221,9 @@ class SolautoPositionEx {
221
221
  simulateRebalance(unixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
222
222
  this._data.state.lastRefreshed = BigInt(unixTime);
223
223
  const rebalance = (0, rebalance_1.getRebalanceValues)(this, generated_1.PriceType.Realtime, targetLiqUtilizationRateBps, rebalance_1.SolautoFeesBps.create(true, targetLiqUtilizationRateBps, this.netWorthUsd));
224
+ if (!rebalance) {
225
+ return undefined;
226
+ }
224
227
  this.updateSupply(rebalance.endResult.supplyUsd, supplyPrice);
225
228
  this.updateDebt(rebalance.endResult.debtUsd, debtPrice);
226
229
  this.updateNetWorth(supplyPrice);
@@ -3,29 +3,28 @@ import { createSignerFromKeypair } from "@metaplex-foundation/umi";
3
3
  import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
4
4
  import {
5
5
  consoleLog,
6
- fetchTokenPrices,
7
6
  getClient,
8
7
  getSolanaRpcConnection,
9
8
  LendingPlatform,
10
9
  LOCAL_IRONFORGE_API_URL,
11
- PriceType,
12
10
  PriorityFeeSetting,
11
+ ProgramEnv,
13
12
  rebalance,
14
- safeGetPrice,
15
13
  SOLAUTO_PROD_PROGRAM,
16
14
  SOLAUTO_TEST_PROGRAM,
17
15
  TransactionsManager,
18
16
  } from "../src";
19
17
  import { getSecretKey } from "./shared";
20
- import { NATIVE_MINT } from "@solana/spl-token";
21
18
 
22
19
  const payForTransaction = false;
23
20
  const testProgram = true;
21
+ const lpEnv: ProgramEnv = "Prod";
24
22
 
25
23
  export async function main() {
26
- const [, umi] = getSolanaRpcConnection(
24
+ let [, umi] = getSolanaRpcConnection(
27
25
  LOCAL_IRONFORGE_API_URL,
28
- testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM
26
+ testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
27
+ lpEnv
29
28
  );
30
29
 
31
30
  const signer = createSignerFromKeypair(
@@ -33,36 +32,33 @@ export async function main() {
33
32
  fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey("solauto-manager")))
34
33
  );
35
34
 
36
- await fetchTokenPrices([NATIVE_MINT]);
35
+ const client = getClient(LendingPlatform.Marginfi, {
36
+ signer,
37
+ showLogs: true,
38
+ rpcUrl: LOCAL_IRONFORGE_API_URL,
39
+ programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
40
+ lpEnv,
41
+ });
37
42
 
38
- console.log(safeGetPrice(NATIVE_MINT), safeGetPrice(NATIVE_MINT, PriceType.Ema));
43
+ await client.initialize({
44
+ positionId: 3,
45
+ authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
46
+ });
39
47
 
40
- // const client = getClient(LendingPlatform.Marginfi, {
41
- // signer,
42
- // showLogs: true,
43
- // rpcUrl: LOCAL_IRONFORGE_API_URL,
44
- // programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
45
- // });
48
+ const transactionItems = [rebalance(client)];
46
49
 
47
- // await client.initialize({
48
- // positionId: 3,
49
- // authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
50
- // });
51
-
52
- // const transactionItems = [rebalance(client)];
53
-
54
- // const txManager = new TransactionsManager(
55
- // client,
56
- // undefined,
57
- // payForTransaction ? "normal" : "only-simulate",
58
- // PriorityFeeSetting.Min,
59
- // true,
60
- // undefined,
61
- // { totalRetries: 5 }
62
- // );
63
- // const statuses = await txManager.clientSend(transactionItems);
50
+ const txManager = new TransactionsManager(
51
+ client,
52
+ undefined,
53
+ payForTransaction ? "normal" : "only-simulate",
54
+ PriorityFeeSetting.Min,
55
+ true,
56
+ undefined,
57
+ { totalRetries: 5 }
58
+ );
59
+ const statuses = await txManager.clientSend(transactionItems);
64
60
 
65
- // consoleLog(statuses);
61
+ consoleLog(statuses);
66
62
  }
67
63
 
68
64
  main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.634",
3
+ "version": "1.0.635",
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",
@@ -37,7 +37,7 @@ export class RebalanceTxBuilder {
37
37
  private rebalanceType!: SolautoRebalanceType;
38
38
  private swapManager!: RebalanceSwapManager;
39
39
  private flRequirements?: FlashLoanRequirements;
40
- private priceType!: PriceType;
40
+ private priceType: PriceType = PriceType.Realtime;
41
41
 
42
42
  constructor(
43
43
  private client: SolautoClient,
@@ -211,29 +211,35 @@ export class RebalanceTxBuilder {
211
211
  }
212
212
 
213
213
  private async setRebalanceDetails(attemptNum: number) {
214
- this.priceType = PriceType.Realtime;
215
- this.values = this.getRebalanceValues();
214
+ let rebalanceValues = this.getRebalanceValues();
215
+ if (!rebalanceValues) {
216
+ return false;
217
+ }
216
218
 
217
219
  const postRebalanceEmaUtilRateBps = getLiqUtilzationRateBps(
218
220
  this.realtimeUsdToEmaUsd(
219
- this.values.endResult.supplyUsd,
221
+ rebalanceValues.endResult.supplyUsd,
220
222
  this.client.pos.supplyMint
221
223
  ),
222
224
  this.realtimeUsdToEmaUsd(
223
- this.values.endResult.debtUsd,
225
+ rebalanceValues.endResult.debtUsd,
224
226
  this.client.pos.debtMint
225
227
  ),
226
228
  this.client.pos.state.liqThresholdBps
227
229
  );
228
230
  if (postRebalanceEmaUtilRateBps > this.client.pos.maxBoostToBps) {
229
231
  this.priceType = PriceType.Ema;
230
- this.values = this.getRebalanceValues();
232
+ rebalanceValues = this.getRebalanceValues();
233
+ if (!rebalanceValues) {
234
+ return false;
235
+ }
231
236
  }
232
237
 
238
+ this.values = rebalanceValues!;
233
239
  this.flRequirements = await this.flashLoanRequirements(attemptNum);
234
240
 
235
241
  if (this.flRequirements?.flFeeBps) {
236
- this.values = this.getRebalanceValues(this.flRequirements.flFeeBps);
242
+ this.values = this.getRebalanceValues(this.flRequirements.flFeeBps)!;
237
243
  }
238
244
 
239
245
  this.swapManager = new RebalanceSwapManager(
@@ -245,6 +251,7 @@ export class RebalanceTxBuilder {
245
251
  await this.swapManager.setSwapParams(attemptNum);
246
252
 
247
253
  this.setRebalanceType();
254
+ return true;
248
255
  }
249
256
 
250
257
  private async refreshBeforeRebalance() {
@@ -348,7 +355,11 @@ export class RebalanceTxBuilder {
348
355
  return undefined;
349
356
  }
350
357
 
351
- await this.setRebalanceDetails(attemptNum);
358
+ const proceed = await this.setRebalanceDetails(attemptNum);
359
+ if (!proceed) {
360
+ return undefined;
361
+ }
362
+
352
363
  return await this.assembleTransaction();
353
364
  }
354
365
  }
@@ -123,7 +123,7 @@ function getTargetLiqUtilizationRateBps(
123
123
  priceType: PriceType,
124
124
  targetLiqUtilizationRateBps: number | undefined,
125
125
  tokenBalanceChange: TokenBalanceChange | undefined
126
- ): number {
126
+ ): number | undefined {
127
127
  if (targetLiqUtilizationRateBps !== undefined) {
128
128
  return targetLiqUtilizationRateBps;
129
129
  }
@@ -144,7 +144,7 @@ function getTargetLiqUtilizationRateBps(
144
144
  // return currentRate;
145
145
  // }
146
146
 
147
- throw new InvalidRebalanceConditionError(createSolautoProgram());
147
+ return undefined;
148
148
  }
149
149
 
150
150
  function getAdjustedPositionValues(
@@ -198,7 +198,7 @@ export function getRebalanceValues(
198
198
  targetLiqUtilizationRateBps?: number,
199
199
  solautoFeeBps?: SolautoFeesBps,
200
200
  flFeeBps?: number
201
- ): RebalanceValues {
201
+ ): RebalanceValues | undefined {
202
202
  const tokenBalanceChange = getTokenBalanceChange();
203
203
 
204
204
  const targetRate = getTargetLiqUtilizationRateBps(
@@ -207,6 +207,9 @@ export function getRebalanceValues(
207
207
  targetLiqUtilizationRateBps,
208
208
  tokenBalanceChange
209
209
  );
210
+ if (targetRate === undefined) {
211
+ return undefined;
212
+ }
210
213
 
211
214
  const rebalanceDirection = getRebalanceDirection(solautoPosition, targetRate);
212
215
 
@@ -604,15 +604,6 @@ export function getErrorInfo(
604
604
  error: Error,
605
605
  simulationSuccessful?: boolean
606
606
  ) {
607
- if (error instanceof InvalidRebalanceConditionError) {
608
- return {
609
- canBeIgnored: true,
610
- errorName: InvalidRebalanceConditionError.name,
611
- errorInfo: new InvalidRebalanceConditionError(createSolautoProgram())
612
- .message,
613
- };
614
- }
615
-
616
607
  let canBeIgnored = false;
617
608
  let errorName: string | undefined = undefined;
618
609
  let errorInfo: string | undefined = undefined;
@@ -71,7 +71,7 @@ interface PositionExArgs {
71
71
  export abstract class SolautoPositionEx {
72
72
  public umi!: Umi;
73
73
  protected contextUpdates?: ContextUpdates;
74
-
74
+
75
75
  public publicKey!: PublicKey;
76
76
  public lendingPlatform!: LendingPlatform;
77
77
  protected _data!: SolautoPositionExData;
@@ -414,6 +414,10 @@ export abstract class SolautoPositionEx {
414
414
  targetLiqUtilizationRateBps,
415
415
  SolautoFeesBps.create(true, targetLiqUtilizationRateBps, this.netWorthUsd)
416
416
  );
417
+ if (!rebalance) {
418
+ return undefined;
419
+ }
420
+
417
421
  this.updateSupply(rebalance.endResult.supplyUsd, supplyPrice);
418
422
  this.updateDebt(rebalance.endResult.debtUsd, debtPrice);
419
423
  this.updateNetWorth(supplyPrice);