@haven-fi/solauto-sdk 1.0.688 → 1.0.690

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.
@@ -3,16 +3,18 @@ import { FlashLoanRequirements } from "../../types";
3
3
  import { SolautoClient } from "../solauto";
4
4
  import { SwapParams } from "../swap";
5
5
  import { RebalanceValues } from "./rebalanceValues";
6
+ import { PriceType } from "../../generated";
6
7
  export declare class RebalanceSwapManager {
7
8
  private client;
8
9
  private values;
9
10
  private flRequirements?;
10
11
  private targetLiqUtilizationRateBps?;
12
+ private priceType?;
11
13
  swapParams: SwapParams;
12
14
  swapQuote?: QuoteResponse;
13
15
  flBorrowAmount?: bigint;
14
16
  private jupSwapManager;
15
- constructor(client: SolautoClient, values: RebalanceValues, flRequirements?: FlashLoanRequirements | undefined, targetLiqUtilizationRateBps?: number | undefined);
17
+ constructor(client: SolautoClient, values: RebalanceValues, flRequirements?: FlashLoanRequirements | undefined, targetLiqUtilizationRateBps?: number | undefined, priceType?: PriceType | undefined);
16
18
  private isBoost;
17
19
  private usdToSwap;
18
20
  private postRebalanceLiqUtilizationRateBps;
@@ -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;AAWpD,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,2BAA2B,CAAC;IAV/B,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;IAK9C,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kCAAkC;YA2B5B,mBAAmB;IAoCjC,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,mBAAmB;IAIrB,aAAa,CAAC,UAAU,EAAE,MAAM;IA4EhC,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;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,kCAAkC;YA2B5B,mBAAmB;IAoCjC,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,mBAAmB;IAIrB,aAAa,CAAC,UAAU,EAAE,MAAM;IA4EhC,aAAa;;;;;;CAWpB"}
@@ -6,11 +6,12 @@ const swap_1 = require("../swap");
6
6
  const generated_1 = require("../../generated");
7
7
  const utils_1 = require("../../utils");
8
8
  class RebalanceSwapManager {
9
- constructor(client, values, flRequirements, targetLiqUtilizationRateBps) {
9
+ constructor(client, values, flRequirements, targetLiqUtilizationRateBps, priceType) {
10
10
  this.client = client;
11
11
  this.values = values;
12
12
  this.flRequirements = flRequirements;
13
13
  this.targetLiqUtilizationRateBps = targetLiqUtilizationRateBps;
14
+ this.priceType = priceType;
14
15
  this.jupSwapManager = new swap_1.JupSwapManager(client.signer);
15
16
  }
16
17
  isBoost() {
@@ -20,15 +21,15 @@ class RebalanceSwapManager {
20
21
  return Math.abs(this.values.debtAdjustmentUsd);
21
22
  }
22
23
  postRebalanceLiqUtilizationRateBps(swapOutputAmount) {
23
- let supplyUsd = this.client.pos.supplyUsd();
24
+ let supplyUsd = this.client.pos.supplyUsd(this.priceType);
24
25
  // TODO: add token balance change
25
- let debtUsd = this.client.pos.debtUsd();
26
+ let debtUsd = this.client.pos.debtUsd(this.priceType);
26
27
  const outputToken = this.isBoost()
27
28
  ? this.client.pos.supplyMint
28
29
  : this.client.pos.debtMint;
29
30
  const swapOutputUsd = swapOutputAmount
30
31
  ? (0, utils_1.fromBaseUnit)(swapOutputAmount, (0, utils_1.tokenInfo)(outputToken).decimals) *
31
- ((0, utils_1.safeGetPrice)(outputToken) ?? 0)
32
+ ((0, utils_1.safeGetPrice)(outputToken, this.priceType) ?? 0)
32
33
  : this.usdToSwap();
33
34
  supplyUsd = this.isBoost()
34
35
  ? supplyUsd + swapOutputUsd
@@ -68,7 +69,7 @@ class RebalanceSwapManager {
68
69
  const output = this.isBoost()
69
70
  ? this.client.pos.state.supply
70
71
  : this.client.pos.state.debt;
71
- let inputAmount = (0, utils_1.toBaseUnit)(this.usdToSwap() / (0, utils_1.safeGetPrice)(input.mint), input.decimals);
72
+ let inputAmount = (0, utils_1.toBaseUnit)(this.usdToSwap() / (0, utils_1.safeGetPrice)(input.mint, this.priceType), input.decimals);
72
73
  return {
73
74
  input,
74
75
  output,
@@ -86,7 +87,7 @@ class RebalanceSwapManager {
86
87
  BigInt(Math.round(Number(output.amountUsed.baseUnit) *
87
88
  // Add this small percentage to account for the APR on the debt between now and the transaction
88
89
  0.0001))
89
- : (0, utils_1.toBaseUnit)(this.usdToSwap() / (0, utils_1.safeGetPrice)(output.mint), output.decimals);
90
+ : (0, utils_1.toBaseUnit)(this.usdToSwap() / (0, utils_1.safeGetPrice)(output.mint, this.priceType), output.decimals);
90
91
  const flashLoanRepayFromDebt = !this.isBoost() &&
91
92
  this.flRequirements &&
92
93
  this.flRequirements.liquiditySource === generated_1.TokenType.Debt;
@@ -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;AA8BrB,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;IA2C5B,OAAO,CAAC,iCAAiC;YAgC3B,qBAAqB;IA2CnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,yBAAyB;YAqBnB,mBAAmB;YAwBnB,sBAAsB;YAyBtB,mBAAmB;IAmEpB,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;AA8BrB,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;IAwEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
@@ -32,12 +32,9 @@ class RebalanceTxBuilder {
32
32
  const insufficientLiquidity = (amountNeededUsd, liquidityAvailable, tokenMint) => {
33
33
  const liquidityUsd = (0, utils_1.fromBaseUnit)(liquidityAvailable, (0, utils_1.tokenInfo)(tokenMint).decimals) *
34
34
  ((0, utils_1.safeGetPrice)(tokenMint) ?? 0);
35
- (0, utils_1.consoleLog)(liquidityUsd);
36
35
  return amountNeededUsd > liquidityUsd * 0.95;
37
36
  };
38
- (0, utils_1.consoleLog)("Supply liquidity available:", supplyLiquidityAvailable);
39
37
  const insufficientSupplyLiquidity = insufficientLiquidity(debtAdjustmentUsd, supplyLiquidityAvailable, this.client.pos.supplyMint);
40
- (0, utils_1.consoleLog)("Debt liquidity available:", debtLiquidityAvailable);
41
38
  const insufficientDebtLiquidity = insufficientLiquidity(debtAdjustmentUsd, debtLiquidityAvailable, this.client.pos.debtMint);
42
39
  let useDebtLiquidity = this.values.rebalanceDirection === generated_1.RebalanceDirection.Boost ||
43
40
  insufficientSupplyLiquidity;
@@ -73,7 +70,6 @@ class RebalanceTxBuilder {
73
70
  }
74
71
  const stdFlLiquiditySource = this.getFlLiquiditySource(this.client.flProvider.liquidityAvailable(generated_1.TokenType.Supply), this.client.flProvider.liquidityAvailable(generated_1.TokenType.Debt));
75
72
  if (stdFlLiquiditySource === undefined || this.optimizeSize) {
76
- (0, utils_1.consoleLog)("Checking signer liquidity");
77
73
  const { supplyBalance, debtBalance } = await this.client.signerBalances();
78
74
  const signerFlLiquiditySource = this.getFlLiquiditySource(supplyBalance, debtBalance);
79
75
  if (signerFlLiquiditySource) {
@@ -163,7 +159,7 @@ class RebalanceTxBuilder {
163
159
  if (this.flRequirements?.flFeeBps) {
164
160
  this.values = this.getRebalanceValues();
165
161
  }
166
- this.swapManager = new rebalanceSwapManager_1.RebalanceSwapManager(this.client, this.values, this.flRequirements, this.targetLiqUtilizationRateBps);
162
+ this.swapManager = new rebalanceSwapManager_1.RebalanceSwapManager(this.client, this.values, this.flRequirements, this.targetLiqUtilizationRateBps, this.priceType);
167
163
  await this.swapManager.setSwapParams(attemptNum);
168
164
  this.setRebalanceType();
169
165
  return true;
@@ -203,6 +199,7 @@ class RebalanceTxBuilder {
203
199
  priceType: this.priceType,
204
200
  };
205
201
  (0, utils_1.consoleLog)("Rebalance details:", rebalanceDetails);
202
+ (0, utils_1.consoleLog)("Prices:", (0, utils_1.safeGetPrice)(this.client.pos.supplyMint, this.priceType), (0, utils_1.safeGetPrice)(this.client.pos.debtMint, this.priceType));
206
203
  const firstRebalance = this.client.rebalanceIx(generated_1.RebalanceStep.PreSwap, rebalanceDetails);
207
204
  const lastRebalance = this.client.rebalanceIx(generated_1.RebalanceStep.PostSwap, rebalanceDetails);
208
205
  if (!flashLoanDetails) {
@@ -1 +1 @@
1
- {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
55
55
  this.otherSigners.push(...this.flProvider.otherSigners());
56
56
  this.log("Position state: ", this.pos.state);
57
57
  this.log("Position settings: ", this.pos.settings);
58
+ this.log("Public key:", this.pos.publicKey.toString());
58
59
  this.log("Supply mint:", this.pos.supplyMint.toString());
59
60
  this.log("Debt mint:", this.pos.debtMint.toString());
60
61
  this.log("LP pool:", this.pos.lpPoolAccount.toString());
@@ -26,7 +26,7 @@ interface RetryConfig {
26
26
  totalRetries?: number;
27
27
  retryDelay?: number;
28
28
  }
29
- export interface TransactionManagerArgs<T extends TxHandler> {
29
+ export interface TransactionsManagerArgs<T extends TxHandler> {
30
30
  txHandler: T;
31
31
  statusCallback?: (statuses: TransactionManagerStatuses) => void;
32
32
  txRunType?: TransactionRunType;
@@ -48,7 +48,7 @@ export declare class TransactionsManager<T extends TxHandler> {
48
48
  protected totalRetries: number;
49
49
  protected retryDelay: number;
50
50
  updateOracleTxName: string;
51
- constructor(args: TransactionManagerArgs<T>);
51
+ constructor(args: TransactionsManagerArgs<T>);
52
52
  private assembleTransactionSets;
53
53
  private updateStatus;
54
54
  private debugAccounts;
@@ -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,sBAAsB,CAAC,CAAC,SAAS,SAAS;IACzD,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,sBAAsB,CAAC,CAAC,CAAC;YAmB7B,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;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 +1 @@
1
- {"version":3,"file":"switchboardUtils.d.ts","sourceRoot":"","sources":["../../src/utils/switchboardUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAsB,MAAM,0BAA0B,CAAC;AAGtE,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAIvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAOjD,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,SAAS,qBAuBnB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA6B5C;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAuB/D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,WAEzD"}
1
+ {"version":3,"file":"switchboardUtils.d.ts","sourceRoot":"","sources":["../../src/utils/switchboardUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAsB,MAAM,0BAA0B,CAAC;AAGtE,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAIvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAOjD,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,SAAS,qBAuBnB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAkC5C;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAuB/D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,WAEzD"}
@@ -52,10 +52,16 @@ function getPullFeed(conn, mint, wallet) {
52
52
  }
53
53
  async function buildSwbSubmitResponseTx(conn, signer, mint) {
54
54
  const feed = getPullFeed(conn, mint, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(signer.publicKey));
55
- const [pullIx, responses] = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await feed.fetchUpdateIx({
56
- chain: "solana",
57
- network: "mainnet-beta",
58
- }), 2, 200);
55
+ const [pullIx, responses] = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
56
+ const res = await feed.fetchUpdateIx({
57
+ chain: "solana",
58
+ network: "mainnet-beta",
59
+ });
60
+ if (!res[1] || !res[1][0].value) {
61
+ throw new Error("Unable to fetch Switchboard pull IX");
62
+ }
63
+ return res;
64
+ }, 3, 200);
59
65
  if (!pullIx) {
60
66
  throw new Error("Unable to fetch SWB crank IX");
61
67
  }
@@ -1,16 +1,21 @@
1
1
  import { Keypair, PublicKey } from "@solana/web3.js";
2
- import { createSignerFromKeypair } from "@metaplex-foundation/umi";
2
+ import { createSignerFromKeypair, publicKey } from "@metaplex-foundation/umi";
3
3
  import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
4
4
  import {
5
+ bytesToI80F48,
5
6
  ClientTransactionsManager,
6
7
  consoleLog,
8
+ fetchBank,
9
+ fetchMarginfiAccount,
7
10
  getBatches,
8
11
  getClient,
12
+ getLiqUtilzationRateBps,
9
13
  getPositionExBulk,
10
14
  getSolanaRpcConnection,
11
15
  getSolautoManagedPositions,
12
16
  LendingPlatform,
13
17
  LOCAL_IRONFORGE_API_URL,
18
+ marginfiAccountEmpty,
14
19
  PriceType,
15
20
  PriorityFeeSetting,
16
21
  ProgramEnv,
@@ -23,7 +28,7 @@ import {
23
28
  import { getSecretKey } from "./shared";
24
29
 
25
30
  const payForTransaction = false;
26
- const testProgram = false;
31
+ const testProgram = true;
27
32
  const lpEnv: ProgramEnv = "Prod";
28
33
 
29
34
  let [, umi] = getSolanaRpcConnection(
@@ -47,23 +52,81 @@ export async function main() {
47
52
  });
48
53
 
49
54
  await client.initializeExistingSolautoPosition({
50
- positionId: 1,
51
- authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
55
+ positionId: 2,
56
+ authority: new PublicKey("rC5dMP5dmSsfQ66rynzfFzuc122Eex9h1RJHVDkeH6D"),
52
57
  // lpUserAccount: new PublicKey(
53
58
  // "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
54
59
  // ),
55
60
  });
56
61
 
57
- const transactionItems = [rebalance(client)];
62
+ const supplyBank = await fetchBank(
63
+ umi,
64
+ publicKey("6cgYhBFWCc5sNHxkvSRhd5H9AdAHR41zKwuF37HmLry5")
65
+ );
66
+ const debtBank = await fetchBank(
67
+ umi,
68
+ publicKey("3J5rKmCi7JXG6qmiobFJyAidVTnnNAMGj4jomfBxKGRM")
69
+ );
70
+ const supplyWeight = bytesToI80F48(supplyBank.config.assetWeightInit.value);
71
+ const debtWeight = bytesToI80F48(debtBank.config.liabilityWeightInit.value);
58
72
 
59
- const txManager = new ClientTransactionsManager({
60
- txHandler: client,
61
- txRunType: payForTransaction ? "normal" : "only-simulate",
62
- priorityFeeSetting: PriorityFeeSetting.Default,
63
- retryConfig: { totalRetries: 5 },
64
- });
65
- const statuses = await txManager.send(transactionItems);
66
- consoleLog(statuses);
73
+ console.log(
74
+ getLiqUtilzationRateBps(
75
+ 34.36833665228071,
76
+ 23.61750715267401,
77
+ client.pos.state.liqThresholdBps
78
+ ),
79
+ 34.36833665228071 * supplyWeight,
80
+ 23.61750715267401 * debtWeight
81
+ );
82
+ console.log(
83
+ getLiqUtilzationRateBps(
84
+ 34.328721976,
85
+ 23.575158311,
86
+ client.pos.state.liqThresholdBps
87
+ ),
88
+ 34.328721976 * supplyWeight,
89
+ 23.575158311 * debtWeight
90
+ );
91
+ console.log(
92
+ getLiqUtilzationRateBps(
93
+ 34.265152701,
94
+ 23.530695876,
95
+ client.pos.state.liqThresholdBps
96
+ ),
97
+ 34.265152701 * supplyWeight,
98
+ 23.530695876 * debtWeight
99
+ );
100
+ console.log(client.pos.maxBoostToBps);
101
+
102
+ // const debtBank = await fetchBank(
103
+ // umi,
104
+ // publicKey("3J5rKmCi7JXG6qmiobFJyAidVTnnNAMGj4jomfBxKGRM")
105
+ // );
106
+ // const supplyBank = await fetchBank(
107
+ // umi,
108
+ // publicKey("6cgYhBFWCc5sNHxkvSRhd5H9AdAHR41zKwuF37HmLry5")
109
+ // );
110
+
111
+ // console.log(
112
+ // bytesToI80F48(supplyBank.config.assetWeightInit.value),
113
+ // bytesToI80F48(debtBank.config.liabilityWeightInit.value)
114
+ // );
115
+
116
+ // await client.pos.refreshPositionState();
117
+
118
+ // console.log(await client.pos.utilizationRateBpsDrift());
119
+
120
+ // const transactionItems = [rebalance(client)];
121
+
122
+ // const txManager = new ClientTransactionsManager({
123
+ // txHandler: client,
124
+ // txRunType: payForTransaction ? "normal" : "only-simulate",
125
+ // priorityFeeSetting: PriorityFeeSetting.Default,
126
+ // retryConfig: { totalRetries: 5 },
127
+ // });
128
+ // const statuses = await txManager.send(transactionItems);
129
+ // consoleLog(statuses);
67
130
  }
68
131
 
69
132
  async function refreshAll() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.688",
3
+ "version": "1.0.690",
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",
@@ -4,7 +4,7 @@ import { FlashLoanRequirements } from "../../types";
4
4
  import { SolautoClient } from "../solauto";
5
5
  import { JupSwapManager, SwapParams, SwapInput } from "../swap";
6
6
  import { RebalanceValues } from "./rebalanceValues";
7
- import { RebalanceDirection, TokenType } from "../../generated";
7
+ import { PriceType, RebalanceDirection, TokenType } from "../../generated";
8
8
  import {
9
9
  consoleLog,
10
10
  fromBaseUnit,
@@ -25,7 +25,8 @@ export class RebalanceSwapManager {
25
25
  private client: SolautoClient,
26
26
  private values: RebalanceValues,
27
27
  private flRequirements?: FlashLoanRequirements,
28
- private targetLiqUtilizationRateBps?: number
28
+ private targetLiqUtilizationRateBps?: number,
29
+ private priceType?: PriceType
29
30
  ) {
30
31
  this.jupSwapManager = new JupSwapManager(client.signer);
31
32
  }
@@ -39,16 +40,16 @@ export class RebalanceSwapManager {
39
40
  }
40
41
 
41
42
  private postRebalanceLiqUtilizationRateBps(swapOutputAmount?: bigint) {
42
- let supplyUsd = this.client.pos.supplyUsd();
43
+ let supplyUsd = this.client.pos.supplyUsd(this.priceType);
43
44
  // TODO: add token balance change
44
- let debtUsd = this.client.pos.debtUsd();
45
+ let debtUsd = this.client.pos.debtUsd(this.priceType);
45
46
 
46
47
  const outputToken = this.isBoost()
47
48
  ? this.client.pos.supplyMint
48
49
  : this.client.pos.debtMint;
49
50
  const swapOutputUsd = swapOutputAmount
50
51
  ? fromBaseUnit(swapOutputAmount, tokenInfo(outputToken).decimals) *
51
- (safeGetPrice(outputToken) ?? 0)
52
+ (safeGetPrice(outputToken, this.priceType) ?? 0)
52
53
  : this.usdToSwap();
53
54
 
54
55
  supplyUsd = this.isBoost()
@@ -110,7 +111,7 @@ export class RebalanceSwapManager {
110
111
  : this.client.pos.state.debt;
111
112
 
112
113
  let inputAmount = toBaseUnit(
113
- this.usdToSwap() / safeGetPrice(input.mint)!,
114
+ this.usdToSwap() / safeGetPrice(input.mint, this.priceType)!,
114
115
  input.decimals
115
116
  );
116
117
 
@@ -139,7 +140,7 @@ export class RebalanceSwapManager {
139
140
  )
140
141
  )
141
142
  : toBaseUnit(
142
- this.usdToSwap() / safeGetPrice(output.mint)!,
143
+ this.usdToSwap() / safeGetPrice(output.mint, this.priceType)!,
143
144
  output.decimals
144
145
  );
145
146
 
@@ -91,18 +91,15 @@ export class RebalanceTxBuilder {
91
91
  const liquidityUsd =
92
92
  fromBaseUnit(liquidityAvailable, tokenInfo(tokenMint).decimals) *
93
93
  (safeGetPrice(tokenMint) ?? 0);
94
- consoleLog(liquidityUsd);
95
94
  return amountNeededUsd > liquidityUsd * 0.95;
96
95
  };
97
96
 
98
- consoleLog("Supply liquidity available:", supplyLiquidityAvailable);
99
97
  const insufficientSupplyLiquidity = insufficientLiquidity(
100
98
  debtAdjustmentUsd,
101
99
  supplyLiquidityAvailable,
102
100
  this.client.pos.supplyMint
103
101
  );
104
102
 
105
- consoleLog("Debt liquidity available:", debtLiquidityAvailable);
106
103
  const insufficientDebtLiquidity = insufficientLiquidity(
107
104
  debtAdjustmentUsd,
108
105
  debtLiquidityAvailable,
@@ -172,7 +169,6 @@ export class RebalanceTxBuilder {
172
169
  );
173
170
 
174
171
  if (stdFlLiquiditySource === undefined || this.optimizeSize) {
175
- consoleLog("Checking signer liquidity");
176
172
  const { supplyBalance, debtBalance } = await this.client.signerBalances();
177
173
  const signerFlLiquiditySource = this.getFlLiquiditySource(
178
174
  supplyBalance,
@@ -287,7 +283,8 @@ export class RebalanceTxBuilder {
287
283
  this.client,
288
284
  this.values,
289
285
  this.flRequirements,
290
- this.targetLiqUtilizationRateBps
286
+ this.targetLiqUtilizationRateBps,
287
+ this.priceType
291
288
  );
292
289
  await this.swapManager.setSwapParams(attemptNum);
293
290
 
@@ -343,6 +340,11 @@ export class RebalanceTxBuilder {
343
340
  priceType: this.priceType,
344
341
  };
345
342
  consoleLog("Rebalance details:", rebalanceDetails);
343
+ consoleLog(
344
+ "Prices:",
345
+ safeGetPrice(this.client.pos.supplyMint, this.priceType),
346
+ safeGetPrice(this.client.pos.debtMint, this.priceType)
347
+ );
346
348
 
347
349
  const firstRebalance = this.client.rebalanceIx(
348
350
  RebalanceStep.PreSwap,
@@ -179,6 +179,7 @@ export abstract class SolautoClient extends ReferralStateManager {
179
179
 
180
180
  this.log("Position state: ", this.pos.state);
181
181
  this.log("Position settings: ", this.pos.settings);
182
+ this.log("Public key:", this.pos.publicKey.toString());
182
183
  this.log("Supply mint:", this.pos.supplyMint.toString());
183
184
  this.log("Debt mint:", this.pos.debtMint.toString());
184
185
  this.log("LP pool:", this.pos.lpPoolAccount.toString());
@@ -48,7 +48,7 @@ interface RetryConfig {
48
48
  retryDelay?: number;
49
49
  }
50
50
 
51
- export interface TransactionManagerArgs<T extends TxHandler> {
51
+ export interface TransactionsManagerArgs<T extends TxHandler> {
52
52
  txHandler: T;
53
53
  statusCallback?: (statuses: TransactionManagerStatuses) => void;
54
54
  txRunType?: TransactionRunType;
@@ -73,7 +73,7 @@ export class TransactionsManager<T extends TxHandler> {
73
73
 
74
74
  updateOracleTxName = "update oracle";
75
75
 
76
- constructor(args: TransactionManagerArgs<T>) {
76
+ constructor(args: TransactionsManagerArgs<T>) {
77
77
  this.txHandler = args.txHandler;
78
78
  this.statusCallback = args.statusCallback;
79
79
  this.txRunType = args.txRunType;
@@ -53,12 +53,17 @@ export async function buildSwbSubmitResponseTx(
53
53
  ): Promise<TransactionItemInputs | undefined> {
54
54
  const feed = getPullFeed(conn, mint, toWeb3JsPublicKey(signer.publicKey));
55
55
  const [pullIx, responses] = await retryWithExponentialBackoff(
56
- async () =>
57
- await feed.fetchUpdateIx({
56
+ async () => {
57
+ const res = await feed.fetchUpdateIx({
58
58
  chain: "solana",
59
59
  network: "mainnet-beta",
60
- }),
61
- 2,
60
+ });
61
+ if (!res[1] || !res[1][0].value) {
62
+ throw new Error("Unable to fetch Switchboard pull IX");
63
+ }
64
+ return res;
65
+ },
66
+ 3,
62
67
  200
63
68
  );
64
69
 
@@ -111,4 +116,4 @@ export async function getSwitchboardFeedData(
111
116
 
112
117
  export function isSwitchboardMint(mint: PublicKey | string) {
113
118
  return Object.keys(SWITCHBOARD_PRICE_FEED_IDS).includes(mint.toString());
114
- }
119
+ }