@haven-fi/solauto-sdk 1.0.634 → 1.0.635
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.map +1 -1
- package/dist/services/rebalance/rebalanceTxBuilder.js +16 -5
- package/dist/services/rebalance/rebalanceValues.d.ts +1 -1
- package/dist/services/rebalance/rebalanceValues.d.ts.map +1 -1
- package/dist/services/rebalance/rebalanceValues.js +4 -1
- package/dist/services/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/services/transactions/transactionUtils.js +0 -8
- package/dist/solautoPosition/solautoPositionEx.d.ts +1 -1
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/solautoPositionEx.js +3 -0
- package/local/txSandbox.ts +28 -32
- package/package.json +1 -1
- package/src/services/rebalance/rebalanceTxBuilder.ts +19 -8
- package/src/services/rebalance/rebalanceValues.ts +6 -3
- package/src/services/transactions/transactionUtils.ts +0 -9
- package/src/solautoPosition/solautoPositionEx.ts +5 -1
@@ -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;AA0BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IARtC,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,
|
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;AA0BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IARtC,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;gBAGxC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAyCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,mBAAmB;YAOb,mBAAmB;YA4CnB,sBAAsB;YAyBtB,mBAAmB;IAkEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
|
@@ -13,6 +13,7 @@ class RebalanceTxBuilder {
|
|
13
13
|
constructor(client, targetLiqUtilizationRateBps) {
|
14
14
|
this.client = client;
|
15
15
|
this.targetLiqUtilizationRateBps = targetLiqUtilizationRateBps;
|
16
|
+
this.priceType = generated_1.PriceType.Realtime;
|
16
17
|
}
|
17
18
|
shouldProceedWithRebalance() {
|
18
19
|
return (this.client.pos.supplyUsd() > 0 &&
|
@@ -118,13 +119,19 @@ class RebalanceTxBuilder {
|
|
118
119
|
(0, utils_1.safeGetPrice)(mint, generated_1.PriceType.Ema));
|
119
120
|
}
|
120
121
|
async setRebalanceDetails(attemptNum) {
|
121
|
-
|
122
|
-
|
123
|
-
|
122
|
+
let rebalanceValues = this.getRebalanceValues();
|
123
|
+
if (!rebalanceValues) {
|
124
|
+
return false;
|
125
|
+
}
|
126
|
+
const postRebalanceEmaUtilRateBps = (0, utils_1.getLiqUtilzationRateBps)(this.realtimeUsdToEmaUsd(rebalanceValues.endResult.supplyUsd, this.client.pos.supplyMint), this.realtimeUsdToEmaUsd(rebalanceValues.endResult.debtUsd, this.client.pos.debtMint), this.client.pos.state.liqThresholdBps);
|
124
127
|
if (postRebalanceEmaUtilRateBps > this.client.pos.maxBoostToBps) {
|
125
128
|
this.priceType = generated_1.PriceType.Ema;
|
126
|
-
|
129
|
+
rebalanceValues = this.getRebalanceValues();
|
130
|
+
if (!rebalanceValues) {
|
131
|
+
return false;
|
132
|
+
}
|
127
133
|
}
|
134
|
+
this.values = rebalanceValues;
|
128
135
|
this.flRequirements = await this.flashLoanRequirements(attemptNum);
|
129
136
|
if (this.flRequirements?.flFeeBps) {
|
130
137
|
this.values = this.getRebalanceValues(this.flRequirements.flFeeBps);
|
@@ -132,6 +139,7 @@ class RebalanceTxBuilder {
|
|
132
139
|
this.swapManager = new rebalanceSwapManager_1.RebalanceSwapManager(this.client, this.values, this.flRequirements, this.targetLiqUtilizationRateBps);
|
133
140
|
await this.swapManager.setSwapParams(attemptNum);
|
134
141
|
this.setRebalanceType();
|
142
|
+
return true;
|
135
143
|
}
|
136
144
|
async refreshBeforeRebalance() {
|
137
145
|
if (this.client.selfManaged ||
|
@@ -200,7 +208,10 @@ class RebalanceTxBuilder {
|
|
200
208
|
this.client.log("Not eligible for a rebalance");
|
201
209
|
return undefined;
|
202
210
|
}
|
203
|
-
await this.setRebalanceDetails(attemptNum);
|
211
|
+
const proceed = await this.setRebalanceDetails(attemptNum);
|
212
|
+
if (!proceed) {
|
213
|
+
return undefined;
|
214
|
+
}
|
204
215
|
return await this.assembleTransaction();
|
205
216
|
}
|
206
217
|
}
|
@@ -26,6 +26,6 @@ export interface RebalanceValues extends DebtAdjustment {
|
|
26
26
|
tokenBalanceChange?: TokenBalanceChange;
|
27
27
|
repayingCloseToMaxLtv: boolean;
|
28
28
|
}
|
29
|
-
export declare function getRebalanceValues(solautoPosition: SolautoPositionEx, priceType: PriceType, targetLiqUtilizationRateBps?: number, solautoFeeBps?: SolautoFeesBps, flFeeBps?: number): RebalanceValues;
|
29
|
+
export declare function getRebalanceValues(solautoPosition: SolautoPositionEx, priceType: PriceType, targetLiqUtilizationRateBps?: number, solautoFeeBps?: SolautoFeesBps, flFeeBps?: number): RebalanceValues | undefined;
|
30
30
|
export {};
|
31
31
|
//# sourceMappingURL=rebalanceValues.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rebalanceValues.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,iCAAiC,EAAE,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,yBAAyB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,iCAAiC,EAAE,MAAM,CAAC;CAC3C;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,MAAM,EACzB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,gBAAgB,GACtB,yBAAyB,CA8B3B;AAED,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,cAAc,EACnB,2BAA2B,EAAE,MAAM,EACnC,IAAI,CAAC,EAAE,gBAAgB,GACtB,cAAc,CAgChB;AA2ED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,SAAS,EACpB,2BAA2B,CAAC,EAAE,MAAM,EACpC,aAAa,CAAC,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,
|
1
|
+
{"version":3,"file":"rebalanceValues.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,iCAAiC,EAAE,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,yBAAyB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,iCAAiC,EAAE,MAAM,CAAC;CAC3C;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,MAAM,EACzB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,gBAAgB,GACtB,yBAAyB,CA8B3B;AAED,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,cAAc,EACnB,2BAA2B,EAAE,MAAM,EACnC,IAAI,CAAC,EAAE,gBAAgB,GACtB,cAAc,CAgChB;AA2ED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,iBAAiB,EAClC,SAAS,EAAE,SAAS,EACpB,2BAA2B,CAAC,EAAE,MAAM,EACpC,aAAa,CAAC,EAAE,cAAc,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS,CA8C7B"}
|
@@ -67,7 +67,7 @@ function getTargetLiqUtilizationRateBps(solautoPosition, priceType, targetLiqUti
|
|
67
67
|
// else if (tokenBalanceChange !== null) {
|
68
68
|
// return currentRate;
|
69
69
|
// }
|
70
|
-
|
70
|
+
return undefined;
|
71
71
|
}
|
72
72
|
function getAdjustedPositionValues(solautoPosition, priceType, tokenBalanceChange) {
|
73
73
|
let supplyUsd = solautoPosition.supplyUsd(priceType);
|
@@ -100,6 +100,9 @@ function getRebalanceDirection(solautoPosition, targetLtvBps) {
|
|
100
100
|
function getRebalanceValues(solautoPosition, priceType, targetLiqUtilizationRateBps, solautoFeeBps, flFeeBps) {
|
101
101
|
const tokenBalanceChange = getTokenBalanceChange();
|
102
102
|
const targetRate = getTargetLiqUtilizationRateBps(solautoPosition, priceType, targetLiqUtilizationRateBps, tokenBalanceChange);
|
103
|
+
if (targetRate === undefined) {
|
104
|
+
return undefined;
|
105
|
+
}
|
103
106
|
const rebalanceDirection = getRebalanceDirection(solautoPosition, targetRate);
|
104
107
|
const position = getAdjustedPositionValues(solautoPosition, priceType, tokenBalanceChange);
|
105
108
|
const fees = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAiBlC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA2BjE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,aAAa,CAAC;AAwL3E,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAyF7B;AA8LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAuC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAiBlC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA2BjE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,aAAa,CAAC;AAwL3E,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAyF7B;AA8LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAuC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EA8G/B"}
|
@@ -339,14 +339,6 @@ async function convertReferralFeesToDestination(referralManager, tokenAccount, d
|
|
339
339
|
return { tx, lookupTableAddresses };
|
340
340
|
}
|
341
341
|
function getErrorInfo(umi, txs, error, simulationSuccessful) {
|
342
|
-
if (error instanceof generated_1.InvalidRebalanceConditionError) {
|
343
|
-
return {
|
344
|
-
canBeIgnored: true,
|
345
|
-
errorName: generated_1.InvalidRebalanceConditionError.name,
|
346
|
-
errorInfo: new generated_1.InvalidRebalanceConditionError((0, generated_1.createSolautoProgram)())
|
347
|
-
.message,
|
348
|
-
};
|
349
|
-
}
|
350
342
|
let canBeIgnored = false;
|
351
343
|
let errorName = undefined;
|
352
344
|
let errorInfo = undefined;
|
@@ -86,7 +86,7 @@ export declare abstract class SolautoPositionEx {
|
|
86
86
|
supplyPrice?: number;
|
87
87
|
debtPrice?: number;
|
88
88
|
}): Promise<void>;
|
89
|
-
simulateRebalance(unixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number):
|
89
|
+
simulateRebalance(unixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number): undefined;
|
90
90
|
refetchPositionData(): Promise<void>;
|
91
91
|
}
|
92
92
|
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
|
@@ -221,6 +221,9 @@ class SolautoPositionEx {
|
|
221
221
|
simulateRebalance(unixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
|
222
222
|
this._data.state.lastRefreshed = BigInt(unixTime);
|
223
223
|
const rebalance = (0, rebalance_1.getRebalanceValues)(this, generated_1.PriceType.Realtime, targetLiqUtilizationRateBps, rebalance_1.SolautoFeesBps.create(true, targetLiqUtilizationRateBps, this.netWorthUsd));
|
224
|
+
if (!rebalance) {
|
225
|
+
return undefined;
|
226
|
+
}
|
224
227
|
this.updateSupply(rebalance.endResult.supplyUsd, supplyPrice);
|
225
228
|
this.updateDebt(rebalance.endResult.debtUsd, debtPrice);
|
226
229
|
this.updateNetWorth(supplyPrice);
|
package/local/txSandbox.ts
CHANGED
@@ -3,29 +3,28 @@ import { createSignerFromKeypair } from "@metaplex-foundation/umi";
|
|
3
3
|
import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
|
4
4
|
import {
|
5
5
|
consoleLog,
|
6
|
-
fetchTokenPrices,
|
7
6
|
getClient,
|
8
7
|
getSolanaRpcConnection,
|
9
8
|
LendingPlatform,
|
10
9
|
LOCAL_IRONFORGE_API_URL,
|
11
|
-
PriceType,
|
12
10
|
PriorityFeeSetting,
|
11
|
+
ProgramEnv,
|
13
12
|
rebalance,
|
14
|
-
safeGetPrice,
|
15
13
|
SOLAUTO_PROD_PROGRAM,
|
16
14
|
SOLAUTO_TEST_PROGRAM,
|
17
15
|
TransactionsManager,
|
18
16
|
} from "../src";
|
19
17
|
import { getSecretKey } from "./shared";
|
20
|
-
import { NATIVE_MINT } from "@solana/spl-token";
|
21
18
|
|
22
19
|
const payForTransaction = false;
|
23
20
|
const testProgram = true;
|
21
|
+
const lpEnv: ProgramEnv = "Prod";
|
24
22
|
|
25
23
|
export async function main() {
|
26
|
-
|
24
|
+
let [, umi] = getSolanaRpcConnection(
|
27
25
|
LOCAL_IRONFORGE_API_URL,
|
28
|
-
testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM
|
26
|
+
testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
|
27
|
+
lpEnv
|
29
28
|
);
|
30
29
|
|
31
30
|
const signer = createSignerFromKeypair(
|
@@ -33,36 +32,33 @@ export async function main() {
|
|
33
32
|
fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey("solauto-manager")))
|
34
33
|
);
|
35
34
|
|
36
|
-
|
35
|
+
const client = getClient(LendingPlatform.Marginfi, {
|
36
|
+
signer,
|
37
|
+
showLogs: true,
|
38
|
+
rpcUrl: LOCAL_IRONFORGE_API_URL,
|
39
|
+
programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
|
40
|
+
lpEnv,
|
41
|
+
});
|
37
42
|
|
38
|
-
|
43
|
+
await client.initialize({
|
44
|
+
positionId: 3,
|
45
|
+
authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
|
46
|
+
});
|
39
47
|
|
40
|
-
|
41
|
-
// signer,
|
42
|
-
// showLogs: true,
|
43
|
-
// rpcUrl: LOCAL_IRONFORGE_API_URL,
|
44
|
-
// programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
|
45
|
-
// });
|
48
|
+
const transactionItems = [rebalance(client)];
|
46
49
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
// payForTransaction ? "normal" : "only-simulate",
|
58
|
-
// PriorityFeeSetting.Min,
|
59
|
-
// true,
|
60
|
-
// undefined,
|
61
|
-
// { totalRetries: 5 }
|
62
|
-
// );
|
63
|
-
// const statuses = await txManager.clientSend(transactionItems);
|
50
|
+
const txManager = new TransactionsManager(
|
51
|
+
client,
|
52
|
+
undefined,
|
53
|
+
payForTransaction ? "normal" : "only-simulate",
|
54
|
+
PriorityFeeSetting.Min,
|
55
|
+
true,
|
56
|
+
undefined,
|
57
|
+
{ totalRetries: 5 }
|
58
|
+
);
|
59
|
+
const statuses = await txManager.clientSend(transactionItems);
|
64
60
|
|
65
|
-
|
61
|
+
consoleLog(statuses);
|
66
62
|
}
|
67
63
|
|
68
64
|
main();
|
package/package.json
CHANGED
@@ -37,7 +37,7 @@ export class RebalanceTxBuilder {
|
|
37
37
|
private rebalanceType!: SolautoRebalanceType;
|
38
38
|
private swapManager!: RebalanceSwapManager;
|
39
39
|
private flRequirements?: FlashLoanRequirements;
|
40
|
-
private priceType
|
40
|
+
private priceType: PriceType = PriceType.Realtime;
|
41
41
|
|
42
42
|
constructor(
|
43
43
|
private client: SolautoClient,
|
@@ -211,29 +211,35 @@ export class RebalanceTxBuilder {
|
|
211
211
|
}
|
212
212
|
|
213
213
|
private async setRebalanceDetails(attemptNum: number) {
|
214
|
-
|
215
|
-
|
214
|
+
let rebalanceValues = this.getRebalanceValues();
|
215
|
+
if (!rebalanceValues) {
|
216
|
+
return false;
|
217
|
+
}
|
216
218
|
|
217
219
|
const postRebalanceEmaUtilRateBps = getLiqUtilzationRateBps(
|
218
220
|
this.realtimeUsdToEmaUsd(
|
219
|
-
|
221
|
+
rebalanceValues.endResult.supplyUsd,
|
220
222
|
this.client.pos.supplyMint
|
221
223
|
),
|
222
224
|
this.realtimeUsdToEmaUsd(
|
223
|
-
|
225
|
+
rebalanceValues.endResult.debtUsd,
|
224
226
|
this.client.pos.debtMint
|
225
227
|
),
|
226
228
|
this.client.pos.state.liqThresholdBps
|
227
229
|
);
|
228
230
|
if (postRebalanceEmaUtilRateBps > this.client.pos.maxBoostToBps) {
|
229
231
|
this.priceType = PriceType.Ema;
|
230
|
-
|
232
|
+
rebalanceValues = this.getRebalanceValues();
|
233
|
+
if (!rebalanceValues) {
|
234
|
+
return false;
|
235
|
+
}
|
231
236
|
}
|
232
237
|
|
238
|
+
this.values = rebalanceValues!;
|
233
239
|
this.flRequirements = await this.flashLoanRequirements(attemptNum);
|
234
240
|
|
235
241
|
if (this.flRequirements?.flFeeBps) {
|
236
|
-
this.values = this.getRebalanceValues(this.flRequirements.flFeeBps)
|
242
|
+
this.values = this.getRebalanceValues(this.flRequirements.flFeeBps)!;
|
237
243
|
}
|
238
244
|
|
239
245
|
this.swapManager = new RebalanceSwapManager(
|
@@ -245,6 +251,7 @@ export class RebalanceTxBuilder {
|
|
245
251
|
await this.swapManager.setSwapParams(attemptNum);
|
246
252
|
|
247
253
|
this.setRebalanceType();
|
254
|
+
return true;
|
248
255
|
}
|
249
256
|
|
250
257
|
private async refreshBeforeRebalance() {
|
@@ -348,7 +355,11 @@ export class RebalanceTxBuilder {
|
|
348
355
|
return undefined;
|
349
356
|
}
|
350
357
|
|
351
|
-
await this.setRebalanceDetails(attemptNum);
|
358
|
+
const proceed = await this.setRebalanceDetails(attemptNum);
|
359
|
+
if (!proceed) {
|
360
|
+
return undefined;
|
361
|
+
}
|
362
|
+
|
352
363
|
return await this.assembleTransaction();
|
353
364
|
}
|
354
365
|
}
|
@@ -123,7 +123,7 @@ function getTargetLiqUtilizationRateBps(
|
|
123
123
|
priceType: PriceType,
|
124
124
|
targetLiqUtilizationRateBps: number | undefined,
|
125
125
|
tokenBalanceChange: TokenBalanceChange | undefined
|
126
|
-
): number {
|
126
|
+
): number | undefined {
|
127
127
|
if (targetLiqUtilizationRateBps !== undefined) {
|
128
128
|
return targetLiqUtilizationRateBps;
|
129
129
|
}
|
@@ -144,7 +144,7 @@ function getTargetLiqUtilizationRateBps(
|
|
144
144
|
// return currentRate;
|
145
145
|
// }
|
146
146
|
|
147
|
-
|
147
|
+
return undefined;
|
148
148
|
}
|
149
149
|
|
150
150
|
function getAdjustedPositionValues(
|
@@ -198,7 +198,7 @@ export function getRebalanceValues(
|
|
198
198
|
targetLiqUtilizationRateBps?: number,
|
199
199
|
solautoFeeBps?: SolautoFeesBps,
|
200
200
|
flFeeBps?: number
|
201
|
-
): RebalanceValues {
|
201
|
+
): RebalanceValues | undefined {
|
202
202
|
const tokenBalanceChange = getTokenBalanceChange();
|
203
203
|
|
204
204
|
const targetRate = getTargetLiqUtilizationRateBps(
|
@@ -207,6 +207,9 @@ export function getRebalanceValues(
|
|
207
207
|
targetLiqUtilizationRateBps,
|
208
208
|
tokenBalanceChange
|
209
209
|
);
|
210
|
+
if (targetRate === undefined) {
|
211
|
+
return undefined;
|
212
|
+
}
|
210
213
|
|
211
214
|
const rebalanceDirection = getRebalanceDirection(solautoPosition, targetRate);
|
212
215
|
|
@@ -604,15 +604,6 @@ export function getErrorInfo(
|
|
604
604
|
error: Error,
|
605
605
|
simulationSuccessful?: boolean
|
606
606
|
) {
|
607
|
-
if (error instanceof InvalidRebalanceConditionError) {
|
608
|
-
return {
|
609
|
-
canBeIgnored: true,
|
610
|
-
errorName: InvalidRebalanceConditionError.name,
|
611
|
-
errorInfo: new InvalidRebalanceConditionError(createSolautoProgram())
|
612
|
-
.message,
|
613
|
-
};
|
614
|
-
}
|
615
|
-
|
616
607
|
let canBeIgnored = false;
|
617
608
|
let errorName: string | undefined = undefined;
|
618
609
|
let errorInfo: string | undefined = undefined;
|
@@ -71,7 +71,7 @@ interface PositionExArgs {
|
|
71
71
|
export abstract class SolautoPositionEx {
|
72
72
|
public umi!: Umi;
|
73
73
|
protected contextUpdates?: ContextUpdates;
|
74
|
-
|
74
|
+
|
75
75
|
public publicKey!: PublicKey;
|
76
76
|
public lendingPlatform!: LendingPlatform;
|
77
77
|
protected _data!: SolautoPositionExData;
|
@@ -414,6 +414,10 @@ export abstract class SolautoPositionEx {
|
|
414
414
|
targetLiqUtilizationRateBps,
|
415
415
|
SolautoFeesBps.create(true, targetLiqUtilizationRateBps, this.netWorthUsd)
|
416
416
|
);
|
417
|
+
if (!rebalance) {
|
418
|
+
return undefined;
|
419
|
+
}
|
420
|
+
|
417
421
|
this.updateSupply(rebalance.endResult.supplyUsd, supplyPrice);
|
418
422
|
this.updateDebt(rebalance.endResult.debtUsd, debtPrice);
|
419
423
|
this.updateNetWorth(supplyPrice);
|