@haven-fi/solauto-sdk 1.0.536 → 1.0.538

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4C3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAmEA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,kBAAkB,EAAE,OAAO,UAqB5B;AAmDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CACN;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACxE,SAAS,CACZ,CAiMA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
1
+ {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4C3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAyDA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,kBAAkB,EAAE,OAAO,UAqB5B;AAmDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CACN;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACxE,SAAS,CACZ,CAiMA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
@@ -104,8 +104,7 @@ async function getAllMarginfiAccountsByAuthority(umi, authority, group, compatib
104
104
  }))?.state,
105
105
  })));
106
106
  return positionStates
107
- .sort((a, b) => (0, numberUtils_1.fromBaseUnit)(b.state?.netWorth.baseAmountUsdValue ?? BigInt(0), generalAccounts_1.USD_DECIMALS) -
108
- (0, numberUtils_1.fromBaseUnit)(a.state?.netWorth.baseAmountUsdValue ?? BigInt(0), generalAccounts_1.USD_DECIMALS))
107
+ .sort((a, b) => (0, numberUtils_1.calcNetWorthUsd)(b.state) - (0, numberUtils_1.calcNetWorthUsd)(a.state))
109
108
  .filter((x) => x.state !== undefined)
110
109
  .map((x) => ({
111
110
  marginfiAccount: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey),
@@ -1,4 +1,12 @@
1
- import { RebalanceDirection } from "../generated";
1
+ import { PositionState, RebalanceDirection } from "../generated";
2
+ export declare function calcNetWorthUsd(state?: PositionState): number;
3
+ export declare function calcSupplyUsd(state?: PositionState): number;
4
+ export declare function calcDebtUsd(state?: PositionState): number;
5
+ export declare function calcNetWorth(state?: PositionState): number;
6
+ export declare function calcTotalSupply(state?: PositionState): number;
7
+ export declare function calcTotalDebt(state?: PositionState): number;
8
+ export declare function debtLiquidityUsdAvailable(state?: PositionState): number;
9
+ export declare function supplyLiquidityUsdDepositable(state?: PositionState): number;
2
10
  export declare function getLiqUtilzationRateBps(supplyUsd: number, debtUsd: number, liqThresholdBps: number): number;
3
11
  export declare function toBaseUnit(value: number, decimals: number): bigint;
4
12
  export declare function fromBaseUnit(value: bigint, decimals: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,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,iBAAiB,CAC/B,UAAU,EAAE,OAAO,EACnB,2BAA2B,EAAE,MAAM,GAAG,SAAS,EAC/C,mBAAmB,EAAE,MAAM,EAC3B,kBAAkB,EAAE,kBAAkB,GACrC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAiDA;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,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEjE,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAKpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAKlD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,UAKhD;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,UAK9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,CAAC,EAAE,aAAa,UAKlE;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,iBAAiB,CAC/B,UAAU,EAAE,OAAO,EACnB,2BAA2B,EAAE,MAAM,GAAG,SAAS,EAC/C,mBAAmB,EAAE,MAAM,EAC3B,kBAAkB,EAAE,kBAAkB,GACrC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAiDA;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,5 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calcNetWorthUsd = calcNetWorthUsd;
4
+ exports.calcSupplyUsd = calcSupplyUsd;
5
+ exports.calcDebtUsd = calcDebtUsd;
6
+ exports.calcNetWorth = calcNetWorth;
7
+ exports.calcTotalSupply = calcTotalSupply;
8
+ exports.calcTotalDebt = calcTotalDebt;
9
+ exports.debtLiquidityUsdAvailable = debtLiquidityUsdAvailable;
10
+ exports.supplyLiquidityUsdDepositable = supplyLiquidityUsdDepositable;
3
11
  exports.getLiqUtilzationRateBps = getLiqUtilzationRateBps;
4
12
  exports.toBaseUnit = toBaseUnit;
5
13
  exports.fromBaseUnit = fromBaseUnit;
@@ -15,6 +23,30 @@ exports.maxRepayToBps = maxRepayToBps;
15
23
  exports.maxBoostToBps = maxBoostToBps;
16
24
  const constants_1 = require("../constants");
17
25
  const generated_1 = require("../generated");
26
+ function calcNetWorthUsd(state) {
27
+ return fromBaseUnit(state?.netWorth.baseAmountUsdValue ?? BigInt(0), constants_1.USD_DECIMALS);
28
+ }
29
+ function calcSupplyUsd(state) {
30
+ return fromBaseUnit(state?.supply.amountUsed.baseAmountUsdValue ?? BigInt(0), constants_1.USD_DECIMALS);
31
+ }
32
+ function calcDebtUsd(state) {
33
+ return fromBaseUnit(state?.debt.amountUsed.baseAmountUsdValue ?? BigInt(0), constants_1.USD_DECIMALS);
34
+ }
35
+ function calcNetWorth(state) {
36
+ return fromBaseUnit(state?.netWorth.baseUnit ?? BigInt(0), state?.supply.decimals ?? 1);
37
+ }
38
+ function calcTotalSupply(state) {
39
+ return fromBaseUnit(state?.supply.amountUsed.baseUnit ?? BigInt(0), state?.supply.decimals ?? 1);
40
+ }
41
+ function calcTotalDebt(state) {
42
+ return fromBaseUnit(state?.debt.amountUsed.baseUnit ?? BigInt(0), state?.debt.decimals ?? 1);
43
+ }
44
+ function debtLiquidityUsdAvailable(state) {
45
+ return fromBaseUnit(state?.debt.amountCanBeUsed.baseAmountUsdValue ?? BigInt(0), constants_1.USD_DECIMALS);
46
+ }
47
+ function supplyLiquidityUsdDepositable(state) {
48
+ return fromBaseUnit(state?.supply.amountCanBeUsed.baseAmountUsdValue ?? BigInt(0), constants_1.USD_DECIMALS);
49
+ }
18
50
  function getLiqUtilzationRateBps(supplyUsd, debtUsd, liqThresholdBps) {
19
51
  if (supplyUsd === 0 || debtUsd === 0) {
20
52
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAarE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA0C5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO,qBAa/B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,oBAAoB;;;GAc/B"}
1
+ {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAarE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyC5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO,qBAa/B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,oBAAoB;;;GAc/B"}
@@ -45,7 +45,6 @@ async function fetchTokenPrices(mints) {
45
45
  const pythMints = mints.filter((x) => x.toString() in pythConstants_1.PYTH_PRICE_FEED_IDS);
46
46
  const switchboardMints = mints.filter((x) => x.toString() in switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS);
47
47
  const otherMints = mints.filter((x) => !pythMints.includes(x) && !switchboardMints.includes(x));
48
- console.log(mints.length, otherMints.length);
49
48
  const [pythData, switchboardData, jupData] = await Promise.all([
50
49
  (0, generalUtils_1.zip)(pythMints, await getPythPrices(pythMints)),
51
50
  (0, generalUtils_1.zip)(switchboardMints, await getSwitchboardPrices(switchboardMints)),
@@ -1 +1 @@
1
- {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAGL,OAAO,EAEP,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAElB,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,gCAAgC,EAChC,SAAS,EAMV,MAAM,iBAAiB,CAAC;AAsBzB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAI9E,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAczE;AAgBD,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,kBAAkB,GAC7B,MAAM,CAKR;AAED,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,kBAAkB,EAC9B,eAAe,EAAE,MAAM,GACtB,OAAO,CAET;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,kBAAkB,EAC9B,oBAAoB,EAAE,MAAM,UAY7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,yBAAyB,EACnC,eAAe,EAAE,MAAM,GACtB,yBAAyB,CAgB3B;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,yBAAyB,GAAG,SAAS,EACvD,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,oBAAoB,SAAI,GACvB,eAAe,GAAG,SAAS,CAkE7B;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,yBAAyB,EAC3C,eAAe,EAAE,MAAM,GACtB,OAAO,CAYT;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,EACR,SAAS,CAAC,EAAE,SAAS,EACrB,kBAAkB,CAAC,EAAE,YAAY,GAChC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAuFnC;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAkBzE;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,SAAS,EAAE,CAAC,CA+BtB;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACf,kBAAkB,CAAC,EAAE,YAAY,GAChC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA6CnC;AAED,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,aAAa,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAuCxB;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,CAoEf;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gCAAgC,GACzC,yBAAyB,CA8B3B;AAED,KAAK,kBAAkB,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,gCAAgC,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEhD,qBAAa,mBAAmB;IACvB,gBAAgB,SAAa;IAC7B,cAAc,SAAa;IAC3B,QAAQ,EAAE,yBAAyB,GAAG,SAAS,CAAa;IAC5D,SAAS,EAAE,WAAW,GAAG,SAAS,CAAa;IAC/C,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAa;IACpE,aAAa,EAAE,SAAS,GAAG,SAAS,CAAa;IAExD,GAAG,CAAC,MAAM,EAAE,kBAAkB;IA6B9B,KAAK;IASL,UAAU,IAAI,OAAO;CAStB"}
@@ -96,8 +96,8 @@ function eligibleForRebalance(positionState, positionSettings, positionDca, curr
96
96
  positionState.debt.amountCanBeUsed.baseUnit > BigInt(0);
97
97
  if (limitsUpToDate && positionState.liqUtilizationRateBps < boostFrom) {
98
98
  const values = (0, rebalanceUtils_1.getRebalanceValues)(positionState, positionSettings, positionDca, (0, generalUtils_1.currentUnixSeconds)(), supplyMintPrice, debtMintPrice);
99
- const debtAvailable = (0, numberUtils_1.fromBaseUnit)(positionState.debt.amountCanBeUsed.baseAmountUsdValue, constants_1.USD_DECIMALS);
100
- const supplyDepositable = (0, numberUtils_1.fromBaseUnit)(positionState.supply.amountCanBeUsed.baseAmountUsdValue, constants_1.USD_DECIMALS);
99
+ const debtAvailable = (0, numberUtils_1.debtLiquidityUsdAvailable)(positionState);
100
+ const supplyDepositable = (0, numberUtils_1.supplyLiquidityUsdDepositable)(positionState);
101
101
  const sufficientLiquidity = debtAvailable * 0.95 > values.debtAdjustmentUsd &&
102
102
  supplyDepositable * 0.95 > values.debtAdjustmentUsd;
103
103
  if (!sufficientLiquidity) {
@@ -277,10 +277,8 @@ async function positionStateWithLatestPrices(state, supplyPrice, debtPrice) {
277
277
  (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint),
278
278
  ]);
279
279
  }
280
- const supplyUsd = (0, numberUtils_1.fromBaseUnit)(state.supply.amountUsed.baseUnit, state.supply.decimals) *
281
- supplyPrice;
282
- const debtUsd = (0, numberUtils_1.fromBaseUnit)(state.debt.amountUsed.baseUnit, state.debt.decimals) *
283
- debtPrice;
280
+ const supplyUsd = (0, numberUtils_1.calcTotalSupply)(state) * supplyPrice;
281
+ const debtUsd = (0, numberUtils_1.calcTotalDebt)(state) * debtPrice;
284
282
  return {
285
283
  ...state,
286
284
  liqUtilizationRateBps: (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, state.liqThresholdBps),
@@ -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;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;AAoDD,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,CAkG5C;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;AA4CD,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,CA2EzB"}
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;AAiB5E,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,CAqEjB;AA6CD,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,CA8F5C;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;AA4CD,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,CA4EzB"}
@@ -11,7 +11,6 @@ const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters"
11
11
  const jupiterUtils_1 = require("../jupiterUtils");
12
12
  const generalUtils_2 = require("../generalUtils");
13
13
  const numberUtils_1 = require("../numberUtils");
14
- const generalAccounts_1 = require("../../constants/generalAccounts");
15
14
  const priceUtils_1 = require("../priceUtils");
16
15
  const constants_1 = require("../../constants");
17
16
  function getAdditionalAmountToDcaIn(dca) {
@@ -102,11 +101,8 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
102
101
  const rebalanceDirection = amountUsdToDcaIn > 0 || state.liqUtilizationRateBps <= targetRateBps
103
102
  ? generated_1.RebalanceDirection.Boost
104
103
  : generated_1.RebalanceDirection.Repay;
105
- const adjustmentFeeBps = (0, numberUtils_1.getSolautoFeesBps)(false, targetLiqUtilizationRateBps, (0, numberUtils_1.fromBaseUnit)(state.netWorth.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS), rebalanceDirection).total;
106
- const supplyUsd = (0, numberUtils_1.fromBaseUnit)(state.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
107
- amountUsdToDcaIn;
108
- const debtUsd = (0, numberUtils_1.fromBaseUnit)(state.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
109
- let debtAdjustmentUsd = (0, numberUtils_1.getDebtAdjustmentUsd)(state.liqThresholdBps, supplyUsd, debtUsd, targetRateBps, adjustmentFeeBps);
104
+ const adjustmentFeeBps = (0, numberUtils_1.getSolautoFeesBps)(false, targetLiqUtilizationRateBps, (0, numberUtils_1.calcNetWorthUsd)(state), rebalanceDirection).total;
105
+ let debtAdjustmentUsd = (0, numberUtils_1.getDebtAdjustmentUsd)(state.liqThresholdBps, (0, numberUtils_1.calcSupplyUsd)(state) + amountUsdToDcaIn, (0, numberUtils_1.calcDebtUsd)(state), targetRateBps, adjustmentFeeBps);
110
106
  (0, generalUtils_2.consoleLog)("Target rate:", targetRateBps, (0, numberUtils_1.maxBoostToBps)(state.maxLtvBps, state.liqThresholdBps));
111
107
  const maxRepayTo = (0, numberUtils_1.maxRepayToBps)(state.maxLtvBps, state.liqThresholdBps);
112
108
  return {
@@ -126,9 +122,8 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
126
122
  };
127
123
  }
128
124
  function postRebalanceLiqUtilizationRateBps(client, values, swapOutputAmount) {
129
- let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
130
- (values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
131
- let debtUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
125
+ let supplyUsd = (0, numberUtils_1.calcSupplyUsd)(client.solautoPositionState) + values.amountUsdToDcaIn;
126
+ let debtUsd = (0, numberUtils_1.calcDebtUsd)(client.solautoPositionState);
132
127
  const boost = values.rebalanceDirection === generated_1.RebalanceDirection.Boost;
133
128
  const outputToken = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(boost
134
129
  ? client.solautoPositionState.supply.mint
@@ -148,9 +143,9 @@ function insufficientLiquidity(amountNeededUsd, liquidity, tokenDecimals, tokenP
148
143
  return amountNeededUsd > (0, numberUtils_1.fromBaseUnit)(liquidity, tokenDecimals) * tokenPrice;
149
144
  }
150
145
  async function getFlashLoanRequirements(client, values, attemptNum) {
151
- let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
146
+ let supplyUsd = (0, numberUtils_1.calcSupplyUsd)(client.solautoPositionState) +
152
147
  (values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
153
- let debtUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
148
+ let debtUsd = (0, numberUtils_1.calcDebtUsd)(client.solautoPositionState);
154
149
  const debtAdjustmentUsdAbs = Math.abs(values.debtAdjustmentUsd);
155
150
  supplyUsd =
156
151
  values.rebalanceDirection === generated_1.RebalanceDirection.Repay
@@ -179,7 +174,9 @@ async function getFlashLoanRequirements(client, values, attemptNum) {
179
174
  signerFlashLoan =
180
175
  sufficientSignerSupplyLiquidity || sufficientSignerDebtLiquidity;
181
176
  if (signerFlashLoan) {
182
- useDebtLiquidity = !sufficientSignerSupplyLiquidity;
177
+ useDebtLiquidity =
178
+ values.rebalanceDirection === generated_1.RebalanceDirection.Boost ||
179
+ !sufficientSignerSupplyLiquidity;
183
180
  }
184
181
  else {
185
182
  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`);
@@ -249,7 +246,7 @@ async function getJupSwapRebalanceDetails(client, values, flRequirements, target
249
246
  const usdToSwap = Math.abs(values.debtAdjustmentUsd) +
250
247
  (values.dcaTokenType === generated_1.TokenType.Debt ? values.amountUsdToDcaIn : 0);
251
248
  let inputAmount = (0, numberUtils_1.toBaseUnit)(usdToSwap / (0, priceUtils_1.safeGetPrice)(input.mint), input.decimals);
252
- const outputAmount = rebalanceToZero
249
+ let outputAmount = rebalanceToZero
253
250
  ? output.amountUsed.baseUnit +
254
251
  BigInt(Math.round(Number(output.amountUsed.baseUnit) *
255
252
  // Add this small percentage to account for the APR on the debt between now and the transaction
@@ -260,7 +257,7 @@ async function getJupSwapRebalanceDetails(client, values, flRequirements, target
260
257
  const exactOut = flashLoanRepayFromDebt && !rebalanceToZero;
261
258
  // || rebalanceToZero
262
259
  const exactIn = !exactOut;
263
- if (exactIn && rebalanceToZero) {
260
+ if (exactIn && (rebalanceToZero || values.repayingCloseToMaxLtv)) {
264
261
  inputAmount = inputAmount + BigInt(Math.round(Number(inputAmount) * 0.005));
265
262
  }
266
263
  const jupSwapInput = {
@@ -1,10 +1,11 @@
1
1
  import { publicKey } from "@metaplex-foundation/umi";
2
2
  import {
3
3
  buildHeliusApiUrl,
4
+ calcNetWorthUsd,
5
+ calcSupplyUsd,
4
6
  currentUnixSeconds,
5
7
  eligibleForRebalance,
6
8
  fetchTokenPrices,
7
- fromBaseUnit,
8
9
  getSolanaRpcConnection,
9
10
  getSolautoManagedPositions,
10
11
  PositionState,
@@ -14,7 +15,6 @@ import {
14
15
  safeGetPrice,
15
16
  SOLAUTO_PROD_PROGRAM,
16
17
  solautoStrategyName,
17
- USD_DECIMALS,
18
18
  } from "../src";
19
19
  import { PublicKey } from "@solana/web3.js";
20
20
  import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
@@ -125,11 +125,7 @@ async function main(filterWhitelist: boolean) {
125
125
  )
126
126
  )
127
127
  .flat()
128
- .sort(
129
- (a, b) =>
130
- fromBaseUnit(a.state.netWorth.baseAmountUsdValue, USD_DECIMALS) -
131
- fromBaseUnit(b.state.netWorth.baseAmountUsdValue, USD_DECIMALS)
132
- );
128
+ .sort((a, b) => calcNetWorthUsd(a.state) - calcNetWorthUsd(b.state));
133
129
 
134
130
  const tokensUsed = Array.from(
135
131
  new Set(
@@ -198,7 +194,7 @@ async function main(filterWhitelist: boolean) {
198
194
  `(${pos.authority.toString()} ${pos.positionId})`
199
195
  );
200
196
  console.log(
201
- `${strategy}: $${formatNumber(fromBaseUnit(latestState.netWorth.baseAmountUsdValue, USD_DECIMALS), 2, 10000, 2)} ${healthText} ${boostText}`
197
+ `${strategy}: $${formatNumber(calcNetWorthUsd(latestState), 2, 10000, 2)} ${healthText} ${boostText}`
202
198
  );
203
199
  }
204
200
 
@@ -215,12 +211,10 @@ async function main(filterWhitelist: boolean) {
215
211
  );
216
212
 
217
213
  const tvl = latestStates
218
- .map((x) =>
219
- fromBaseUnit(x.supply.amountUsed.baseAmountUsdValue, USD_DECIMALS)
220
- )
214
+ .map((x) => calcSupplyUsd(x))
221
215
  .reduce((acc, curr) => acc + curr, 0);
222
216
  const netWorth = latestStates
223
- .map((x) => fromBaseUnit(x.netWorth.baseAmountUsdValue, USD_DECIMALS))
217
+ .map((x) => calcNetWorthUsd(x))
224
218
  .reduce((acc, curr) => acc + curr, 0);
225
219
 
226
220
  console.log(`TVL: $${formatNumber(tvl, 2, 10000, 2)}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.536",
3
+ "version": "1.0.538",
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",
@@ -13,6 +13,7 @@ import {
13
13
  import { currentUnixSeconds } from "./generalUtils";
14
14
  import {
15
15
  bytesToI80F48,
16
+ calcNetWorthUsd,
16
17
  fromBaseUnit,
17
18
  getLiqUtilzationRateBps,
18
19
  toBaseUnit,
@@ -194,17 +195,7 @@ export async function getAllMarginfiAccountsByAuthority(
194
195
  }))
195
196
  );
196
197
  return positionStates
197
- .sort(
198
- (a, b) =>
199
- fromBaseUnit(
200
- b.state?.netWorth.baseAmountUsdValue ?? BigInt(0),
201
- USD_DECIMALS
202
- ) -
203
- fromBaseUnit(
204
- a.state?.netWorth.baseAmountUsdValue ?? BigInt(0),
205
- USD_DECIMALS
206
- )
207
- )
198
+ .sort((a, b) => calcNetWorthUsd(b.state) - calcNetWorthUsd(a.state))
208
199
  .filter((x) => x.state !== undefined)
209
200
  .map((x) => ({
210
201
  marginfiAccount: toWeb3JsPublicKey(x.publicKey),
@@ -1,5 +1,61 @@
1
- import { BASIS_POINTS, MIN_REPAY_GAP_BPS } from "../constants";
2
- import { RebalanceDirection } from "../generated";
1
+ import { BASIS_POINTS, MIN_REPAY_GAP_BPS, USD_DECIMALS } from "../constants";
2
+ import { PositionState, RebalanceDirection } from "../generated";
3
+
4
+ export function calcNetWorthUsd(state?: PositionState) {
5
+ return fromBaseUnit(
6
+ state?.netWorth.baseAmountUsdValue ?? BigInt(0),
7
+ USD_DECIMALS
8
+ );
9
+ }
10
+
11
+ export function calcSupplyUsd(state?: PositionState) {
12
+ return fromBaseUnit(
13
+ state?.supply.amountUsed.baseAmountUsdValue ?? BigInt(0),
14
+ USD_DECIMALS
15
+ );
16
+ }
17
+
18
+ export function calcDebtUsd(state?: PositionState) {
19
+ return fromBaseUnit(
20
+ state?.debt.amountUsed.baseAmountUsdValue ?? BigInt(0),
21
+ USD_DECIMALS
22
+ );
23
+ }
24
+
25
+ export function calcNetWorth(state?: PositionState) {
26
+ return fromBaseUnit(
27
+ state?.netWorth.baseUnit ?? BigInt(0),
28
+ state?.supply.decimals ?? 1
29
+ );
30
+ }
31
+
32
+ export function calcTotalSupply(state?: PositionState) {
33
+ return fromBaseUnit(
34
+ state?.supply.amountUsed.baseUnit ?? BigInt(0),
35
+ state?.supply.decimals ?? 1
36
+ );
37
+ }
38
+
39
+ export function calcTotalDebt(state?: PositionState) {
40
+ return fromBaseUnit(
41
+ state?.debt.amountUsed.baseUnit ?? BigInt(0),
42
+ state?.debt.decimals ?? 1
43
+ );
44
+ }
45
+
46
+ export function debtLiquidityUsdAvailable(state?: PositionState) {
47
+ return fromBaseUnit(
48
+ state?.debt.amountCanBeUsed.baseAmountUsdValue ?? BigInt(0),
49
+ USD_DECIMALS
50
+ );
51
+ }
52
+
53
+ export function supplyLiquidityUsdDepositable(state?: PositionState) {
54
+ return fromBaseUnit(
55
+ state?.supply.amountCanBeUsed.baseAmountUsdValue ?? BigInt(0),
56
+ USD_DECIMALS
57
+ );
58
+ }
3
59
 
4
60
  export function getLiqUtilzationRateBps(
5
61
  supplyUsd: number,
@@ -33,7 +33,6 @@ export async function fetchTokenPrices(mints: PublicKey[]): Promise<number[]> {
33
33
  const otherMints = mints.filter(
34
34
  (x) => !pythMints.includes(x) && !switchboardMints.includes(x)
35
35
  );
36
- console.log(mints.length, otherMints.length);
37
36
 
38
37
  const [pythData, switchboardData, jupData] = await Promise.all([
39
38
  zip(pythMints, await getPythPrices(pythMints)),
@@ -24,8 +24,12 @@ import {
24
24
  } from "../../generated";
25
25
  import { consoleLog, currentUnixSeconds } from "../generalUtils";
26
26
  import {
27
+ calcTotalDebt,
28
+ calcTotalSupply,
29
+ debtLiquidityUsdAvailable,
27
30
  fromBaseUnit,
28
31
  getLiqUtilzationRateBps,
32
+ supplyLiquidityUsdDepositable,
29
33
  toBaseUnit,
30
34
  } from "../numberUtils";
31
35
  import { getReferralState } from "../accountUtils";
@@ -181,14 +185,8 @@ export function eligibleForRebalance(
181
185
  debtMintPrice
182
186
  );
183
187
 
184
- const debtAvailable = fromBaseUnit(
185
- positionState.debt.amountCanBeUsed.baseAmountUsdValue,
186
- USD_DECIMALS
187
- );
188
- const supplyDepositable = fromBaseUnit(
189
- positionState.supply.amountCanBeUsed.baseAmountUsdValue,
190
- USD_DECIMALS
191
- );
188
+ const debtAvailable = debtLiquidityUsdAvailable(positionState);
189
+ const supplyDepositable = supplyLiquidityUsdDepositable(positionState);
192
190
  const sufficientLiquidity =
193
191
  debtAvailable * 0.95 > values.debtAdjustmentUsd &&
194
192
  supplyDepositable * 0.95 > values.debtAdjustmentUsd;
@@ -440,12 +438,8 @@ export async function positionStateWithLatestPrices(
440
438
  ]);
441
439
  }
442
440
 
443
- const supplyUsd =
444
- fromBaseUnit(state.supply.amountUsed.baseUnit, state.supply.decimals) *
445
- supplyPrice;
446
- const debtUsd =
447
- fromBaseUnit(state.debt.amountUsed.baseUnit, state.debt.decimals) *
448
- debtPrice;
441
+ const supplyUsd = calcTotalSupply(state) * supplyPrice;
442
+ const debtUsd = calcTotalDebt(state) * debtPrice;
449
443
  return {
450
444
  ...state,
451
445
  liqUtilizationRateBps: getLiqUtilzationRateBps(
@@ -18,6 +18,9 @@ import { QuoteResponse } from "@jup-ag/api";
18
18
  import { getJupQuote, JupSwapDetails, JupSwapInput } from "../jupiterUtils";
19
19
  import { consoleLog, currentUnixSeconds, tokenInfo } from "../generalUtils";
20
20
  import {
21
+ calcDebtUsd,
22
+ calcNetWorthUsd,
23
+ calcSupplyUsd,
21
24
  fromBaseUnit,
22
25
  fromBps,
23
26
  getDebtAdjustmentUsd,
@@ -216,21 +219,14 @@ export function getRebalanceValues(
216
219
  const adjustmentFeeBps = getSolautoFeesBps(
217
220
  false,
218
221
  targetLiqUtilizationRateBps,
219
- fromBaseUnit(state.netWorth.baseAmountUsdValue, USD_DECIMALS),
222
+ calcNetWorthUsd(state),
220
223
  rebalanceDirection
221
224
  ).total;
222
225
 
223
- const supplyUsd =
224
- fromBaseUnit(state.supply.amountUsed.baseAmountUsdValue, USD_DECIMALS) +
225
- amountUsdToDcaIn;
226
- const debtUsd = fromBaseUnit(
227
- state.debt.amountUsed.baseAmountUsdValue,
228
- USD_DECIMALS
229
- );
230
226
  let debtAdjustmentUsd = getDebtAdjustmentUsd(
231
227
  state.liqThresholdBps,
232
- supplyUsd,
233
- debtUsd,
228
+ calcSupplyUsd(state) + amountUsdToDcaIn,
229
+ calcDebtUsd(state),
234
230
  targetRateBps,
235
231
  adjustmentFeeBps
236
232
  );
@@ -266,15 +262,8 @@ function postRebalanceLiqUtilizationRateBps(
266
262
  swapOutputAmount?: bigint
267
263
  ) {
268
264
  let supplyUsd =
269
- fromBaseUnit(
270
- client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
271
- USD_DECIMALS
272
- ) +
273
- (values.dcaTokenType === TokenType.Supply ? values.amountUsdToDcaIn : 0);
274
- let debtUsd = fromBaseUnit(
275
- client.solautoPositionState!.debt.amountUsed.baseAmountUsdValue,
276
- USD_DECIMALS
277
- );
265
+ calcSupplyUsd(client.solautoPositionState) + values.amountUsdToDcaIn;
266
+ let debtUsd = calcDebtUsd(client.solautoPositionState);
278
267
 
279
268
  const boost = values.rebalanceDirection === RebalanceDirection.Boost;
280
269
 
@@ -321,15 +310,9 @@ export async function getFlashLoanRequirements(
321
310
  attemptNum?: number
322
311
  ): Promise<FlashLoanRequirements | undefined> {
323
312
  let supplyUsd =
324
- fromBaseUnit(
325
- client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
326
- USD_DECIMALS
327
- ) +
313
+ calcSupplyUsd(client.solautoPositionState) +
328
314
  (values.dcaTokenType === TokenType.Supply ? values.amountUsdToDcaIn : 0);
329
- let debtUsd = fromBaseUnit(
330
- client.solautoPositionState!.debt.amountUsed.baseAmountUsdValue,
331
- USD_DECIMALS
332
- );
315
+ let debtUsd = calcDebtUsd(client.solautoPositionState);
333
316
 
334
317
  const debtAdjustmentUsdAbs = Math.abs(values.debtAdjustmentUsd);
335
318
  supplyUsd =
@@ -397,7 +380,9 @@ export async function getFlashLoanRequirements(
397
380
  signerFlashLoan =
398
381
  sufficientSignerSupplyLiquidity || sufficientSignerDebtLiquidity;
399
382
  if (signerFlashLoan) {
400
- useDebtLiquidity = !sufficientSignerSupplyLiquidity;
383
+ useDebtLiquidity =
384
+ values.rebalanceDirection === RebalanceDirection.Boost ||
385
+ !sufficientSignerSupplyLiquidity;
401
386
  } else {
402
387
  throw new Error(
403
388
  `Need at least ${values.debtAdjustmentUsd / debtPrice} ${tokenInfo(client.debtMint).ticker} or ${values.debtAdjustmentUsd / supplyPrice} ${tokenInfo(client.supplyMint).ticker} to perform the transaction`
@@ -525,7 +510,7 @@ export async function getJupSwapRebalanceDetails(
525
510
  usdToSwap / safeGetPrice(input.mint)!,
526
511
  input.decimals
527
512
  );
528
- const outputAmount = rebalanceToZero
513
+ let outputAmount = rebalanceToZero
529
514
  ? output.amountUsed.baseUnit +
530
515
  BigInt(
531
516
  Math.round(
@@ -545,9 +530,10 @@ export async function getJupSwapRebalanceDetails(
545
530
  // || rebalanceToZero
546
531
  const exactIn = !exactOut;
547
532
 
548
- if (exactIn && rebalanceToZero) {
533
+ if (exactIn && (rebalanceToZero || values.repayingCloseToMaxLtv)) {
549
534
  inputAmount = inputAmount + BigInt(Math.round(Number(inputAmount) * 0.005));
550
535
  }
536
+
551
537
  const jupSwapInput: JupSwapInput = {
552
538
  inputMint: toWeb3JsPublicKey(input.mint),
553
539
  outputMint: toWeb3JsPublicKey(output.mint),
@@ -18,7 +18,7 @@ import {
18
18
  maxRepayToBps,
19
19
  toBaseUnit,
20
20
  } from "../../src/utils/numberUtils";
21
- import { NATIVE_MINT, TOKEN_PROGRAM_ID } from "@solana/spl-token";
21
+ import { NATIVE_MINT } from "@solana/spl-token";
22
22
  import {
23
23
  TransactionItem,
24
24
  TransactionsManager,
@@ -34,34 +34,22 @@ import {
34
34
  } from "../../src/constants";
35
35
  import {
36
36
  buildHeliusApiUrl,
37
- fetchTokenPrices,
38
37
  getAllPositionsByAuthority,
39
38
  getQnComputeUnitPriceEstimate,
40
39
  getSolautoManagedPositions,
41
40
  getSolautoPositionAccount,
42
- getTokenAccount,
43
41
  retryWithExponentialBackoff,
44
42
  } from "../../src/utils";
45
43
  import { PriorityFeeSetting } from "../../src/types";
46
- import {
47
- ALL_SUPPORTED_TOKENS,
48
- buildIronforgeApiUrl,
49
- fromBaseUnit,
50
- tokenInfo,
51
- USD_DECIMALS,
52
- } from "../../dist";
53
- import {
54
- RawAccount as TokenAccountData,
55
- AccountLayout as SplTokenAccountLayout,
56
- } from "@solana/spl-token";
44
+ import { buildIronforgeApiUrl, fromBaseUnit, tokenInfo, USD_DECIMALS } from "../../dist";
57
45
 
58
46
  describe("Solauto Marginfi tests", async () => {
59
- const signer = setupTest();
60
- // const signer = setupTest("solauto-manager");
47
+ // const signer = setupTest();
48
+ const signer = setupTest("solauto-manager");
61
49
 
62
- const payForTransactions = false;
63
- const testProgram = true;
64
- const positionId = 1;
50
+ const payForTransactions = true;
51
+ const testProgram = false;
52
+ const positionId = 3;
65
53
 
66
54
  it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
67
55
  const client = new SolautoMarginfiClient(
@@ -74,38 +62,18 @@ describe("Solauto Marginfi tests", async () => {
74
62
  const supplyDecimals = 6;
75
63
  const debtDecimals = 6;
76
64
 
77
- // await client.initialize({
78
- // signer,
79
- // positionId,
80
- // // authority: new PublicKey("FKYQs7KgRvaKQHxXwb8HKfoBcFdSxLL3JvHWpPdVQ16v"),
81
- // // new: true,
82
- // // marginfiAccount: new PublicKey(
83
- // // ""
84
- // // ),
85
- // // marginfiGroup: new PublicKey(""),
86
- // // supplyMint: new PublicKey(""),
87
- // // debtMint: new PublicKey(USDC),
88
- // });
89
-
90
- const tokenAccounts = (
91
- await client.connection.getTokenAccountsByOwner(
92
- new PublicKey("He4ka5Q3N1UvZikZvykdi47xyk5PoVP2tcQL5sVp31Sz"),
93
- { programId: TOKEN_PROGRAM_ID },
94
- { commitment: "confirmed" }
95
- )
96
- ).value;
97
-
98
- const tokenAccountsData = tokenAccounts
99
- .map(
100
- (x) => SplTokenAccountLayout.decode(x.account.data) as TokenAccountData
101
- )
102
- .filter((x) => Boolean(x));
103
-
104
- console.log(tokenAccountsData);
105
- console.log(tokenAccountsData.length);
106
-
107
- console.log(await fetchTokenPrices(tokenAccountsData.map((x) => x.mint)));
108
- return;
65
+ await client.initialize({
66
+ signer,
67
+ positionId,
68
+ authority: new PublicKey("EBhRj7jbF2EVE21i19JSuCX1BAbnZFYhoKW64HnaZ3kf"),
69
+ // new: true,
70
+ // marginfiAccount: new PublicKey(
71
+ // ""
72
+ // ),
73
+ // marginfiGroup: new PublicKey(""),
74
+ // supplyMint: new PublicKey(""),
75
+ // debtMint: new PublicKey(USDC),
76
+ });
109
77
 
110
78
  const transactionItems: TransactionItem[] = [];
111
79
  // const settingParams: SolautoSettingsParametersInpArgs = {
@@ -177,7 +145,7 @@ describe("Solauto Marginfi tests", async () => {
177
145
  transactionItems.push(
178
146
  new TransactionItem(
179
147
  async (attemptNum) =>
180
- await buildSolautoRebalanceTransaction(client, 2000, attemptNum),
148
+ await buildSolautoRebalanceTransaction(client, undefined, attemptNum),
181
149
  "rebalance"
182
150
  )
183
151
  );
@@ -17,6 +17,9 @@ import {
17
17
  TokenType,
18
18
  } from "../../src/generated";
19
19
  import {
20
+ calcDebtUsd,
21
+ calcNetWorthUsd,
22
+ calcSupplyUsd,
20
23
  fromBaseUnit,
21
24
  fromBps,
22
25
  getLiqUtilzationRateBps,
@@ -66,10 +69,7 @@ function assertAccurateRebalance(
66
69
  adjustmentFeeBps = getSolautoFeesBps(
67
70
  client.referredBy !== undefined,
68
71
  targetLiqUtilizationRateBps,
69
- fromBaseUnit(
70
- client.solautoPositionState?.netWorth.baseAmountUsdValue ?? BigInt(0),
71
- USD_DECIMALS
72
- ),
72
+ calcNetWorthUsd(client.solautoPositionState),
73
73
  rebalanceDirection
74
74
  ).total;
75
75
 
@@ -81,17 +81,10 @@ function assertAccurateRebalance(
81
81
  );
82
82
 
83
83
  const newSupply =
84
- fromBaseUnit(
85
- client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
86
- USD_DECIMALS
87
- ) +
84
+ calcSupplyUsd(client.solautoPositionState) +
88
85
  (debtAdjustmentUsd - debtAdjustmentUsd * fromBps(adjustmentFeeBps)) +
89
86
  amountUsdToDcaIn;
90
- const newDebt =
91
- fromBaseUnit(
92
- client.solautoPositionState!.debt.amountUsed.baseAmountUsdValue,
93
- USD_DECIMALS
94
- ) + debtAdjustmentUsd;
87
+ const newDebt = calcDebtUsd(client.solautoPositionState) + debtAdjustmentUsd;
95
88
 
96
89
  const newLiqUtilizationRateBps = getLiqUtilzationRateBps(
97
90
  newSupply,