@haven-fi/solauto-sdk 1.0.526 → 1.0.528

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.
@@ -32,6 +32,8 @@ export declare abstract class SolautoClient extends ReferralStateManager {
32
32
  solautoFeesDebtTa: PublicKey;
33
33
  authorityLutAddress?: PublicKey;
34
34
  livePositionUpdates: LivePositionUpdates;
35
+ private signerSupplyBalance;
36
+ private signerDebtBalance;
35
37
  initialize(args: SolautoClientArgs): Promise<void>;
36
38
  referredBySupplyTa(): PublicKey | undefined;
37
39
  referredByDebtTa(): PublicKey | undefined;
@@ -45,6 +47,10 @@ export declare abstract class SolautoClient extends ReferralStateManager {
45
47
  new: boolean;
46
48
  accountsToAdd: PublicKey[];
47
49
  } | undefined>;
50
+ signerBalances(): Promise<{
51
+ supplyBalance: bigint;
52
+ debtBalance: bigint;
53
+ }>;
48
54
  solautoPositionSettings(): SolautoSettingsParameters | undefined;
49
55
  solautoPositionActiveDca(): DCASettings | undefined;
50
56
  maxLtvAndLiqThresholdBps(): Promise<[number, number] | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
@@ -161,6 +161,29 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
161
161
  accountsToAdd,
162
162
  };
163
163
  }
