@haven-fi/solauto-sdk 1.0.537 → 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.
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +1 -2
- package/dist/utils/numberUtils.d.ts +9 -1
- package/dist/utils/numberUtils.d.ts.map +1 -1
- package/dist/utils/numberUtils.js +32 -0
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/generalUtils.js +4 -6
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +6 -11
- package/local/logPositions.ts +6 -12
- package/package.json +1 -1
- package/src/utils/marginfiUtils.ts +2 -11
- package/src/utils/numberUtils.ts +58 -2
- package/src/utils/solauto/generalUtils.ts +8 -14
- package/src/utils/solauto/rebalanceUtils.ts +10 -27
- package/tests/transactions/solautoMarginfi.ts +1 -1
- package/tests/unit/rebalanceCalculations.ts +6 -13
@@ -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;
|
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.
|
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;
|
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":"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;
|
1
|
+
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
|
@@ -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.
|
100
|
-
const supplyDepositable = (0, numberUtils_1.
|
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.
|
281
|
-
|
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;
|
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.
|
106
|
-
|
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.
|
130
|
-
|
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.
|
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.
|
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
|
package/local/logPositions.ts
CHANGED
@@ -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(
|
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) =>
|
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
@@ -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),
|
package/src/utils/numberUtils.ts
CHANGED
@@ -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,
|
@@ -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 =
|
185
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
233
|
-
|
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
|
-
|
270
|
-
|
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
|
-
|
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 =
|
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 =
|
@@ -65,7 +65,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
65
65
|
await client.initialize({
|
66
66
|
signer,
|
67
67
|
positionId,
|
68
|
-
authority: new PublicKey("
|
68
|
+
authority: new PublicKey("EBhRj7jbF2EVE21i19JSuCX1BAbnZFYhoKW64HnaZ3kf"),
|
69
69
|
// new: true,
|
70
70
|
// marginfiAccount: new PublicKey(
|
71
71
|
// ""
|
@@ -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
|
-
|
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
|
-
|
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,
|