@haven-fi/solauto-sdk 1.0.527 → 1.0.528
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/transactions/transactionUtils.d.ts +1 -2
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +2 -3
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +6 -5
- package/package.json +1 -1
- package/src/transactions/transactionUtils.ts +1 -3
- package/src/utils/solauto/rebalanceUtils.ts +7 -5
- package/tests/transactions/solautoMarginfi.ts +5 -13
@@ -1,12 +1,11 @@
|
|
1
1
|
import { TransactionBuilder, Umi } from "@metaplex-foundation/umi";
|
2
2
|
import { PublicKey } from "@solana/web3.js";
|
3
3
|
import { SolautoClient } from "../clients/solautoClient";
|
4
|
-
import { RebalanceValues } from "../utils/solauto/rebalanceUtils";
|
5
4
|
import { ReferralStateManager } from "../clients";
|
6
5
|
import { TransactionItemInputs } from "../types";
|
7
6
|
export declare function rebalanceChoresBefore(client: SolautoClient, tx: TransactionBuilder, accountsGettingCreated: string[]): Promise<TransactionBuilder>;
|
8
7
|
export declare function getTransactionChores(client: SolautoClient, tx: TransactionBuilder): Promise<[TransactionBuilder, TransactionBuilder]>;
|
9
|
-
export declare function requiresRefreshBeforeRebalance(client: SolautoClient
|
8
|
+
export declare function requiresRefreshBeforeRebalance(client: SolautoClient): Promise<boolean>;
|
10
9
|
export declare function buildSolautoRebalanceTransaction(client: SolautoClient, targetLiqUtilizationRateBps?: number, attemptNum?: number): Promise<TransactionItemInputs | undefined>;
|
11
10
|
export declare function convertReferralFeesToDestination(referralManager: ReferralStateManager, tokenAccount: PublicKey, destinationMint: PublicKey): Promise<TransactionItemInputs | undefined>;
|
12
11
|
export declare function getErrorInfo(umi: Umi, txs: TransactionBuilder[], error: Error, simulationSuccessful?: boolean): {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6LjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AA2LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,aAAa,oBAsDtB;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAyI5C;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EA0G/B"}
|
@@ -329,7 +329,7 @@ async function getTransactionChores(client, tx) {
|
|
329
329
|
choresAfter = choresAfter.add(transactionChoresAfter(client, solautoActions, client.livePositionUpdates.cancellingDca));
|
330
330
|
return [choresBefore, choresAfter];
|
331
331
|
}
|
332
|
-
async function requiresRefreshBeforeRebalance(client
|
332
|
+
async function requiresRefreshBeforeRebalance(client) {
|
333
333
|
const neverRefreshedBefore = client.solautoPositionData &&
|
334
334
|
client.solautoPositionData.state.supply.amountCanBeUsed.baseUnit ===
|
335
335
|
BigInt(0) &&
|
@@ -380,8 +380,7 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
380
380
|
? (0, rebalanceUtils_1.getFlashLoanDetails)(client, flRequirements, values, jupQuote)
|
381
381
|
: undefined;
|
382
382
|
let tx = (0, umi_1.transactionBuilder)();
|
383
|
-
|
384
|
-
if (await requiresRefreshBeforeRebalance(client, values)) {
|
383
|
+
if (await requiresRefreshBeforeRebalance(client)) {
|
385
384
|
tx = tx.add(client.refresh());
|
386
385
|
}
|
387
386
|
if (flashLoan) {
|
@@ -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;AAWD,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,
|
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;AAWD,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,CAoG5C;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;AAED,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,CAqEzB"}
|
@@ -86,7 +86,7 @@ function getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, target
|
|
86
86
|
}
|
87
87
|
function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
|
88
88
|
let { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, targetLiqUtilizationRateBps);
|
89
|
-
// REVERT ME AND GET TO THE ROOT OF THIS ISSUE
|
89
|
+
// TODO: REVERT ME AND GET TO THE ROOT OF THIS ISSUE
|
90
90
|
const supplyMint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.supply.mint);
|
91
91
|
if (constants_1.BROKEN_TOKENS.includes(supplyMint.toString()) &&
|
92
92
|
((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint).equals(new web3_js_1.PublicKey(constants_1.USDC)) ||
|
@@ -146,16 +146,17 @@ async function getFlashLoanRequirements(client, values, attemptNum) {
|
|
146
146
|
const requiresFlashLoan = supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
|
147
147
|
const supplyPrice = (0, priceUtils_1.safeGetPrice)(client.supplyMint) ?? 0;
|
148
148
|
const debtPrice = (0, priceUtils_1.safeGetPrice)(client.debtMint) ?? 0;
|
149
|
-
const
|
150
|
-
const
|
149
|
+
const debtAdjustmentUsd = Math.abs(values.debtAdjustmentUsd);
|
150
|
+
const insufficientSupplyLiquidity = insufficientLiquidity(debtAdjustmentUsd, client.supplyLiquidityAvailable(), (0, generalUtils_2.tokenInfo)(client.supplyMint).decimals, supplyPrice);
|
151
|
+
const insufficientDebtLiquidity = insufficientLiquidity(debtAdjustmentUsd, client.debtLiquidityAvailable(), (0, generalUtils_2.tokenInfo)(client.debtMint).decimals, debtPrice);
|
151
152
|
let useDebtLiquidity = values.rebalanceDirection === generated_1.RebalanceDirection.Boost ||
|
152
153
|
insufficientSupplyLiquidity;
|
153
154
|
let signerFlashLoan = false;
|
154
155
|
if ((attemptNum ?? 0) > 3 ||
|
155
156
|
(insufficientSupplyLiquidity && insufficientDebtLiquidity)) {
|
156
157
|
const { supplyBalance, debtBalance } = await client.signerBalances();
|
157
|
-
const sufficientSignerSupplyLiquidity = !insufficientLiquidity(
|
158
|
-
const sufficientSignerDebtLiquidity = !insufficientLiquidity(
|
158
|
+
const sufficientSignerSupplyLiquidity = !insufficientLiquidity(debtAdjustmentUsd, supplyBalance, (0, generalUtils_2.tokenInfo)(client.supplyMint).decimals, supplyPrice);
|
159
|
+
const sufficientSignerDebtLiquidity = !insufficientLiquidity(debtAdjustmentUsd, debtBalance, (0, generalUtils_2.tokenInfo)(client.debtMint).decimals, debtPrice);
|
159
160
|
signerFlashLoan =
|
160
161
|
sufficientSignerSupplyLiquidity || sufficientSignerDebtLiquidity;
|
161
162
|
if (signerFlashLoan) {
|
package/package.json
CHANGED
@@ -603,7 +603,6 @@ export async function getTransactionChores(
|
|
603
603
|
|
604
604
|
export async function requiresRefreshBeforeRebalance(
|
605
605
|
client: SolautoClient,
|
606
|
-
values: RebalanceValues
|
607
606
|
) {
|
608
607
|
const neverRefreshedBefore =
|
609
608
|
client.solautoPositionData &&
|
@@ -718,8 +717,7 @@ export async function buildSolautoRebalanceTransaction(
|
|
718
717
|
|
719
718
|
let tx = transactionBuilder();
|
720
719
|
|
721
|
-
|
722
|
-
if (await requiresRefreshBeforeRebalance(client, values)) {
|
720
|
+
if (await requiresRefreshBeforeRebalance(client)) {
|
723
721
|
tx = tx.add(client.refresh());
|
724
722
|
}
|
725
723
|
|
@@ -191,7 +191,7 @@ export function getRebalanceValues(
|
|
191
191
|
targetLiqUtilizationRateBps
|
192
192
|
);
|
193
193
|
|
194
|
-
// REVERT ME AND GET TO THE ROOT OF THIS ISSUE
|
194
|
+
// TODO: REVERT ME AND GET TO THE ROOT OF THIS ISSUE
|
195
195
|
const supplyMint = toWeb3JsPublicKey(state.supply.mint);
|
196
196
|
if (
|
197
197
|
BROKEN_TOKENS.includes(supplyMint.toString()) &&
|
@@ -315,14 +315,16 @@ export async function getFlashLoanRequirements(
|
|
315
315
|
|
316
316
|
const supplyPrice = safeGetPrice(client.supplyMint) ?? 0;
|
317
317
|
const debtPrice = safeGetPrice(client.debtMint) ?? 0;
|
318
|
+
const debtAdjustmentUsd = Math.abs(values.debtAdjustmentUsd);
|
319
|
+
|
318
320
|
const insufficientSupplyLiquidity = insufficientLiquidity(
|
319
|
-
|
321
|
+
debtAdjustmentUsd,
|
320
322
|
client.supplyLiquidityAvailable(),
|
321
323
|
tokenInfo(client.supplyMint).decimals,
|
322
324
|
supplyPrice
|
323
325
|
);
|
324
326
|
const insufficientDebtLiquidity = insufficientLiquidity(
|
325
|
-
|
327
|
+
debtAdjustmentUsd,
|
326
328
|
client.debtLiquidityAvailable(),
|
327
329
|
tokenInfo(client.debtMint).decimals,
|
328
330
|
debtPrice
|
@@ -339,13 +341,13 @@ export async function getFlashLoanRequirements(
|
|
339
341
|
) {
|
340
342
|
const { supplyBalance, debtBalance } = await client.signerBalances();
|
341
343
|
const sufficientSignerSupplyLiquidity = !insufficientLiquidity(
|
342
|
-
|
344
|
+
debtAdjustmentUsd,
|
343
345
|
supplyBalance,
|
344
346
|
tokenInfo(client.supplyMint).decimals,
|
345
347
|
supplyPrice
|
346
348
|
);
|
347
349
|
const sufficientSignerDebtLiquidity = !insufficientLiquidity(
|
348
|
-
|
350
|
+
debtAdjustmentUsd,
|
349
351
|
debtBalance,
|
350
352
|
tokenInfo(client.debtMint).decimals,
|
351
353
|
debtPrice
|
@@ -50,7 +50,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
50
50
|
|
51
51
|
const payForTransactions = true;
|
52
52
|
const testProgram = false;
|
53
|
-
const positionId =
|
53
|
+
const positionId = 1;
|
54
54
|
|
55
55
|
it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
|
56
56
|
const client = new SolautoMarginfiClient(
|
@@ -66,7 +66,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
66
66
|
await client.initialize({
|
67
67
|
signer,
|
68
68
|
positionId,
|
69
|
-
authority: new PublicKey("
|
69
|
+
authority: new PublicKey("7F6v4HWZsyFP6yVFq92HQWygUgoYm5khUX8pXWGLoqUN"),
|
70
70
|
// new: true,
|
71
71
|
// marginfiAccount: new PublicKey(
|
72
72
|
// ""
|
@@ -76,17 +76,9 @@ describe("Solauto Marginfi tests", async () => {
|
|
76
76
|
// debtMint: new PublicKey(USDC),
|
77
77
|
});
|
78
78
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
// client.umi,
|
83
|
-
// new PublicKey(JUPITER_PROGRAM_ID)
|
84
|
-
// ),
|
85
|
-
// null,
|
86
|
-
// 2
|
87
|
-
// )
|
88
|
-
// );
|
89
|
-
// return;
|
79
|
+
await client.getFreshPositionState();
|
80
|
+
console.log(fromBaseUnit(client.supplyLiquidityAvailable(), tokenInfo(client.supplyMint).decimals));
|
81
|
+
console.log(fromBaseUnit(client.debtLiquidityAvailable(), tokenInfo(client.debtMint).decimals));
|
90
82
|
|
91
83
|
const transactionItems: TransactionItem[] = [];
|
92
84
|
// const settingParams: SolautoSettingsParametersInpArgs = {
|