164
+ async signerBalances() {
165
+ if (this.signerSupplyBalance !== undefined &&
166
+ this.signerDebtBalance !== undefined) {
167
+ return {
168
+ supplyBalance: this.signerSupplyBalance,
169
+ debtBalance: this.signerDebtBalance,
170
+ };
171
+ }
172
+ [this.signerSupplyBalance, this.signerDebtBalance] = await Promise.all([
173
+ (async () => {
174
+ const data = await this.connection.getTokenAccountBalance((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.supplyMint), "confirmed");
175
+ return BigInt(parseInt(data?.value.amount ?? "0"));
176
+ })(),
177
+ (async () => {
178
+ const data = await this.connection.getTokenAccountBalance((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.debtMint), "confirmed");
179
+ return BigInt(parseInt(data?.value.amount ?? "0"));
180
+ })(),
181
+ ]);
182
+ return {
183
+ supplyBalance: this.signerSupplyBalance,
184
+ debtBalance: this.signerDebtBalance,
185
+ };
186
+ }
164
187
  solautoPositionSettings() {
165
188
  return (this.livePositionUpdates.settings ??
166
189
  this.solautoPositionData?.position.settingParams);
@@ -1,12 +1,11 @@
1
1
  import { TransactionBuilder, Umi } from "@metaplex-foundation/umi";
2
2
  import { PublicKey } from "@solana/web3.js";
3
3
  import { SolautoClient } from "../clients/solautoClient";
4
- import { RebalanceValues } from "../utils/solauto/rebalanceUtils";
5
4
  import { ReferralStateManager } from "../clients";
6
5
  import { TransactionItemInputs } from "../types";
7
6
  export declare function rebalanceChoresBefore(client: SolautoClient, tx: TransactionBuilder, accountsGettingCreated: string[]): Promise<TransactionBuilder>;
8
7
  export declare function getTransactionChores(client: SolautoClient, tx: TransactionBuilder): Promise<[TransactionBuilder, TransactionBuilder]>;
9
- export declare function requiresRefreshBeforeRebalance(client: SolautoClient, values: RebalanceValues): Promise<boolean>;
8
+ export declare function requiresRefreshBeforeRebalance(client: SolautoClient): Promise<boolean>;
10
9
  export declare function buildSolautoRebalanceTransaction(client: SolautoClient, targetLiqUtilizationRateBps?: number, attemptNum?: number): Promise<TransactionItemInputs | undefined>;
11
10
  export declare function convertReferralFeesToDestination(referralManager: ReferralStateManager, tokenAccount: PublicKey, destinationMint: PublicKey): Promise<TransactionItemInputs | undefined>;
12
11
  export declare function getErrorInfo(umi: Umi, txs: TransactionBuilder[], error: Error, simulationSuccessful?: boolean): {
@@ -1 +1 @@
1
- {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,OAAO,EAKL,eAAe,EAChB,MAAM,iCAAiC,CAAC;AA0BzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6LjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AA2LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,oBAsDxB;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA0I5C;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EA0G/B"}
1
+ {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6LjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AA2LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,aAAa,oBAsDtB;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAyI5C;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EA0G/B"}
@@ -329,7 +329,7 @@ async function getTransactionChores(client, tx) {
329
329
  choresAfter = choresAfter.add(transactionChoresAfter(client, solautoActions, client.livePositionUpdates.cancellingDca));
330
330
  return [choresBefore, choresAfter];
331
331
  }
332
- async function requiresRefreshBeforeRebalance(client, values) {
332
+ async function requiresRefreshBeforeRebalance(client) {
333
333
  const neverRefreshedBefore = client.solautoPositionData &&
334
334
  client.solautoPositionData.state.supply.amountCanBeUsed.baseUnit ===
335
335
  BigInt(0) &&
@@ -373,15 +373,14 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
373
373
  }
374
374
  const values = (0, rebalanceUtils_1.getRebalanceValues)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), (0, generalUtils_1.currentUnixSeconds)(), supplyPrice, debtPrice, targetLiqUtilizationRateBps);
375
375
  client.log("Rebalance values: ", values);
376
- const flRequirements = (0, rebalanceUtils_1.getFlashLoanRequirements)(client, values, attemptNum);
376
+ const flRequirements = await (0, rebalanceUtils_1.getFlashLoanRequirements)(client, values, attemptNum);
377
377
  const swapDetails = await (0, rebalanceUtils_1.getJupSwapRebalanceDetails)(client, values, flRequirements, targetLiqUtilizationRateBps, attemptNum);
378
378
  const { jupQuote, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
379
379
  const flashLoan = flRequirements
380
380
  ? (0, rebalanceUtils_1.getFlashLoanDetails)(client, flRequirements, values, jupQuote)
381
381
  : undefined;
382
382
  let tx = (0, umi_1.transactionBuilder)();
383
- // REVERT ME
384
- if (await requiresRefreshBeforeRebalance(client, values)) {
383
+ if (await requiresRefreshBeforeRebalance(client)) {
385
384
  tx = tx.add(client.refresh());
386
385
  }
387
386
  if (flashLoan) {
@@ -20,7 +20,7 @@ export interface FlashLoanRequirements {
20
20
  useDebtLiquidity: boolean;
21
21
  signerFlashLoan: boolean;
22
22
  }
23
- export declare function getFlashLoanRequirements(client: SolautoClient, values: RebalanceValues, attemptNum?: number): FlashLoanRequirements | undefined;
23
+ export declare function getFlashLoanRequirements(client: SolautoClient, values: RebalanceValues, attemptNum?: number): Promise<FlashLoanRequirements | undefined>;
24
24
  export interface FlashLoanDetails extends FlashLoanRequirements {
25
25
  baseUnitAmount: bigint;
26
26
  mint: PublicKey;
@@ -1 +1 @@
1
- {"version":3,"file":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EAEb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAe,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAc5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoI9C,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,GACnC,eAAe,CA4EjB;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,qBAAqB,GAAG,SAAS,CA4EnC;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,qBAAqB,EACrC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CA2B9B;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,qBAAqB,EACtC,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAqEzB"}
1
+ {"version":3,"file":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EAEb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAe,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAc5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqI9C,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,GACnC,eAAe,CA4EjB;AAWD,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAoG5C;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,qBAAqB,EACrC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CA2B9B;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,qBAAqB,EACtC,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAqEzB"}
@@ -86,7 +86,7 @@ function getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, target
86
86
  }
87
87
  function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
88
88
  let { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, targetLiqUtilizationRateBps);
89
- // REVERT ME AND GET TO THE ROOT OF THIS ISSUE
89
+ // TODO: REVERT ME AND GET TO THE ROOT OF THIS ISSUE
90
90
  const supplyMint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.supply.mint);
91
91
  if (constants_1.BROKEN_TOKENS.includes(supplyMint.toString()) &&
92
92
  ((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint).equals(new web3_js_1.PublicKey(constants_1.USDC)) ||
@@ -125,7 +125,10 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
125
125
  targetRateBps,
126
126
  };
127
127
  }
128
- function getFlashLoanRequirements(client, values, attemptNum) {
128
+ function insufficientLiquidity(amountNeeded, liquidity, tokenDecimals, tokenPrice) {
129
+ return amountNeeded > (0, numberUtils_1.fromBaseUnit)(liquidity, tokenDecimals) * tokenPrice;
130
+ }
131
+ async function getFlashLoanRequirements(client, values, attemptNum) {
129
132
  let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
130
133
  (values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
131
134
  let debtUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
@@ -141,23 +144,27 @@ function getFlashLoanRequirements(client, values, attemptNum) {
141
144
  const tempLiqUtilizationRateBps = (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, client.solautoPositionState.liqThresholdBps);
142
145
  const maxLiqUtilizationRateBps = (0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.02);
143
146
  const requiresFlashLoan = supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
144
- const insufficientSupplyLiquidity = Math.abs(values.debtAdjustmentUsd) * 0.9 >
145
- (0, numberUtils_1.fromBaseUnit)(client.supplyLiquidityAvailable(), generalAccounts_1.USD_DECIMALS) *
146
- ((0, priceUtils_1.safeGetPrice)(client.supplyMint) ?? 0);
147
- const insufficientDebtLiquidity = Math.abs(values.debtAdjustmentUsd) * 0.9 >
148
- (0, numberUtils_1.fromBaseUnit)(client.debtLiquidityAvailable(), generalAccounts_1.USD_DECIMALS) *
149
- ((0, priceUtils_1.safeGetPrice)(client.debtMint) ?? 0);
147
+ const supplyPrice = (0, priceUtils_1.safeGetPrice)(client.supplyMint) ?? 0;
148
+ const debtPrice = (0, priceUtils_1.safeGetPrice)(client.debtMint) ?? 0;
149
+ const debtAdjustmentUsd = Math.abs(values.debtAdjustmentUsd);
150
+ const insufficientSupplyLiquidity = insufficientLiquidity(debtAdjustmentUsd, client.supplyLiquidityAvailable(), (0, generalUtils_2.tokenInfo)(client.supplyMint).decimals, supplyPrice);
151
+ const insufficientDebtLiquidity = insufficientLiquidity(debtAdjustmentUsd, client.debtLiquidityAvailable(), (0, generalUtils_2.tokenInfo)(client.debtMint).decimals, debtPrice);
150
152
  let useDebtLiquidity = values.rebalanceDirection === generated_1.RebalanceDirection.Boost ||
151
153
  insufficientSupplyLiquidity;
152
- const isJupLong = client.supplyMint.equals(new web3_js_1.PublicKey(constants_1.JUP)) &&
153
- (0, generalUtils_2.tokenInfo)(client.debtMint).isStableCoin;
154
- const sufficientSignerSupplyLiquidity = false; // TODO
155
- const sufficientSignerDebtLiquidity = isJupLong; // TODO
156
- const signerFlashLoan = Boolean(((attemptNum ?? 0) > 3 ||
157
- (insufficientSupplyLiquidity && insufficientDebtLiquidity)) &&
158
- (sufficientSignerSupplyLiquidity || sufficientSignerDebtLiquidity));
159
- if (signerFlashLoan) {
160
- useDebtLiquidity = !sufficientSignerSupplyLiquidity;
154
+ let signerFlashLoan = false;
155
+ if ((attemptNum ?? 0) > 3 ||
156
+ (insufficientSupplyLiquidity && insufficientDebtLiquidity)) {
157
+ const { supplyBalance, debtBalance } = await client.signerBalances();
158
+ const sufficientSignerSupplyLiquidity = !insufficientLiquidity(debtAdjustmentUsd, supplyBalance, (0, generalUtils_2.tokenInfo)(client.supplyMint).decimals, supplyPrice);
159
+ const sufficientSignerDebtLiquidity = !insufficientLiquidity(debtAdjustmentUsd, debtBalance, (0, generalUtils_2.tokenInfo)(client.debtMint).decimals, debtPrice);
160
+ signerFlashLoan =
161
+ sufficientSignerSupplyLiquidity || sufficientSignerDebtLiquidity;
162
+ if (signerFlashLoan) {
163
+ useDebtLiquidity = !sufficientSignerSupplyLiquidity;
164
+ }
165
+ else {
166
+ throw new Error(`Need at least ${values.debtAdjustmentUsd / debtPrice} ${(0, generalUtils_2.tokenInfo)(client.debtMint).ticker} or ${values.debtAdjustmentUsd / supplyPrice} ${(0, generalUtils_2.tokenInfo)(client.supplyMint).ticker} to perform the transaction`);
167
+ }
161
168
  }
162
169
  // TODO: if not sufficient signer liquidity, throw error with details on how much liquidity is needed and of what token
163
170
  (0, generalUtils_2.consoleLog)("Requires flash loan:", requiresFlashLoan);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.526",
3
+ "version": "1.0.528",
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",
@@ -89,6 +89,9 @@ export abstract class SolautoClient extends ReferralStateManager {
89
89
 
90
90
  public livePositionUpdates: LivePositionUpdates = new LivePositionUpdates();
91
91
 
92
+ private signerSupplyBalance: bigint | undefined;
93
+ private signerDebtBalance: bigint | undefined;
94
+
92
95
  async initialize(args: SolautoClientArgs) {
93
96
  await super.initialize(args);
94
97
 
@@ -309,6 +312,49 @@ export abstract class SolautoClient extends ReferralStateManager {
309
312
  };
310
313
  }
311
314
 
315
+ async signerBalances(): Promise<{
316
+ supplyBalance: bigint;
317
+ debtBalance: bigint;
318
+ }> {
319
+ if (
320
+ this.signerSupplyBalance !== undefined &&
321
+ this.signerDebtBalance !== undefined
322
+ ) {
323
+ return {
324
+ supplyBalance: this.signerSupplyBalance,
325
+ debtBalance: this.signerDebtBalance,
326
+ };
327
+ }
328
+
329
+ [this.signerSupplyBalance, this.signerDebtBalance] = await Promise.all([
330
+ (async () => {
331
+ const data = await this.connection.getTokenAccountBalance(
332
+ getTokenAccount(
333
+ toWeb3JsPublicKey(this.signer.publicKey),
334
+ this.supplyMint
335
+ ),
336
+ "confirmed"
337
+ );
338
+ return BigInt(parseInt(data?.value.amount ?? "0"));
339
+ })(),
340
+ (async () => {
341
+ const data = await this.connection.getTokenAccountBalance(
342
+ getTokenAccount(
343
+ toWeb3JsPublicKey(this.signer.publicKey),
344
+ this.debtMint
345
+ ),
346
+ "confirmed"
347
+ );
348
+ return BigInt(parseInt(data?.value.amount ?? "0"));
349
+ })(),
350
+ ]);
351
+
352
+ return {
353
+ supplyBalance: this.signerSupplyBalance,
354
+ debtBalance: this.signerDebtBalance,
355
+ };
356
+ }
357
+
312
358
  solautoPositionSettings(): SolautoSettingsParameters | undefined {
313
359
  return (
314
360
  this.livePositionUpdates.settings ??
@@ -603,7 +603,6 @@ export async function getTransactionChores(
603
603
 
604
604
  export async function requiresRefreshBeforeRebalance(
605
605
  client: SolautoClient,
606
- values: RebalanceValues
607
606
  ) {
608
607
  const neverRefreshedBefore =
609
608
  client.solautoPositionData &&
@@ -696,7 +695,7 @@ export async function buildSolautoRebalanceTransaction(
696
695
  );
697
696
  client.log("Rebalance values: ", values);
698
697
 
699
- const flRequirements = getFlashLoanRequirements(client, values, attemptNum);
698
+ const flRequirements = await getFlashLoanRequirements(client, values, attemptNum);
700
699
  const swapDetails = await getJupSwapRebalanceDetails(
701
700
  client,
702
701
  values,
@@ -718,8 +717,7 @@ export async function buildSolautoRebalanceTransaction(
718
717
 
719
718
  let tx = transactionBuilder();
720
719
 
721
- // REVERT ME
722
- if (await requiresRefreshBeforeRebalance(client, values)) {
720
+ if (await requiresRefreshBeforeRebalance(client)) {
723
721
  tx = tx.add(client.refresh());
724
722
  }
725
723
 
@@ -30,8 +30,9 @@ import {
30
30
  } from "../numberUtils";
31
31
  import { USD_DECIMALS } from "../../constants/generalAccounts";
32
32
  import { RebalanceAction } from "../../types";
33
- import { getPriceImpact, safeGetPrice } from "../priceUtils";
33
+ import { safeGetPrice } from "../priceUtils";
34
34
  import { BROKEN_TOKENS, JUP, USDC, USDT } from "../../constants";
35
+ import { Umi } from "@metaplex-foundation/umi";
35
36
 
36
37
  function getAdditionalAmountToDcaIn(dca: DCASettings): number {
37
38
  if (dca.dcaInBaseUnit === BigInt(0)) {
@@ -190,7 +191,7 @@ export function getRebalanceValues(
190
191
  targetLiqUtilizationRateBps
191
192
  );
192
193
 
193
- // REVERT ME AND GET TO THE ROOT OF THIS ISSUE
194
+ // TODO: REVERT ME AND GET TO THE ROOT OF THIS ISSUE
194
195
  const supplyMint = toWeb3JsPublicKey(state.supply.mint);
195
196
  if (
196
197
  BROKEN_TOKENS.includes(supplyMint.toString()) &&
@@ -259,16 +260,25 @@ export function getRebalanceValues(
259
260
  };
260
261
  }
261
262
 
263
+ function insufficientLiquidity(
264
+ amountNeeded: number,
265
+ liquidity: bigint,
266
+ tokenDecimals: number,
267
+ tokenPrice: number
268
+ ) {
269
+ return amountNeeded > fromBaseUnit(liquidity, tokenDecimals) * tokenPrice;
270
+ }
271
+
262
272
  export interface FlashLoanRequirements {
263
273
  useDebtLiquidity: boolean;
264
274
  signerFlashLoan: boolean;
265
275
  }
266
276
 
267
- export function getFlashLoanRequirements(
277
+ export async function getFlashLoanRequirements(
268
278
  client: SolautoClient,
269
279
  values: RebalanceValues,
270
280
  attemptNum?: number
271
- ): FlashLoanRequirements | undefined {
281
+ ): Promise<FlashLoanRequirements | undefined> {
272
282
  let supplyUsd =
273
283
  fromBaseUnit(
274
284
  client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
@@ -303,31 +313,55 @@ export function getFlashLoanRequirements(
303
313
  const requiresFlashLoan =
304
314
  supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
305
315
 
306
- const insufficientSupplyLiquidity =
307
- Math.abs(values.debtAdjustmentUsd) * 0.9 >
308
- fromBaseUnit(client.supplyLiquidityAvailable(), USD_DECIMALS) *
309
- (safeGetPrice(client.supplyMint) ?? 0);
310
- const insufficientDebtLiquidity =
311
- Math.abs(values.debtAdjustmentUsd) * 0.9 >
312
- fromBaseUnit(client.debtLiquidityAvailable(), USD_DECIMALS) *
313
- (safeGetPrice(client.debtMint) ?? 0);
316
+ const supplyPrice = safeGetPrice(client.supplyMint) ?? 0;
317
+ const debtPrice = safeGetPrice(client.debtMint) ?? 0;
318
+ const debtAdjustmentUsd = Math.abs(values.debtAdjustmentUsd);
319
+
320
+ const insufficientSupplyLiquidity = insufficientLiquidity(
321
+ debtAdjustmentUsd,
322
+ client.supplyLiquidityAvailable(),
323
+ tokenInfo(client.supplyMint).decimals,
324
+ supplyPrice
325
+ );
326
+ const insufficientDebtLiquidity = insufficientLiquidity(
327
+ debtAdjustmentUsd,
328
+ client.debtLiquidityAvailable(),
329
+ tokenInfo(client.debtMint).decimals,
330
+ debtPrice
331
+ );
314
332
 
315
333
  let useDebtLiquidity =
316
334
  values.rebalanceDirection === RebalanceDirection.Boost ||
317
335
  insufficientSupplyLiquidity;
318
336
 
319
- const isJupLong =
320
- client.supplyMint.equals(new PublicKey(JUP)) &&
321
- tokenInfo(client.debtMint).isStableCoin;
322
- const sufficientSignerSupplyLiquidity = false; // TODO
323
- const sufficientSignerDebtLiquidity = isJupLong; // TODO
324
- const signerFlashLoan = Boolean(
325
- ((attemptNum ?? 0) > 3 ||
326
- (insufficientSupplyLiquidity && insufficientDebtLiquidity)) &&
327
- (sufficientSignerSupplyLiquidity || sufficientSignerDebtLiquidity)
328
- );
329
- if (signerFlashLoan) {
330
- useDebtLiquidity = !sufficientSignerSupplyLiquidity;
337
+ let signerFlashLoan = false;
338
+ if (
339
+ (attemptNum ?? 0) > 3 ||
340
+ (insufficientSupplyLiquidity && insufficientDebtLiquidity)
341
+ ) {
342
+ const { supplyBalance, debtBalance } = await client.signerBalances();
343
+ const sufficientSignerSupplyLiquidity = !insufficientLiquidity(
344
+ debtAdjustmentUsd,
345
+ supplyBalance,
346
+ tokenInfo(client.supplyMint).decimals,
347
+ supplyPrice
348
+ );
349
+ const sufficientSignerDebtLiquidity = !insufficientLiquidity(
350
+ debtAdjustmentUsd,
351
+ debtBalance,
352
+ tokenInfo(client.debtMint).decimals,
353
+ debtPrice
354
+ );
355
+
356
+ signerFlashLoan =
357
+ sufficientSignerSupplyLiquidity || sufficientSignerDebtLiquidity;
358
+ if (signerFlashLoan) {
359
+ useDebtLiquidity = !sufficientSignerSupplyLiquidity;
360
+ } else {
361
+ throw new Error(
362
+ `Need at least ${values.debtAdjustmentUsd / debtPrice} ${tokenInfo(client.debtMint).ticker} or ${values.debtAdjustmentUsd / supplyPrice} ${tokenInfo(client.supplyMint).ticker} to perform the transaction`
363
+ );
364
+ }
331
365
  }
332
366
 
333
367
  // TODO: if not sufficient signer liquidity, throw error with details on how much liquidity is needed and of what token
@@ -41,7 +41,7 @@ import {
41
41
  retryWithExponentialBackoff,
42
42
  } from "../../src/utils";
43
43
  import { PriorityFeeSetting } from "../../src/types";
44
- import { buildIronforgeApiUrl } from "../../dist";
44
+ import { buildIronforgeApiUrl, fromBaseUnit, tokenInfo, USD_DECIMALS } from "../../dist";
45
45
  import { JUPITER_PROGRAM_ID } from "../../src/jupiter-sdk";
46
46
 
47
47
  describe("Solauto Marginfi tests", async () => {
@@ -76,17 +76,9 @@ describe("Solauto Marginfi tests", async () => {
76
76
  // debtMint: new PublicKey(USDC),
77
77
  });
78
78
 
79
- // console.log(
80
- // JSON.stringify(
81
- // await getQnComputeUnitPriceEstimate(
82
- // client.umi,
83
- // new PublicKey(JUPITER_PROGRAM_ID)
84
- // ),
85
- // null,
86
- // 2
87
- // )
88
- // );
89
- // return;
79
+ await client.getFreshPositionState();
80
+ console.log(fromBaseUnit(client.supplyLiquidityAvailable(), tokenInfo(client.supplyMint).decimals));
81
+ console.log(fromBaseUnit(client.debtLiquidityAvailable(), tokenInfo(client.debtMint).decimals));
90
82
 
91
83
  const transactionItems: TransactionItem[] = [];
92
84
  // const settingParams: SolautoSettingsParametersInpArgs = {