@haven-fi/solauto-sdk 1.0.674 → 1.0.676
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/services/rebalance/rebalanceTxBuilder.d.ts +2 -0
- package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -1
- package/dist/services/rebalance/rebalanceTxBuilder.js +23 -5
- package/dist/services/solauto/referralStateManager.d.ts +1 -1
- package/dist/services/solauto/referralStateManager.d.ts.map +1 -1
- package/dist/services/solauto/referralStateManager.js +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts +1 -0
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.js +1 -0
- package/dist/solautoPosition/solautoPositionEx.d.ts +1 -0
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/solautoPositionEx.js +1 -2
- package/dist/utils/solautoUtils.d.ts +2 -0
- package/dist/utils/solautoUtils.d.ts.map +1 -1
- package/dist/utils/solautoUtils.js +7 -2
- package/local/txSandbox.ts +2 -2
- package/package.json +1 -1
- package/src/services/rebalance/rebalanceTxBuilder.ts +51 -9
- package/src/services/solauto/referralStateManager.ts +1 -1
- package/src/solautoPosition/marginfiSolautoPositionEx.ts +1 -0
- package/src/solautoPosition/solautoPositionEx.ts +2 -2
- package/src/utils/solautoUtils.ts +18 -4
@@ -8,10 +8,12 @@ export declare class RebalanceTxBuilder {
|
|
8
8
|
private swapManager;
|
9
9
|
private flRequirements?;
|
10
10
|
private priceType;
|
11
|
+
private flFeeBps?;
|
11
12
|
constructor(client: SolautoClient, targetLiqUtilizationRateBps?: number | undefined);
|
12
13
|
private shouldProceedWithRebalance;
|
13
14
|
private getRebalanceValues;
|
14
15
|
private getFlLiquiditySource;
|
16
|
+
private intermediaryLiqUtilizationRateBps;
|
15
17
|
private flashLoanRequirements;
|
16
18
|
private getFlashLoanDetails;
|
17
19
|
private setRebalanceType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAgCrB,qBAAa,kBAAkB;IAS3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IATtC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAGhB,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;IAyC5B,OAAO,CAAC,iCAAiC;YAgC3B,qBAAqB;IA0CnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,yBAAyB;YAqBnB,mBAAmB;YAwBnB,sBAAsB;YAyBtB,mBAAmB;IAmEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
|
@@ -23,8 +23,8 @@ class RebalanceTxBuilder {
|
|
23
23
|
(this.targetLiqUtilizationRateBps !== undefined ||
|
24
24
|
this.client.pos.eligibleForRebalance()));
|
25
25
|
}
|
26
|
-
getRebalanceValues(
|
27
|
-
return (0, rebalanceValues_1.getRebalanceValues)(this.client.pos, this.priceType, this.targetLiqUtilizationRateBps, solautoFees_1.SolautoFeesBps.create(this.client.isReferred
|
26
|
+
getRebalanceValues() {
|
27
|
+
return (0, rebalanceValues_1.getRebalanceValues)(this.client.pos, this.priceType, this.targetLiqUtilizationRateBps, solautoFees_1.SolautoFeesBps.create(this.client.isReferred, this.targetLiqUtilizationRateBps, this.client.pos.netWorthUsd(this.priceType)), this.flRequirements?.flFeeBps ?? 0);
|
28
28
|
}
|
29
29
|
getFlLiquiditySource(supplyLiquidityAvailable, debtLiquidityAvailable) {
|
30
30
|
const debtAdjustmentUsd = Math.abs(this.values.debtAdjustmentUsd);
|
@@ -45,9 +45,27 @@ class RebalanceTxBuilder {
|
|
45
45
|
return !insufficientSupplyLiquidity ? generated_1.TokenType.Supply : undefined;
|
46
46
|
}
|
47
47
|
}
|
48
|
+
intermediaryLiqUtilizationRateBps() {
|
49
|
+
if (this.client.pos.maxLtvPriceType !== generated_1.PriceType.Ema ||
|
50
|
+
this.priceType === generated_1.PriceType.Ema ||
|
51
|
+
this.values.rebalanceDirection === generated_1.RebalanceDirection.Repay) {
|
52
|
+
return this.values.intermediaryLiqUtilizationRateBps;
|
53
|
+
}
|
54
|
+
const fees = new solautoFees_1.SolautoFeesBps(this.client.isReferred, this.targetLiqUtilizationRateBps, this.client.pos.netWorthUsd(generated_1.PriceType.Realtime));
|
55
|
+
const { intermediaryLiqUtilizationRateBps } = (0, rebalanceValues_1.applyDebtAdjustmentUsd)(this.values.debtAdjustmentUsd, {
|
56
|
+
supplyUsd: this.client.pos.supplyUsd(generated_1.PriceType.Ema),
|
57
|
+
debtUsd: this.client.pos.debtUsd(generated_1.PriceType.Ema),
|
58
|
+
}, (0, utils_1.fromBps)(this.client.pos.state.liqThresholdBps), {
|
59
|
+
solauto: fees.getSolautoFeesBps(this.values.rebalanceDirection).total,
|
60
|
+
lpBorrow: this.client.pos.state.debt.borrowFeeBps,
|
61
|
+
flashLoan: this.flRequirements?.flFeeBps ?? 0,
|
62
|
+
});
|
63
|
+
return intermediaryLiqUtilizationRateBps;
|
64
|
+
}
|
48
65
|
async flashLoanRequirements(attemptNum) {
|
49
|
-
const
|
50
|
-
|
66
|
+
const intermediaryLiqUtilizationRateBps = this.intermediaryLiqUtilizationRateBps();
|
67
|
+
const maxLtvRateBps = (0, utils_1.getMaxLiqUtilizationRateBps)(this.client.pos.state.maxLtvBps, this.client.pos.state.liqThresholdBps, 0.005);
|
68
|
+
if (intermediaryLiqUtilizationRateBps < maxLtvRateBps) {
|
51
69
|
return undefined;
|
52
70
|
}
|
53
71
|
const stdFlLiquiditySource = this.getFlLiquiditySource(this.client.flProvider.liquidityAvailable(generated_1.TokenType.Supply), this.client.flProvider.liquidityAvailable(generated_1.TokenType.Debt));
|
@@ -139,7 +157,7 @@ class RebalanceTxBuilder {
|
|
139
157
|
this.values = rebalanceValues;
|
140
158
|
this.flRequirements = await this.flashLoanRequirements(attemptNum);
|
141
159
|
if (this.flRequirements?.flFeeBps) {
|
142
|
-
this.values = this.getRebalanceValues(
|
160
|
+
this.values = this.getRebalanceValues();
|
143
161
|
}
|
144
162
|
this.swapManager = new rebalanceSwapManager_1.RebalanceSwapManager(this.client, this.values, this.flRequirements, this.targetLiqUtilizationRateBps);
|
145
163
|
await this.swapManager.setSwapParams(attemptNum);
|
@@ -18,7 +18,7 @@ export declare class ReferralStateManager extends TxHandler {
|
|
18
18
|
defaultLookupTables(): string[];
|
19
19
|
refetchReferralState(): Promise<void>;
|
20
20
|
setReferredBy(referredBy?: PublicKey): void;
|
21
|
-
isReferred(): boolean;
|
21
|
+
get isReferred(): boolean;
|
22
22
|
updateReferralStatesIx(destFeesMint?: PublicKey, lookupTable?: PublicKey): TransactionBuilder;
|
23
23
|
claimReferralFeesIx(): TransactionBuilder;
|
24
24
|
resetLiveTxUpdates(success?: boolean): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"referralStateManager.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/referralStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAa,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAEL,aAAa,EAGd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC1C,GAAG,EAAG,GAAG,CAAC;IAEV,aAAa,EAAG,SAAS,CAAC;IAC1B,iBAAiB,EAAG,aAAa,GAAG,IAAI,CAAC;IACzC,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAE7B,UAAU,CAAC,IAAI,EAAE,wBAAwB;IAoB/C,mBAAmB,IAAI,MAAM,EAAE;IASzB,oBAAoB;IAQ1B,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS;IAsBpC,UAAU,IAAI,OAAO;
|
1
|
+
{"version":3,"file":"referralStateManager.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/referralStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAa,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAEL,aAAa,EAGd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC1C,GAAG,EAAG,GAAG,CAAC;IAEV,aAAa,EAAG,SAAS,CAAC;IAC1B,iBAAiB,EAAG,aAAa,GAAG,IAAI,CAAC;IACzC,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAE7B,UAAU,CAAC,IAAI,EAAE,wBAAwB;IAoB/C,mBAAmB,IAAI,MAAM,EAAE;IASzB,oBAAoB;IAQ1B,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS;IAsBpC,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,sBAAsB,CACpB,YAAY,CAAC,EAAE,SAAS,EACxB,WAAW,CAAC,EAAE,SAAS,GACtB,kBAAkB;IAerB,mBAAmB,IAAI,kBAAkB;IA0BnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAC3D"}
|
@@ -48,7 +48,7 @@ class ReferralStateManager extends txHandler_1.TxHandler {
|
|
48
48
|
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.referredByState)
|
49
49
|
: undefined;
|
50
50
|
}
|
51
|
-
isReferred() {
|
51
|
+
get isReferred() {
|
52
52
|
return Boolean(this.referredByState);
|
53
53
|
}
|
54
54
|
updateReferralStatesIx(destFeesMint, lookupTable) {
|
@@ -4,6 +4,7 @@ import { SolautoPositionEx } from "./solautoPositionEx";
|
|
4
4
|
import { LendingPlatform, PriceType } from "../generated";
|
5
5
|
export declare class MarginfiSolautoPositionEx extends SolautoPositionEx {
|
6
6
|
lendingPlatform: LendingPlatform;
|
7
|
+
maxLtvPriceType: PriceType;
|
7
8
|
private supplyBank;
|
8
9
|
private debtBank;
|
9
10
|
getBanks(): Promise<Bank[]>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marginfiSolautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/marginfiSolautoPositionEx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAoB,MAAM,iBAAiB,CAAC;AAezD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,eAAe,kBAA4B;
|
1
|
+
{"version":3,"file":"marginfiSolautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/marginfiSolautoPositionEx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAoB,MAAM,iBAAiB,CAAC;AAezD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,eAAe,kBAA4B;IAC3C,eAAe,YAAiB;IAEhC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IAE/B,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAgB3B,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IASpC,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa3D,OAAO,CAAC,6BAA6B;IAwBrC,gCAAgC,CAAC,KAAK,EAAE,IAAI,EAAE;IAK9C,4BAA4B,CAAC,KAAK,EAAE,IAAI,EAAE;IAQ1C,IAAI,wBAAwB,IAAI,MAAM,CAKrC;IAEK,oBAAoB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBjE"}
|
@@ -11,6 +11,7 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
11
11
|
constructor() {
|
12
12
|
super(...arguments);
|
13
13
|
this.lendingPlatform = generated_1.LendingPlatform.Marginfi;
|
14
|
+
this.maxLtvPriceType = generated_1.PriceType.Ema;
|
14
15
|
this.supplyBank = null;
|
15
16
|
this.debtBank = null;
|
16
17
|
}
|
@@ -42,6 +42,7 @@ export declare abstract class SolautoPositionEx {
|
|
42
42
|
private _supplyPrice?;
|
43
43
|
private _debtPrice?;
|
44
44
|
rebalance: PositionRebalanceHelper;
|
45
|
+
maxLtvPriceType: PriceType;
|
45
46
|
constructor(args: PositionExArgs);
|
46
47
|
get exists(): boolean;
|
47
48
|
get selfManaged(): boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAK/C,OAAO,EAEL,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,EACf,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAOL,cAAc,EAkBf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,UAAU,qBAAsB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC9D,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,8BAAsB,iBAAiB;IAC9B,GAAG,EAAG,GAAG,CAAC;IACjB,SAAS,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEnC,SAAS,EAAG,SAAS,CAAC;IACtB,eAAe,EAAG,eAAe,CAAC;IAClC,UAAU,EAAG,MAAM,CAAC;IACpB,SAAS,EAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,SAAS,CAAa;IAC7C,SAAS,CAAC,KAAK,EAAG,UAAU,CAAC;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAY;IAChC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,SAAS,CAAC,KAAK,EAAG,qBAAqB,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAE5C,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAS;IAErB,SAAS,EAAG,uBAAuB,CAAC;
|
1
|
+
{"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
|
@@ -216,8 +216,7 @@ class PositionRebalanceHelper {
|
|
216
216
|
return true;
|
217
217
|
}
|
218
218
|
validRealtimePricesBoost(debtAdjustmentUsd) {
|
219
|
-
if (this.pos.
|
220
|
-
// TODO: LP
|
219
|
+
if (this.pos.maxLtvPriceType !== generated_1.PriceType.Ema) {
|
221
220
|
return true;
|
222
221
|
}
|
223
222
|
const postRebalanceLiqUtilRate = (0, utils_1.getLiqUtilzationRateBps)((0, utils_1.realtimeUsdToEmaUsd)(this.pos.supplyUsd() + debtAdjustmentUsd, this.pos.supplyMint), (0, utils_1.realtimeUsdToEmaUsd)(this.pos.debtUsd() + debtAdjustmentUsd, this.pos.debtMint), this.pos.state.liqThresholdBps);
|
@@ -4,6 +4,7 @@ import { QuoteResponse } from "@jup-ag/api";
|
|
4
4
|
import { AutomationSettings, DCASettings, DCASettingsInpArgs, LendingPlatform, PositionState, PositionType, SolautoRebalanceType, SolautoSettingsParameters, SolautoSettingsParametersInpArgs, TokenType } from "../generated";
|
5
5
|
import { SolautoPositionDetails } from "../types";
|
6
6
|
import { SolautoClient, SolautoMarginfiClient, TxHandlerProps } from "../services";
|
7
|
+
import { MarginfiSolautoPositionEx, SolautoPositionEx } from "../solautoPosition";
|
7
8
|
export declare function createDynamicSolautoProgram(programId?: PublicKey): Program;
|
8
9
|
export declare function nextAutomationPeriodTimestamp(automation: AutomationSettings): number;
|
9
10
|
export declare function eligibleForNextAutomationPeriod(automation: AutomationSettings, currentUnixTime: number): boolean;
|
@@ -55,6 +56,7 @@ export declare class ContextUpdates {
|
|
55
56
|
}
|
56
57
|
export declare function getClient(lendingPlatform: LendingPlatform, txHandlerProps: TxHandlerProps): SolautoMarginfiClient;
|
57
58
|
export declare function isMarginfiClient(client: SolautoClient): client is SolautoMarginfiClient;
|
59
|
+
export declare function isMarginfiPosition(pos: SolautoPositionEx): pos is MarginfiSolautoPositionEx;
|
58
60
|
export declare function hasFirstRebalance(rebalanceType: SolautoRebalanceType): boolean;
|
59
61
|
export declare function hasLastRebalance(rebalanceType: SolautoRebalanceType): boolean;
|
60
62
|
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solautoUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,gCAAgC,EAChC,SAAS,EAMV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,cAAc,EACf,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"solautoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solautoUtils.ts"],"names":[],"mappings":"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"}
|
@@ -12,6 +12,7 @@ exports.getAllPositionsByAuthority = getAllPositionsByAuthority;
|
|
12
12
|
exports.positionStateWithLatestPrices = positionStateWithLatestPrices;
|
13
13
|
exports.getClient = getClient;
|
14
14
|
exports.isMarginfiClient = isMarginfiClient;
|
15
|
+
exports.isMarginfiPosition = isMarginfiPosition;
|
15
16
|
exports.hasFirstRebalance = hasFirstRebalance;
|
16
17
|
exports.hasLastRebalance = hasLastRebalance;
|
17
18
|
const umi_1 = require("@metaplex-foundation/umi");
|
@@ -318,13 +319,17 @@ function getClient(lendingPlatform, txHandlerProps) {
|
|
318
319
|
}
|
319
320
|
else {
|
320
321
|
throw new Error("Lending platform not yet supported");
|
321
|
-
// TODO:
|
322
|
+
// TODO: LP
|
322
323
|
}
|
323
324
|
}
|
325
|
+
// TODO: LP
|
324
326
|
function isMarginfiClient(client) {
|
325
327
|
return client.lendingPlatform === generated_1.LendingPlatform.Marginfi;
|
326
328
|
}
|
327
|
-
// TODO:
|
329
|
+
// TODO: LP
|
330
|
+
function isMarginfiPosition(pos) {
|
331
|
+
return pos.lendingPlatform === generated_1.LendingPlatform.Marginfi;
|
332
|
+
}
|
328
333
|
function hasFirstRebalance(rebalanceType) {
|
329
334
|
return [
|
330
335
|
generated_1.SolautoRebalanceType.Regular,
|
package/local/txSandbox.ts
CHANGED
@@ -47,8 +47,8 @@ export async function main() {
|
|
47
47
|
});
|
48
48
|
|
49
49
|
await client.initialize({
|
50
|
-
positionId:
|
51
|
-
authority: new PublicKey("
|
50
|
+
positionId: 1,
|
51
|
+
authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
|
52
52
|
// lpUserAccount: new PublicKey(
|
53
53
|
// "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
|
54
54
|
// ),
|
package/package.json
CHANGED
@@ -10,7 +10,7 @@ import {
|
|
10
10
|
import {
|
11
11
|
consoleLog,
|
12
12
|
fromBaseUnit,
|
13
|
-
|
13
|
+
fromBps,
|
14
14
|
getMaxLiqUtilizationRateBps,
|
15
15
|
getTokenAccount,
|
16
16
|
hasFirstRebalance,
|
@@ -20,6 +20,7 @@ import {
|
|
20
20
|
tokenInfo,
|
21
21
|
} from "../../utils";
|
22
22
|
import {
|
23
|
+
LendingPlatform,
|
23
24
|
PositionTokenState,
|
24
25
|
PriceType,
|
25
26
|
RebalanceDirection,
|
@@ -29,7 +30,11 @@ import {
|
|
29
30
|
TokenBalanceChangeType,
|
30
31
|
TokenType,
|
31
32
|
} from "../../generated";
|
32
|
-
import {
|
33
|
+
import {
|
34
|
+
applyDebtAdjustmentUsd,
|
35
|
+
getRebalanceValues,
|
36
|
+
RebalanceValues,
|
37
|
+
} from "./rebalanceValues";
|
33
38
|
import { SolautoFeesBps } from "./solautoFees";
|
34
39
|
import { RebalanceSwapManager } from "./rebalanceSwapManager";
|
35
40
|
|
@@ -39,6 +44,7 @@ export class RebalanceTxBuilder {
|
|
39
44
|
private swapManager!: RebalanceSwapManager;
|
40
45
|
private flRequirements?: FlashLoanRequirements;
|
41
46
|
private priceType: PriceType = PriceType.Realtime;
|
47
|
+
private flFeeBps?: number;
|
42
48
|
|
43
49
|
constructor(
|
44
50
|
private client: SolautoClient,
|
@@ -47,7 +53,9 @@ export class RebalanceTxBuilder {
|
|
47
53
|
|
48
54
|
private shouldProceedWithRebalance() {
|
49
55
|
if (this.client.pos.selfManaged && !this.targetLiqUtilizationRateBps) {
|
50
|
-
throw new Error(
|
56
|
+
throw new Error(
|
57
|
+
"A target rate must be provided for self managed position rebalances"
|
58
|
+
);
|
51
59
|
}
|
52
60
|
|
53
61
|
return (
|
@@ -57,17 +65,17 @@ export class RebalanceTxBuilder {
|
|
57
65
|
);
|
58
66
|
}
|
59
67
|
|
60
|
-
private getRebalanceValues(
|
68
|
+
private getRebalanceValues() {
|
61
69
|
return getRebalanceValues(
|
62
70
|
this.client.pos,
|
63
71
|
this.priceType,
|
64
72
|
this.targetLiqUtilizationRateBps,
|
65
73
|
SolautoFeesBps.create(
|
66
|
-
this.client.isReferred
|
74
|
+
this.client.isReferred,
|
67
75
|
this.targetLiqUtilizationRateBps,
|
68
76
|
this.client.pos.netWorthUsd(this.priceType)
|
69
77
|
),
|
70
|
-
|
78
|
+
this.flRequirements?.flFeeBps ?? 0
|
71
79
|
);
|
72
80
|
}
|
73
81
|
|
@@ -112,15 +120,49 @@ export class RebalanceTxBuilder {
|
|
112
120
|
}
|
113
121
|
}
|
114
122
|
|
123
|
+
private intermediaryLiqUtilizationRateBps() {
|
124
|
+
if (
|
125
|
+
this.client.pos.maxLtvPriceType !== PriceType.Ema ||
|
126
|
+
this.priceType === PriceType.Ema ||
|
127
|
+
this.values.rebalanceDirection === RebalanceDirection.Repay
|
128
|
+
) {
|
129
|
+
return this.values.intermediaryLiqUtilizationRateBps;
|
130
|
+
}
|
131
|
+
|
132
|
+
const fees = new SolautoFeesBps(
|
133
|
+
this.client.isReferred,
|
134
|
+
this.targetLiqUtilizationRateBps,
|
135
|
+
this.client.pos.netWorthUsd(PriceType.Realtime)
|
136
|
+
);
|
137
|
+
|
138
|
+
const { intermediaryLiqUtilizationRateBps } = applyDebtAdjustmentUsd(
|
139
|
+
this.values.debtAdjustmentUsd,
|
140
|
+
{
|
141
|
+
supplyUsd: this.client.pos.supplyUsd(PriceType.Ema),
|
142
|
+
debtUsd: this.client.pos.debtUsd(PriceType.Ema),
|
143
|
+
},
|
144
|
+
fromBps(this.client.pos.state.liqThresholdBps),
|
145
|
+
{
|
146
|
+
solauto: fees.getSolautoFeesBps(this.values.rebalanceDirection).total,
|
147
|
+
lpBorrow: this.client.pos.state.debt.borrowFeeBps,
|
148
|
+
flashLoan: this.flRequirements?.flFeeBps ?? 0,
|
149
|
+
}
|
150
|
+
);
|
151
|
+
|
152
|
+
return intermediaryLiqUtilizationRateBps;
|
153
|
+
}
|
154
|
+
|
115
155
|
private async flashLoanRequirements(
|
116
156
|
attemptNum: number
|
117
157
|
): Promise<FlashLoanRequirements | undefined> {
|
158
|
+
const intermediaryLiqUtilizationRateBps =
|
159
|
+
this.intermediaryLiqUtilizationRateBps();
|
118
160
|
const maxLtvRateBps = getMaxLiqUtilizationRateBps(
|
119
161
|
this.client.pos.state.maxLtvBps,
|
120
162
|
this.client.pos.state.liqThresholdBps,
|
121
|
-
0.
|
163
|
+
0.005
|
122
164
|
);
|
123
|
-
if (
|
165
|
+
if (intermediaryLiqUtilizationRateBps < maxLtvRateBps) {
|
124
166
|
return undefined;
|
125
167
|
}
|
126
168
|
|
@@ -237,7 +279,7 @@ export class RebalanceTxBuilder {
|
|
237
279
|
|
238
280
|
this.flRequirements = await this.flashLoanRequirements(attemptNum);
|
239
281
|
if (this.flRequirements?.flFeeBps) {
|
240
|
-
this.values = this.getRebalanceValues(
|
282
|
+
this.values = this.getRebalanceValues()!;
|
241
283
|
}
|
242
284
|
|
243
285
|
this.swapManager = new RebalanceSwapManager(
|
@@ -19,6 +19,7 @@ import { LendingPlatform, PriceType } from "../generated";
|
|
19
19
|
|
20
20
|
export class MarginfiSolautoPositionEx extends SolautoPositionEx {
|
21
21
|
lendingPlatform = LendingPlatform.Marginfi;
|
22
|
+
maxLtvPriceType = PriceType.Ema;
|
22
23
|
|
23
24
|
private supplyBank: Bank | null = null;
|
24
25
|
private debtBank: Bank | null = null;
|
@@ -91,6 +91,7 @@ export abstract class SolautoPositionEx {
|
|
91
91
|
private _debtPrice?: number;
|
92
92
|
|
93
93
|
public rebalance!: PositionRebalanceHelper;
|
94
|
+
public maxLtvPriceType!: PriceType;
|
94
95
|
|
95
96
|
constructor(args: PositionExArgs) {
|
96
97
|
this.umi = args.umi;
|
@@ -436,8 +437,7 @@ class PositionRebalanceHelper {
|
|
436
437
|
}
|
437
438
|
|
438
439
|
validRealtimePricesBoost(debtAdjustmentUsd: number) {
|
439
|
-
if (this.pos.
|
440
|
-
// TODO: LP
|
440
|
+
if (this.pos.maxLtvPriceType !== PriceType.Ema) {
|
441
441
|
return true;
|
442
442
|
}
|
443
443
|
|
@@ -26,7 +26,11 @@ import {
|
|
26
26
|
SolautoMarginfiClient,
|
27
27
|
TxHandlerProps,
|
28
28
|
} from "../services";
|
29
|
-
import {
|
29
|
+
import {
|
30
|
+
createSolautoSettings,
|
31
|
+
MarginfiSolautoPositionEx,
|
32
|
+
SolautoPositionEx,
|
33
|
+
} from "../solautoPosition";
|
30
34
|
import { getReferralState } from "./accountUtils";
|
31
35
|
import {
|
32
36
|
calcTotalDebt,
|
@@ -38,7 +42,10 @@ import {
|
|
38
42
|
} from "./numberUtils";
|
39
43
|
import { fetchTokenPrices } from "./priceUtils";
|
40
44
|
import { validPubkey } from "./generalUtils";
|
41
|
-
import {
|
45
|
+
import {
|
46
|
+
findMarginfiAccounts,
|
47
|
+
getAllMarginfiAccountsByAuthority,
|
48
|
+
} from "./marginfi";
|
42
49
|
|
43
50
|
export function createDynamicSolautoProgram(programId?: PublicKey): Program {
|
44
51
|
return {
|
@@ -440,16 +447,23 @@ export function getClient(
|
|
440
447
|
return new SolautoMarginfiClient(txHandlerProps);
|
441
448
|
} else {
|
442
449
|
throw new Error("Lending platform not yet supported");
|
443
|
-
// TODO:
|
450
|
+
// TODO: LP
|
444
451
|
}
|
445
452
|
}
|
446
453
|
|
454
|
+
// TODO: LP
|
447
455
|
export function isMarginfiClient(
|
448
456
|
client: SolautoClient
|
449
457
|
): client is SolautoMarginfiClient {
|
450
458
|
return client.lendingPlatform === LendingPlatform.Marginfi;
|
451
459
|
}
|
452
|
-
|
460
|
+
|
461
|
+
// TODO: LP
|
462
|
+
export function isMarginfiPosition(
|
463
|
+
pos: SolautoPositionEx
|
464
|
+
): pos is MarginfiSolautoPositionEx {
|
465
|
+
return pos.lendingPlatform === LendingPlatform.Marginfi;
|
466
|
+
}
|
453
467
|
|
454
468
|
export function hasFirstRebalance(rebalanceType: SolautoRebalanceType) {
|
455
469
|
return [
|