@haven-fi/solauto-sdk 1.0.527 → 1.0.529
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/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +4 -6
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +7 -6
- package/package.json +1 -1
- package/src/transactions/transactionUtils.ts +1 -3
- package/src/utils/jupiterUtils.ts +4 -6
- package/src/utils/solauto/generalUtils.ts +0 -2
- package/src/utils/solauto/rebalanceUtils.ts +8 -7
- package/tests/transactions/solautoMarginfi.ts +2 -14
@@ -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":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,
|
1
|
+
{"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,0BAsB1D;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAmF7B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO;;GA0B5E"}
|
@@ -25,7 +25,7 @@ function createTransactionInstruction(instruction) {
|
|
25
25
|
async function getJupQuote(swapDetails) {
|
26
26
|
const memecoinSwap = (0, generalUtils_1.tokenInfo)(swapDetails.inputMint).isMeme ||
|
27
27
|
(0, generalUtils_1.tokenInfo)(swapDetails.outputMint).isMeme;
|
28
|
-
return await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await jupApi.quoteGet({
|
28
|
+
return await (0, generalUtils_1.retryWithExponentialBackoff)(async (attemptNum) => await jupApi.quoteGet({
|
29
29
|
amount: Number(swapDetails.amount),
|
30
30
|
inputMint: swapDetails.inputMint.toString(),
|
31
31
|
outputMint: swapDetails.outputMint.toString(),
|
@@ -35,10 +35,8 @@ async function getJupQuote(swapDetails) {
|
|
35
35
|
? "ExactIn"
|
36
36
|
: undefined,
|
37
37
|
slippageBps: memecoinSwap ? 500 : 200,
|
38
|
-
maxAccounts: !swapDetails.exactOut
|
39
|
-
|
40
|
-
: undefined,
|
41
|
-
}), 2, 200);
|
38
|
+
maxAccounts: !swapDetails.exactOut ? 15 + attemptNum * 5 : undefined,
|
39
|
+
}), 3, 200);
|
42
40
|
}
|
43
41
|
async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
44
42
|
const quoteResponse = swapDetails.jupQuote ?? (await getJupQuote(swapDetails));
|
@@ -46,7 +44,7 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
46
44
|
const finalPriceSlippageBps = Math.round(Math.max(50, quoteResponse.slippageBps, priceImpactBps) *
|
47
45
|
(1 + (swapDetails.slippageIncFactor ?? 0)));
|
48
46
|
quoteResponse.slippageBps = finalPriceSlippageBps;
|
49
|
-
(0, generalUtils_1.consoleLog)(quoteResponse);
|
47
|
+
(0, generalUtils_1.consoleLog)("Quote:", quoteResponse);
|
50
48
|
(0, generalUtils_1.consoleLog)("Getting jup instructions...");
|
51
49
|
const instructions = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
|
52
50
|
const res = await jupApi.swapInstructionsPost({
|
@@ -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":"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;AAkBzB,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,CAwE7B;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,CA2CxB;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"}
|
@@ -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,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;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,
|
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,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;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,CAsEzB"}
|
@@ -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) {
|
@@ -165,7 +166,6 @@ async function getFlashLoanRequirements(client, values, attemptNum) {
|
|
165
166
|
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`);
|
166
167
|
}
|
167
168
|
}
|
168
|
-
// TODO: if not sufficient signer liquidity, throw error with details on how much liquidity is needed and of what token
|
169
169
|
(0, generalUtils_2.consoleLog)("Requires flash loan:", requiresFlashLoan);
|
170
170
|
(0, generalUtils_2.consoleLog)("Use debt liquidity:", useDebtLiquidity);
|
171
171
|
(0, generalUtils_2.consoleLog)("Intermediary liq utilization rate:", tempLiqUtilizationRateBps, `$${supplyUsd}`, `$${debtUsd}`, "Max:", maxLiqUtilizationRateBps);
|
@@ -233,6 +233,7 @@ async function getJupSwapRebalanceDetails(client, values, flRequirements, target
|
|
233
233
|
jupQuote = await (0, jupiterUtils_1.getJupQuote)(jupSwapInput);
|
234
234
|
} while (parseInt(jupQuote.outAmount) < outputAmount);
|
235
235
|
}
|
236
|
+
(0, generalUtils_2.consoleLog)("Quote:", jupQuote);
|
236
237
|
const addPadding = exactOut;
|
237
238
|
return {
|
238
239
|
...jupSwapInput,
|
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
|
|
@@ -55,7 +55,7 @@ export async function getJupQuote(swapDetails: JupSwapInput) {
|
|
55
55
|
tokenInfo(swapDetails.outputMint).isMeme;
|
56
56
|
|
57
57
|
return await retryWithExponentialBackoff(
|
58
|
-
async () =>
|
58
|
+
async (attemptNum: number) =>
|
59
59
|
await jupApi.quoteGet({
|
60
60
|
amount: Number(swapDetails.amount),
|
61
61
|
inputMint: swapDetails.inputMint.toString(),
|
@@ -66,11 +66,9 @@ export async function getJupQuote(swapDetails: JupSwapInput) {
|
|
66
66
|
? "ExactIn"
|
67
67
|
: undefined,
|
68
68
|
slippageBps: memecoinSwap ? 500 : 200,
|
69
|
-
maxAccounts: !swapDetails.exactOut
|
70
|
-
? 15
|
71
|
-
: undefined,
|
69
|
+
maxAccounts: !swapDetails.exactOut ? 15 + attemptNum * 5 : undefined,
|
72
70
|
}),
|
73
|
-
|
71
|
+
3,
|
74
72
|
200
|
75
73
|
);
|
76
74
|
}
|
@@ -99,7 +97,7 @@ export async function getJupSwapTransaction(
|
|
99
97
|
(1 + (swapDetails.slippageIncFactor ?? 0))
|
100
98
|
);
|
101
99
|
quoteResponse.slippageBps = finalPriceSlippageBps;
|
102
|
-
consoleLog(quoteResponse);
|
100
|
+
consoleLog("Quote:", quoteResponse);
|
103
101
|
|
104
102
|
consoleLog("Getting jup instructions...");
|
105
103
|
const instructions = await retryWithExponentialBackoff(
|
@@ -27,7 +27,6 @@ import {
|
|
27
27
|
fromBaseUnit,
|
28
28
|
getLiqUtilzationRateBps,
|
29
29
|
toBaseUnit,
|
30
|
-
toBps,
|
31
30
|
} from "../numberUtils";
|
32
31
|
import { getReferralState } from "../accountUtils";
|
33
32
|
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
@@ -39,7 +38,6 @@ import {
|
|
39
38
|
import {
|
40
39
|
findMarginfiAccounts,
|
41
40
|
getAllMarginfiAccountsByAuthority,
|
42
|
-
getMarginfiMaxLtvAndLiqThreshold,
|
43
41
|
} from "../marginfiUtils";
|
44
42
|
import { RebalanceAction, SolautoPositionDetails } from "../../types/solauto";
|
45
43
|
import { fetchTokenPrices } from "../priceUtils";
|
@@ -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
|
@@ -362,8 +364,6 @@ export async function getFlashLoanRequirements(
|
|
362
364
|
}
|
363
365
|
}
|
364
366
|
|
365
|
-
// TODO: if not sufficient signer liquidity, throw error with details on how much liquidity is needed and of what token
|
366
|
-
|
367
367
|
consoleLog("Requires flash loan:", requiresFlashLoan);
|
368
368
|
consoleLog("Use debt liquidity:", useDebtLiquidity);
|
369
369
|
consoleLog(
|
@@ -480,6 +480,7 @@ export async function getJupSwapRebalanceDetails(
|
|
480
480
|
jupQuote = await getJupQuote(jupSwapInput);
|
481
481
|
} while (parseInt(jupQuote.outAmount) < outputAmount);
|
482
482
|
}
|
483
|
+
consoleLog("Quote:", jupQuote);
|
483
484
|
|
484
485
|
const addPadding = exactOut;
|
485
486
|
|
@@ -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("EBhRj7jbF2EVE21i19JSuCX1BAbnZFYhoKW64HnaZ3kf"),
|
70
70
|
// new: true,
|
71
71
|
// marginfiAccount: new PublicKey(
|
72
72
|
// ""
|
@@ -76,18 +76,6 @@ describe("Solauto Marginfi tests", async () => {
|
|
76
76
|
// debtMint: new PublicKey(USDC),
|
77
77
|
});
|
78
78
|
|
79
|
-
// console.log(
|
80
|
-
// JSON.stringify(
|
81
|
-
// await getQnComputeUnitPriceEstimate(
|
82
|
-
// client.umi,
|
83
|
-
// new PublicKey(JUPITER_PROGRAM_ID)
|
84
|
-
// ),
|
85
|
-
// null,
|
86
|
-
// 2
|
87
|
-
// )
|
88
|
-
// );
|
89
|
-
// return;
|
90
|
-
|
91
79
|
const transactionItems: TransactionItem[] = [];
|
92
80
|
// const settingParams: SolautoSettingsParametersInpArgs = {
|
93
81
|
// boostToBps: maxBoostToBps(
|