@haven-fi/solauto-sdk 1.0.596 → 1.0.598

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(liqThresholdBps: 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,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;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,14 @@ function applyDebtAdjustmentUsd(debtAdjustmentUsd, pos, fees, liqThreshold) {
24
24
  }
25
25
  return { newPos, intermediaryLiqUtilizationRateBps };
26
26
  }
27
- function getDebtAdjustment(liqThreshold, pos, fees, targetLiqUtilizationRateBps) {
28
- const isBoost = (0, utils_1.getLiqUtilzationRateBps)(pos.supplyUsd, pos.debtUsd, (0, utils_1.toBps)(liqThreshold)) <
27
+ function getDebtAdjustment(liqThresholdBps, pos, targetLiqUtilizationRateBps, fees) {
28
+ const isBoost = (0, utils_1.getLiqUtilzationRateBps)(pos.supplyUsd, pos.debtUsd, liqThresholdBps) <
29
29
  targetLiqUtilizationRateBps;
30
+ const liqThreshold = (0, utils_1.fromBps)(liqThresholdBps);
30
31
  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);
32
+ const actualizedFee = 1.0 - (0, utils_1.fromBps)(fees?.solauto ?? 0);
33
+ const flFee = (0, utils_1.fromBps)(fees?.flashLoan ?? 0);
34
+ const lpBorrowFee = (0, utils_1.fromBps)(fees?.lpBorrow ?? 0);
34
35
  const debtAdjustmentUsd = isBoost
35
36
  ? (targetUtilizationRate * liqThreshold * pos.supplyUsd - pos.debtUsd) /
36
37
  (1.0 +
@@ -39,7 +40,7 @@ function getDebtAdjustment(liqThreshold, pos, fees, targetLiqUtilizationRateBps)
39
40
  targetUtilizationRate * actualizedFee * liqThreshold)
40
41
  : (targetUtilizationRate * liqThreshold * pos.supplyUsd - pos.debtUsd) /
41
42
  (actualizedFee - targetUtilizationRate * liqThreshold * (1.0 + flFee));
42
- const newPos = applyDebtAdjustmentUsd(debtAdjustmentUsd, pos, fees, liqThreshold);
43
+ const newPos = applyDebtAdjustmentUsd(debtAdjustmentUsd, pos, liqThreshold, fees);
43
44
  return {
44
45
  debtAdjustmentUsd,
45
46
  endResult: newPos.newPos,
@@ -107,7 +108,7 @@ function getRebalanceValues(solautoPosition, targetLiqUtilizationRateBps, solaut
107
108
  lpBorrow: solautoPosition.state().debt.borrowFeeBps,
108
109
  flashLoan: flFeeBps ?? 0,
109
110
  };
110
- const debtAdjustment = getDebtAdjustment((0, utils_1.fromBps)(solautoPosition.state().liqThresholdBps), position, fees, targetRate);
111
+ const debtAdjustment = getDebtAdjustment(solautoPosition.state().liqThresholdBps, position, targetRate, fees);
111
112
  const repayingCloseToMaxLtv = rebalanceDirection === generated_1.RebalanceDirection.Repay &&
112
113
  targetRate >=
113
114
  (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) {
@@ -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.596",
3
+ "version": "1.0.598",
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,21 @@ 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 =
49
+ debtAdjustmentUsd * (1.0 + fromBps(fees?.flashLoan ?? 0));
49
50
 
50
51
  let intermediaryLiqUtilizationRateBps = 0;
51
52
  if (isBoost) {
52
53
  newPos.debtUsd +=
53
- daWithFlashLoan * fromBps(fees.lpBorrow) + daWithFlashLoan;
54
+ daWithFlashLoan * fromBps(fees?.lpBorrow ?? 0) + daWithFlashLoan;
54
55
  intermediaryLiqUtilizationRateBps = getLiqUtilzationRateBps(
55
56
  newPos.supplyUsd,
56
57
  newPos.debtUsd,
@@ -71,19 +72,20 @@ export function applyDebtAdjustmentUsd(
71
72
  }
72
73
 
73
74
  export function getDebtAdjustment(
74
- liqThreshold: number,
75
+ liqThresholdBps: number,
75
76
  pos: PositionValues,
76
- fees: RebalanceFeesBps,
77
- targetLiqUtilizationRateBps: number
77
+ targetLiqUtilizationRateBps: number,
78
+ fees?: RebalanceFeesBps
78
79
  ): DebtAdjustment {
79
80
  const isBoost =
80
- getLiqUtilzationRateBps(pos.supplyUsd, pos.debtUsd, toBps(liqThreshold)) <
81
+ getLiqUtilzationRateBps(pos.supplyUsd, pos.debtUsd, liqThresholdBps) <
81
82
  targetLiqUtilizationRateBps;
83
+ const liqThreshold = fromBps(liqThresholdBps);
82
84
 
83
85
  const targetUtilizationRate = fromBps(targetLiqUtilizationRateBps);
84
- const actualizedFee = 1.0 - fromBps(fees.solauto);
85
- const flFee = fromBps(fees.flashLoan);
86
- const lpBorrowFee = fromBps(fees.lpBorrow);
86
+ const actualizedFee = 1.0 - fromBps(fees?.solauto ?? 0);
87
+ const flFee = fromBps(fees?.flashLoan ?? 0);
88
+ const lpBorrowFee = fromBps(fees?.lpBorrow ?? 0);
87
89
 
88
90
  const debtAdjustmentUsd = isBoost
89
91
  ? (targetUtilizationRate * liqThreshold * pos.supplyUsd - pos.debtUsd) /
@@ -97,8 +99,8 @@ export function getDebtAdjustment(
97
99
  const newPos = applyDebtAdjustmentUsd(
98
100
  debtAdjustmentUsd,
99
101
  pos,
100
- fees,
101
- liqThreshold
102
+ liqThreshold,
103
+ fees
102
104
  );
103
105
 
104
106
  return {
@@ -185,7 +187,7 @@ export function getRebalanceValues(
185
187
  solautoPosition: SolautoPositionEx,
186
188
  targetLiqUtilizationRateBps?: number,
187
189
  solautoFeeBps?: SolautoFeesBps,
188
- flFeeBps?: number,
190
+ flFeeBps?: number
189
191
  ): RebalanceValues {
190
192
  const tokenBalanceChange = getTokenBalanceChange();
191
193
 
@@ -211,10 +213,10 @@ export function getRebalanceValues(
211
213
  };
212
214
 
213
215
  const debtAdjustment = getDebtAdjustment(
214
- fromBps(solautoPosition.state().liqThresholdBps),
216
+ solautoPosition.state().liqThresholdBps,
215
217
  position,
216
- fees,
217
- targetRate
218
+ targetRate,
219
+ fees
218
220
  );
219
221
 
220
222
  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 =
@@ -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,