@haven-fi/solauto-sdk 1.0.595 → 1.0.597

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.
@@ -19,8 +19,8 @@ interface ApplyDebtAdjustmentResult {
19
19
  newPos: PositionValues;
20
20
  intermediaryLiqUtilizationRateBps: number;
21
21
  }
22
- export declare function applyDebtAdjustmentUsd(debtAdjustmentUsd: number, pos: PositionValues, fees: RebalanceFeesBps, liqThreshold: number): ApplyDebtAdjustmentResult;
23
- export declare function getDebtAdjustment(liqThreshold: number, pos: PositionValues, fees: RebalanceFeesBps, targetLiqUtilizationRateBps: number): DebtAdjustment;
22
+ export declare function applyDebtAdjustmentUsd(debtAdjustmentUsd: number, pos: PositionValues, liqThreshold: number, fees?: RebalanceFeesBps): ApplyDebtAdjustmentResult;
23
+ export declare function getDebtAdjustment(liqThreshold: number, pos: PositionValues, targetLiqUtilizationRateBps: number, fees?: RebalanceFeesBps): DebtAdjustment;
24
24
  export interface RebalanceValues extends DebtAdjustment {
25
25
  rebalanceDirection: RebalanceDirection;
26
26
  tokenBalanceChange?: TokenBalanceChange;
@@ -1 +1 @@
1
- {"version":3,"file":"rebalanceValues.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceValues.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,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,IAAI,EAAE,gBAAgB,EACtB,YAAY,EAAE,MAAM,GACnB,yBAAyB,CA6B3B;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,gBAAgB,EACtB,2BAA2B,EAAE,MAAM,GAClC,cAAc,CA+BhB;AAqED,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,2BAA2B,CAAC,EAAE,MAAM,EACpC,aAAa,CAAC,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,CA6CjB"}
1
+ {"version":3,"file":"rebalanceValues.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceValues.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,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,CA6B3B;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,cAAc,EACnB,2BAA2B,EAAE,MAAM,EACnC,IAAI,CAAC,EAAE,gBAAgB,GACtB,cAAc,CA+BhB;AAqED,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,2BAA2B,CAAC,EAAE,MAAM,EACpC,aAAa,CAAC,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,CA6CjB"}
@@ -5,15 +5,15 @@ exports.getDebtAdjustment = getDebtAdjustment;
5
5
  exports.getRebalanceValues = getRebalanceValues;
6
6
  const generated_1 = require("../../generated");
7
7
  const utils_1 = require("../../utils");
8
- function applyDebtAdjustmentUsd(debtAdjustmentUsd, pos, fees, liqThreshold) {
8
+ function applyDebtAdjustmentUsd(debtAdjustmentUsd, pos, liqThreshold, fees) {
9
9
  const newPos = { ...pos };
10
10
  const isBoost = debtAdjustmentUsd > 0;
11
- const daMinusSolautoFees = debtAdjustmentUsd - debtAdjustmentUsd * (0, utils_1.fromBps)(fees.solauto);
12
- const daWithFlashLoan = debtAdjustmentUsd * (1.0 + (0, utils_1.fromBps)(fees.flashLoan));
11
+ const daMinusSolautoFees = debtAdjustmentUsd - debtAdjustmentUsd * (0, utils_1.fromBps)(fees?.solauto ?? 0);
12
+ const daWithFlashLoan = debtAdjustmentUsd * (1.0 + (0, utils_1.fromBps)(fees?.flashLoan ?? 0));
13
13
  let intermediaryLiqUtilizationRateBps = 0;
14
14
  if (isBoost) {
15
15
  newPos.debtUsd +=
16
- daWithFlashLoan * (0, utils_1.fromBps)(fees.lpBorrow) + daWithFlashLoan;
16
+ daWithFlashLoan * (0, utils_1.fromBps)(fees?.lpBorrow ?? 0) + daWithFlashLoan;
17
17
  intermediaryLiqUtilizationRateBps = (0, utils_1.getLiqUtilzationRateBps)(newPos.supplyUsd, newPos.debtUsd, (0, utils_1.toBps)(liqThreshold));
18
18
  newPos.supplyUsd += daMinusSolautoFees;
19
19
  }
@@ -24,13 +24,13 @@ function applyDebtAdjustmentUsd(debtAdjustmentUsd, pos, fees, liqThreshold) {
24
24
  }
25
25
  return { newPos, intermediaryLiqUtilizationRateBps };
26
26
  }
27
- function getDebtAdjustment(liqThreshold, pos, fees, targetLiqUtilizationRateBps) {
27
+ function getDebtAdjustment(liqThreshold, pos, targetLiqUtilizationRateBps, fees) {
28
28
  const isBoost = (0, utils_1.getLiqUtilzationRateBps)(pos.supplyUsd, pos.debtUsd, (0, utils_1.toBps)(liqThreshold)) <
29
29
  targetLiqUtilizationRateBps;
30
30
  const targetUtilizationRate = (0, utils_1.fromBps)(targetLiqUtilizationRateBps);
31
- const actualizedFee = 1.0 - (0, utils_1.fromBps)(fees.solauto);
32
- const flFee = (0, utils_1.fromBps)(fees.flashLoan);
33
- const lpBorrowFee = (0, utils_1.fromBps)(fees.lpBorrow);
31
+ const actualizedFee = 1.0 - (0, utils_1.fromBps)(fees?.solauto ?? 0);
32
+ const flFee = (0, utils_1.fromBps)(fees?.flashLoan ?? 0);
33
+ const lpBorrowFee = (0, utils_1.fromBps)(fees?.lpBorrow ?? 0);
34
34
  const debtAdjustmentUsd = isBoost
35
35
  ? (targetUtilizationRate * liqThreshold * pos.supplyUsd - pos.debtUsd) /
36
36
  (1.0 +
@@ -39,7 +39,7 @@ function getDebtAdjustment(liqThreshold, pos, fees, targetLiqUtilizationRateBps)
39
39
  targetUtilizationRate * actualizedFee * liqThreshold)
40
40
  : (targetUtilizationRate * liqThreshold * pos.supplyUsd - pos.debtUsd) /
41
41
  (actualizedFee - targetUtilizationRate * liqThreshold * (1.0 + flFee));
42
- const newPos = applyDebtAdjustmentUsd(debtAdjustmentUsd, pos, fees, liqThreshold);
42
+ const newPos = applyDebtAdjustmentUsd(debtAdjustmentUsd, pos, liqThreshold, fees);
43
43
  return {
44
44
  debtAdjustmentUsd,
45
45
  endResult: newPos.newPos,
@@ -107,7 +107,7 @@ function getRebalanceValues(solautoPosition, targetLiqUtilizationRateBps, solaut
107
107
  lpBorrow: solautoPosition.state().debt.borrowFeeBps,
108
108
  flashLoan: flFeeBps ?? 0,
109
109
  };
110
- const debtAdjustment = getDebtAdjustment((0, utils_1.fromBps)(solautoPosition.state().liqThresholdBps), position, fees, targetRate);
110
+ const debtAdjustment = getDebtAdjustment((0, utils_1.fromBps)(solautoPosition.state().liqThresholdBps), position, targetRate, fees);
111
111
  const repayingCloseToMaxLtv = rebalanceDirection === generated_1.RebalanceDirection.Repay &&
112
112
  targetRate >=
113
113
  (0, utils_1.maxRepayToBps)(solautoPosition.state().maxLtvBps, solautoPosition.state().liqThresholdBps);
@@ -100,8 +100,7 @@ class SolautoPositionEx {
100
100
  const limitsUpToDate = this.debtLiquidityUsdAvailable() !== 0 ||
101
101
  this.supplyLiquidityUsdDepositable() !== 0;
102
102
  if (limitsUpToDate) {
103
- const { debtAdjustmentUsd } = (0, rebalance_1.getDebtAdjustment)(this.state().liqThresholdBps, { supplyUsd: this.supplyUsd(), debtUsd: this.debtUsd() }, { solauto: 50, lpBorrow: 50, flashLoan: 50 }, // TODO: add better fix here instead of magic numbers
104
- this.boostToBps());
103
+ const { debtAdjustmentUsd } = (0, rebalance_1.getDebtAdjustment)(this.state().liqThresholdBps, { supplyUsd: this.supplyUsd(), debtUsd: this.debtUsd() }, this.boostToBps(), { solauto: 50, lpBorrow: 50, flashLoan: 50 });
105
104
  const sufficientLiquidity = this.debtLiquidityUsdAvailable() * 0.95 > debtAdjustmentUsd &&
106
105
  this.supplyLiquidityUsdDepositable() * 0.95 > debtAdjustmentUsd;
107
106
  if (!sufficientLiquidity) {
@@ -165,7 +164,7 @@ class SolautoPositionEx {
165
164
  (0, utils_1.toRoundedUsdValue)(newSupplyUsd);
166
165
  this._data.state.supply.amountUsed.baseUnit = (0, utils_1.toBaseUnit)(newSupplyUsd / supplyPrice, this.supplyMintInfo().decimals);
167
166
  this._data.state.netWorth.baseAmountUsdValue = (0, utils_1.toRoundedUsdValue)(newSupplyUsd - newDebtUsd);
168
- this._data.state.netWorth.baseUnit = (0, utils_1.toBaseUnit)(newSupplyUsd - newDebtUsd / supplyPrice, this.supplyMintInfo().decimals);
167
+ this._data.state.netWorth.baseUnit = (0, utils_1.toBaseUnit)((newSupplyUsd - newDebtUsd) / supplyPrice, this.supplyMintInfo().decimals);
169
168
  }
170
169
  }
171
170
  exports.SolautoPositionEx = SolautoPositionEx;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAEL,aAAa,EAGb,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAM5E,OAAO,EACL,cAAc,EAOf,MAAM,UAAU,CAAC;AAGlB,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gCAAgC,GACzC,yBAAyB,CAQ3B;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA4B9B;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,UAAU,CAAC,EAAE,kBAAkB,EAC/B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAgC5B;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,aAAa,CAgEf"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAEL,aAAa,EAGb,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAM5E,OAAO,EACL,cAAc,EAQf,MAAM,UAAU,CAAC;AAElB,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gCAAgC,GACzC,yBAAyB,CAQ3B;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA4B9B;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,UAAU,CAAC,EAAE,kBAAkB,EAC/B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAgC5B;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,aAAa,CAgEf"}
@@ -9,7 +9,6 @@ const web3_js_1 = require("@solana/web3.js");
9
9
  const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
10
10
  const marginfiSolautoPositionEx_1 = require("./marginfiSolautoPositionEx");
11
11
  const utils_1 = require("../utils");
12
- const constants_1 = require("../constants");
13
12
  function createSolautoSettings(settings) {
14
13
  return {
15
14
  boostGap: settings.boostGap,
@@ -59,8 +58,8 @@ async function getOrCreatePositionEx(umi, publicKey, customArgs, contextUpdates)
59
58
  }
60
59
  }
61
60
  function createFakePositionState(supply, debt, maxLtvBps, liqThresholdBps) {
62
- const supplyDecimals = constants_1.TOKEN_INFO[supply.mint.toString()].decimals;
63
- const debtDecimals = constants_1.TOKEN_INFO[debt.mint.toString()].decimals;
61
+ const supplyDecimals = (0, utils_1.tokenInfo)(supply.mint).decimals;
62
+ const debtDecimals = (0, utils_1.tokenInfo)(debt.mint).decimals;
64
63
  const supplyUsd = (supply.amountUsed ?? 0) * (supply.price ?? 0);
65
64
  const debtUsd = (debt.amountUsed ?? 0) * (debt.price ?? 0);
66
65
  return {
@@ -16,7 +16,6 @@ export declare function fromBps(value: number): number;
16
16
  export declare function toBps(value: number): number;
17
17
  export declare function bytesToI80F48(bytes: number[]): number;
18
18
  export declare function uint8ArrayToBigInt(uint8Array: Uint8Array): bigint;
19
- export declare function getDebtAdjustmentUsd(liqThresholdBps: number, supplyUsd: number, debtUsd: number, targetLiqUtilizationRateBps: number, adjustmentFeeBps?: number): number;
20
19
  export declare function getMaxLiqUtilizationRateBps(maxLtvBps: number, liqThresholdBps: number, offsetFromMaxLtv: number): number;
21
20
  export declare function maxRepayFromBps(maxLtvBps: number, liqThresholdBps: number): number;
22
21
  export declare function maxRepayToBps(maxLtvBps: number, liqThresholdBps: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,UAIhD;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,UAKjD;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAKpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAKlD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,aAAa,UAI9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,UAEjD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAE/C;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAejE;AAED,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,2BAA2B,EAAE,MAAM,EACnC,gBAAgB,CAAC,EAAE,MAAM,UAW1B;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE"}
1
+ {"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,UAIhD;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,UAKjD;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAKpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAKlD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,aAAa,UAI9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,UAEjD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAE/C;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAejE;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE"}
@@ -17,7 +17,6 @@ exports.fromBps = fromBps;
17
17
  exports.toBps = toBps;
18
18
  exports.bytesToI80F48 = bytesToI80F48;
19
19
  exports.uint8ArrayToBigInt = uint8ArrayToBigInt;
20
- exports.getDebtAdjustmentUsd = getDebtAdjustmentUsd;
21
20
  exports.getMaxLiqUtilizationRateBps = getMaxLiqUtilizationRateBps;
22
21
  exports.maxRepayFromBps = maxRepayFromBps;
23
22
  exports.maxRepayToBps = maxRepayToBps;
@@ -103,14 +102,6 @@ function uint8ArrayToBigInt(uint8Array) {
103
102
  const high = dataView.getUint32(4, true);
104
103
  return (BigInt(high) << 32n) | BigInt(low);
105
104
  }
106
- function getDebtAdjustmentUsd(liqThresholdBps, supplyUsd, debtUsd, targetLiqUtilizationRateBps, adjustmentFeeBps) {
107
- const adjustmentFee = adjustmentFeeBps && adjustmentFeeBps > 0 ? fromBps(adjustmentFeeBps) : 0;
108
- const liqThreshold = fromBps(liqThresholdBps);
109
- const targetLiqUtilizationRate = fromBps(targetLiqUtilizationRateBps);
110
- const debtAdjustmentUsd = (targetLiqUtilizationRate * supplyUsd * liqThreshold - debtUsd) /
111
- (1 - targetLiqUtilizationRate * (1 - adjustmentFee) * liqThreshold);
112
- return debtAdjustmentUsd;
113
- }
114
105
  function getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, offsetFromMaxLtv) {
115
106
  return (toBps((fromBps(maxLtvBps) - offsetFromMaxLtv) / fromBps(liqThresholdBps)) -
116
107
  1); // -1 to account for any rounding issues
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.595",
3
+ "version": "1.0.597",
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,20 +37,20 @@ interface ApplyDebtAdjustmentResult {
37
37
  export function applyDebtAdjustmentUsd(
38
38
  debtAdjustmentUsd: number,
39
39
  pos: PositionValues,
40
- fees: RebalanceFeesBps,
41
- liqThreshold: number
40
+ liqThreshold: number,
41
+ fees?: RebalanceFeesBps,
42
42
  ): ApplyDebtAdjustmentResult {
43
43
  const newPos = { ...pos };
44
44
  const isBoost = debtAdjustmentUsd > 0;
45
45
 
46
46
  const daMinusSolautoFees =
47
- debtAdjustmentUsd - debtAdjustmentUsd * fromBps(fees.solauto);
48
- const daWithFlashLoan = debtAdjustmentUsd * (1.0 + fromBps(fees.flashLoan));
47
+ debtAdjustmentUsd - debtAdjustmentUsd * fromBps(fees?.solauto ?? 0);
48
+ const daWithFlashLoan = debtAdjustmentUsd * (1.0 + fromBps(fees?.flashLoan ?? 0));
49
49
 
50
50
  let intermediaryLiqUtilizationRateBps = 0;
51
51
  if (isBoost) {
52
52
  newPos.debtUsd +=
53
- daWithFlashLoan * fromBps(fees.lpBorrow) + daWithFlashLoan;
53
+ daWithFlashLoan * fromBps(fees?.lpBorrow ?? 0) + daWithFlashLoan;
54
54
  intermediaryLiqUtilizationRateBps = getLiqUtilzationRateBps(
55
55
  newPos.supplyUsd,
56
56
  newPos.debtUsd,
@@ -73,17 +73,17 @@ export function applyDebtAdjustmentUsd(
73
73
  export function getDebtAdjustment(
74
74
  liqThreshold: number,
75
75
  pos: PositionValues,
76
- fees: RebalanceFeesBps,
77
- targetLiqUtilizationRateBps: number
76
+ targetLiqUtilizationRateBps: number,
77
+ fees?: RebalanceFeesBps,
78
78
  ): DebtAdjustment {
79
79
  const isBoost =
80
80
  getLiqUtilzationRateBps(pos.supplyUsd, pos.debtUsd, toBps(liqThreshold)) <
81
81
  targetLiqUtilizationRateBps;
82
82
 
83
83
  const targetUtilizationRate = fromBps(targetLiqUtilizationRateBps);
84
- const actualizedFee = 1.0 - fromBps(fees.solauto);
85
- const flFee = fromBps(fees.flashLoan);
86
- const lpBorrowFee = fromBps(fees.lpBorrow);
84
+ const actualizedFee = 1.0 - fromBps(fees?.solauto ?? 0);
85
+ const flFee = fromBps(fees?.flashLoan ?? 0);
86
+ const lpBorrowFee = fromBps(fees?.lpBorrow ?? 0);
87
87
 
88
88
  const debtAdjustmentUsd = isBoost
89
89
  ? (targetUtilizationRate * liqThreshold * pos.supplyUsd - pos.debtUsd) /
@@ -97,8 +97,8 @@ export function getDebtAdjustment(
97
97
  const newPos = applyDebtAdjustmentUsd(
98
98
  debtAdjustmentUsd,
99
99
  pos,
100
- fees,
101
- liqThreshold
100
+ liqThreshold,
101
+ fees
102
102
  );
103
103
 
104
104
  return {
@@ -213,8 +213,8 @@ export function getRebalanceValues(
213
213
  const debtAdjustment = getDebtAdjustment(
214
214
  fromBps(solautoPosition.state().liqThresholdBps),
215
215
  position,
216
- fees,
217
- targetRate
216
+ targetRate,
217
+ fees
218
218
  );
219
219
 
220
220
  const repayingCloseToMaxLtv =
@@ -212,8 +212,8 @@ export abstract class SolautoPositionEx {
212
212
  const { debtAdjustmentUsd } = getDebtAdjustment(
213
213
  this.state().liqThresholdBps,
214
214
  { supplyUsd: this.supplyUsd(), debtUsd: this.debtUsd() },
215
- { solauto: 50, lpBorrow: 50, flashLoan: 50 }, // TODO: add better fix here instead of magic numbers
216
- this.boostToBps()
215
+ this.boostToBps(),
216
+ { solauto: 50, lpBorrow: 50, flashLoan: 50 }, // TODO: get true data here instead of magic numbers
217
217
  );
218
218
 
219
219
  const sufficientLiquidity =
@@ -342,7 +342,7 @@ export abstract class SolautoPositionEx {
342
342
  newSupplyUsd - newDebtUsd
343
343
  );
344
344
  this._data.state.netWorth.baseUnit = toBaseUnit(
345
- newSupplyUsd - newDebtUsd / supplyPrice,
345
+ (newSupplyUsd - newDebtUsd) / supplyPrice,
346
346
  this.supplyMintInfo().decimals
347
347
  );
348
348
  }
@@ -21,9 +21,9 @@ import {
21
21
  getLiqUtilzationRateBps,
22
22
  retryWithExponentialBackoff,
23
23
  toBaseUnit,
24
+ tokenInfo,
24
25
  toRoundedUsdValue,
25
26
  } from "../utils";
26
- import { TOKEN_INFO } from "../constants";
27
27
 
28
28
  export function createSolautoSettings(
29
29
  settings: SolautoSettingsParametersInpArgs
@@ -122,8 +122,8 @@ export function createFakePositionState(
122
122
  maxLtvBps: number,
123
123
  liqThresholdBps: number
124
124
  ): PositionState {
125
- const supplyDecimals = TOKEN_INFO[supply.mint.toString()].decimals;
126
- const debtDecimals = TOKEN_INFO[debt.mint.toString()].decimals;
125
+ const supplyDecimals = tokenInfo(supply.mint).decimals;
126
+ const debtDecimals = tokenInfo(debt.mint).decimals;
127
127
 
128
128
  const supplyUsd = (supply.amountUsed ?? 0) * (supply.price ?? 0);
129
129
  const debtUsd = (debt.amountUsed ?? 0) * (debt.price ?? 0);
@@ -132,24 +132,6 @@ export function uint8ArrayToBigInt(uint8Array: Uint8Array): bigint {
132
132
  return (BigInt(high) << 32n) | BigInt(low);
133
133
  }
134
134
 
135
- export function getDebtAdjustmentUsd(
136
- liqThresholdBps: number,
137
- supplyUsd: number,
138
- debtUsd: number,
139
- targetLiqUtilizationRateBps: number,
140
- adjustmentFeeBps?: number
141
- ) {
142
- const adjustmentFee =
143
- adjustmentFeeBps && adjustmentFeeBps > 0 ? fromBps(adjustmentFeeBps) : 0;
144
- const liqThreshold = fromBps(liqThresholdBps);
145
- const targetLiqUtilizationRate = fromBps(targetLiqUtilizationRateBps);
146
-
147
- const debtAdjustmentUsd =
148
- (targetLiqUtilizationRate * supplyUsd * liqThreshold - debtUsd) /
149
- (1 - targetLiqUtilizationRate * (1 - adjustmentFee) * liqThreshold);
150
- return debtAdjustmentUsd;
151
- }
152
-
153
135
  export function getMaxLiqUtilizationRateBps(
154
136
  maxLtvBps: number,
155
137
  liqThresholdBps: number,