@haven-fi/solauto-sdk 1.0.492 → 1.0.494
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/transactionsManager.d.ts.map +1 -1
- package/dist/transactions/transactionsManager.js +1 -0
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +3 -9
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +5 -2
- package/package.json +1 -1
- package/src/transactions/transactionsManager.ts +1 -0
- package/src/utils/jupiterUtils.ts +8 -9
- package/src/utils/solauto/rebalanceUtils.ts +13 -3
- package/tests/transactions/solautoMarginfi.ts +33 -33
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EAEL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAc7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAMjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IARtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAS;gBAG3B,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AA0FD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAU5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAdxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAE3B,kBAAkB,SAAmB;gBAG3B,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAiBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EAEL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAc7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAMjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IARtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAS;gBAG3B,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AA0FD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAU5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAdxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAE3B,kBAAkB,SAAmB;gBAG3B,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAiBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IA4GzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YAkCxB,6BAA6B;YAsI7B,qBAAqB;YAoDrB,eAAe;YA0Df,eAAe;CA4D9B"}
|
@@ -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;AAOrB,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAgBD,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,
|
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;AAOrB,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAgBD,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,CAoH7B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO;;GA0B5E"}
|
@@ -27,14 +27,8 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
27
27
|
constants_1.TOKEN_INFO[swapDetails.outputMint.toString()].isMeme;
|
28
28
|
const tokensWithLowAccounts = [constants_1.PYTH, constants_1.INF];
|
29
29
|
// TEMP REVERT ME
|
30
|
-
|
31
|
-
|
32
|
-
// swapDetails.inputMint.equals(new PublicKey(x))
|
33
|
-
// ) ||
|
34
|
-
// tokensWithLowAccounts.find((x) =>
|
35
|
-
// swapDetails.outputMint.equals(new PublicKey(x))
|
36
|
-
// );
|
37
|
-
const useLowAccounts = true;
|
30
|
+
const useLowAccounts = tokensWithLowAccounts.find((x) => swapDetails.inputMint.equals(new web3_js_1.PublicKey(x))) ||
|
31
|
+
tokensWithLowAccounts.find((x) => swapDetails.outputMint.equals(new web3_js_1.PublicKey(x)));
|
38
32
|
const quoteResponse = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await jupApi.quoteGet({
|
39
33
|
amount: Number(swapDetails.amount),
|
40
34
|
inputMint: swapDetails.inputMint.toString(),
|
@@ -80,7 +74,7 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
80
74
|
(0, generalUtils_1.consoleLog)("Increased price impact bps:", finalPriceImpactBps);
|
81
75
|
if (swapDetails.addPadding) {
|
82
76
|
(0, generalUtils_1.consoleLog)("Raw inAmount:", quoteResponse.inAmount);
|
83
|
-
const inc = Math.max((0, numberUtils_1.fromBps)(finalPriceImpactBps) * 1.1, (0, numberUtils_1.fromBps)(finalPriceSlippageBps) * 0.
|
77
|
+
const inc = Math.max((0, numberUtils_1.fromBps)(finalPriceImpactBps) * 1.1, (0, numberUtils_1.fromBps)(finalPriceSlippageBps) * 0.05);
|
84
78
|
(0, generalUtils_1.consoleLog)("Inc:", inc);
|
85
79
|
quoteResponse.inAmount = Math.round(parseInt(quoteResponse.inAmount) + parseInt(quoteResponse.inAmount) * inc).toString();
|
86
80
|
(0, generalUtils_1.consoleLog)("Increased inAmount:", quoteResponse.inAmount);
|
@@ -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,EAAE,MAAM,iBAAiB,CAAC;AAcjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4I9C,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,
|
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,EAAE,MAAM,iBAAiB,CAAC;AAcjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4I9C,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,CA6EjB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe;;;EAsDxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CAgC9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAoEhB"}
|
@@ -183,16 +183,19 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
|
|
183
183
|
const usdToSwap = Math.abs(values.debtAdjustmentUsd) +
|
184
184
|
(values.dcaTokenType === generated_1.TokenType.Debt ? values.amountUsdToDcaIn : 0);
|
185
185
|
const inputAmount = (0, numberUtils_1.toBaseUnit)(usdToSwap / (0, priceUtils_1.safeGetPrice)(input.mint), input.decimals);
|
186
|
+
const highLiquidity = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState?.netWorth.baseAmountUsdValue ?? BigInt(0), generalAccounts_1.USD_DECIMALS) > 10000;
|
187
|
+
const usingMajor = (0, generalUtils_2.tokenInfo)(client.supplyMint).isMajor || (0, generalUtils_2.tokenInfo)(client.debtMint).isMajor;
|
188
|
+
const debtPadding = !usingMajor && highLiquidity ? 0.001 : 0.0001;
|
186
189
|
const outputAmount = targetLiqUtilizationRateBps === 0
|
187
190
|
? output.amountUsed.baseUnit +
|
188
191
|
BigInt(Math.round(Number(output.amountUsed.baseUnit) *
|
189
192
|
// Add this small percentage to account for the APR on the debt between now and the transaction
|
190
|
-
|
193
|
+
debtPadding))
|
191
194
|
: (0, numberUtils_1.toBaseUnit)(usdToSwap / (0, priceUtils_1.safeGetPrice)(output.mint), output.decimals);
|
192
195
|
const repaying = values.rebalanceDirection === generated_1.RebalanceDirection.Repay;
|
193
196
|
const { requiresFlashLoan, useDebtLiquidity } = rebalanceRequiresFlashLoan(client, values);
|
194
197
|
const flashLoanRepayFromDebt = repaying && requiresFlashLoan && useDebtLiquidity;
|
195
|
-
const exactOut = targetLiqUtilizationRateBps === 0 ||
|
198
|
+
const exactOut = (targetLiqUtilizationRateBps === 0 && highLiquidity && usingMajor) ||
|
196
199
|
// values.repayingCloseToMaxLtv ||
|
197
200
|
flashLoanRepayFromDebt;
|
198
201
|
const exactIn = !exactOut;
|
package/package.json
CHANGED
@@ -62,14 +62,13 @@ export async function getJupSwapTransaction(
|
|
62
62
|
|
63
63
|
const tokensWithLowAccounts = [PYTH, INF];
|
64
64
|
// TEMP REVERT ME
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
const useLowAccounts = true;
|
65
|
+
const useLowAccounts =
|
66
|
+
tokensWithLowAccounts.find((x) =>
|
67
|
+
swapDetails.inputMint.equals(new PublicKey(x))
|
68
|
+
) ||
|
69
|
+
tokensWithLowAccounts.find((x) =>
|
70
|
+
swapDetails.outputMint.equals(new PublicKey(x))
|
71
|
+
);
|
73
72
|
|
74
73
|
const quoteResponse = await retryWithExponentialBackoff(
|
75
74
|
async () =>
|
@@ -139,7 +138,7 @@ export async function getJupSwapTransaction(
|
|
139
138
|
consoleLog("Raw inAmount:", quoteResponse.inAmount);
|
140
139
|
const inc = Math.max(
|
141
140
|
fromBps(finalPriceImpactBps) * 1.1,
|
142
|
-
fromBps(finalPriceSlippageBps) * 0.
|
141
|
+
fromBps(finalPriceSlippageBps) * 0.05
|
143
142
|
);
|
144
143
|
consoleLog("Inc:", inc);
|
145
144
|
quoteResponse.inAmount = Math.round(
|
@@ -16,7 +16,7 @@ import {
|
|
16
16
|
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
17
17
|
import { QuoteResponse } from "@jup-ag/api";
|
18
18
|
import { JupSwapDetails } from "../jupiterUtils";
|
19
|
-
import { consoleLog, currentUnixSeconds } from "../generalUtils";
|
19
|
+
import { consoleLog, currentUnixSeconds, tokenInfo } from "../generalUtils";
|
20
20
|
import {
|
21
21
|
fromBaseUnit,
|
22
22
|
fromBps,
|
@@ -247,6 +247,7 @@ export function getRebalanceValues(
|
|
247
247
|
targetRateBps,
|
248
248
|
maxBoostToBps(state.maxLtvBps, state.liqThresholdBps)
|
249
249
|
);
|
250
|
+
|
250
251
|
const maxRepayTo = maxRepayToBps(state.maxLtvBps, state.liqThresholdBps);
|
251
252
|
return {
|
252
253
|
debtAdjustmentUsd,
|
@@ -392,6 +393,15 @@ export function getJupSwapRebalanceDetails(
|
|
392
393
|
usdToSwap / safeGetPrice(input.mint)!,
|
393
394
|
input.decimals
|
394
395
|
);
|
396
|
+
|
397
|
+
const highLiquidity =
|
398
|
+
fromBaseUnit(
|
399
|
+
client.solautoPositionState?.netWorth.baseAmountUsdValue ?? BigInt(0),
|
400
|
+
USD_DECIMALS
|
401
|
+
) > 10_000;
|
402
|
+
const usingMajor =
|
403
|
+
tokenInfo(client.supplyMint).isMajor || tokenInfo(client.debtMint).isMajor;
|
404
|
+
const debtPadding = !usingMajor && highLiquidity ? 0.001 : 0.0001;
|
395
405
|
const outputAmount =
|
396
406
|
targetLiqUtilizationRateBps === 0
|
397
407
|
? output.amountUsed.baseUnit +
|
@@ -399,7 +409,7 @@ export function getJupSwapRebalanceDetails(
|
|
399
409
|
Math.round(
|
400
410
|
Number(output.amountUsed.baseUnit) *
|
401
411
|
// Add this small percentage to account for the APR on the debt between now and the transaction
|
402
|
-
|
412
|
+
debtPadding
|
403
413
|
)
|
404
414
|
)
|
405
415
|
: toBaseUnit(usdToSwap / safeGetPrice(output.mint)!, output.decimals);
|
@@ -414,7 +424,7 @@ export function getJupSwapRebalanceDetails(
|
|
414
424
|
repaying && requiresFlashLoan && useDebtLiquidity;
|
415
425
|
|
416
426
|
const exactOut =
|
417
|
-
targetLiqUtilizationRateBps === 0 ||
|
427
|
+
(targetLiqUtilizationRateBps === 0 && highLiquidity && usingMajor) ||
|
418
428
|
// values.repayingCloseToMaxLtv ||
|
419
429
|
flashLoanRepayFromDebt;
|
420
430
|
const exactIn = !exactOut;
|
@@ -45,9 +45,9 @@ describe("Solauto Marginfi tests", async () => {
|
|
45
45
|
// const signer = setupTest();
|
46
46
|
const signer = setupTest("solauto-manager");
|
47
47
|
|
48
|
-
const payForTransactions =
|
48
|
+
const payForTransactions = false;
|
49
49
|
const testProgram = false;
|
50
|
-
const positionId =
|
50
|
+
const positionId = 1;
|
51
51
|
|
52
52
|
it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
|
53
53
|
const client = new SolautoMarginfiClient(
|
@@ -63,7 +63,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
63
63
|
await client.initialize({
|
64
64
|
signer,
|
65
65
|
positionId,
|
66
|
-
authority: new PublicKey("
|
66
|
+
authority: new PublicKey("9j53Z6bejUaAxJCEC64BbxozLPuvsuAFsr6iqWKKDvaw"),
|
67
67
|
// new: true,
|
68
68
|
// marginfiAccount: new PublicKey(
|
69
69
|
// ""
|
@@ -152,48 +152,48 @@ describe("Solauto Marginfi tests", async () => {
|
|
152
152
|
// )
|
153
153
|
// );
|
154
154
|
|
155
|
-
transactionItems.push(
|
156
|
-
new TransactionItem(
|
157
|
-
async (attemptNum) =>
|
158
|
-
await buildSolautoRebalanceTransaction(client, undefined, attemptNum),
|
159
|
-
"rebalance"
|
160
|
-
)
|
161
|
-
);
|
162
|
-
|
163
|
-
// transactionItems.push(
|
164
|
-
// new TransactionItem(
|
165
|
-
// async () => ({ tx: client.refresh() }),
|
166
|
-
// "refresh"
|
167
|
-
// )
|
168
|
-
// );
|
169
|
-
|
170
155
|
// transactionItems.push(
|
171
156
|
// new TransactionItem(
|
172
157
|
// async (attemptNum) =>
|
173
|
-
// await buildSolautoRebalanceTransaction(client,
|
158
|
+
// await buildSolautoRebalanceTransaction(client, undefined, attemptNum),
|
174
159
|
// "rebalance"
|
175
160
|
// )
|
176
161
|
// );
|
177
162
|
|
178
163
|
// transactionItems.push(
|
179
164
|
// new TransactionItem(
|
180
|
-
// async () => ({
|
181
|
-
//
|
182
|
-
// solautoAction("Withdraw", [{ __kind: "All" }])
|
183
|
-
// ),
|
184
|
-
// }),
|
185
|
-
// "withdraw"
|
165
|
+
// async () => ({ tx: client.refresh() }),
|
166
|
+
// "refresh"
|
186
167
|
// )
|
187
168
|
// );
|
188
169
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
170
|
+
transactionItems.push(
|
171
|
+
new TransactionItem(
|
172
|
+
async (attemptNum) =>
|
173
|
+
await buildSolautoRebalanceTransaction(client, 0, attemptNum),
|
174
|
+
"rebalance"
|
175
|
+
)
|
176
|
+
);
|
177
|
+
|
178
|
+
transactionItems.push(
|
179
|
+
new TransactionItem(
|
180
|
+
async () => ({
|
181
|
+
tx: client.protocolInteraction(
|
182
|
+
solautoAction("Withdraw", [{ __kind: "All" }])
|
183
|
+
),
|
184
|
+
}),
|
185
|
+
"withdraw"
|
186
|
+
)
|
187
|
+
);
|
188
|
+
|
189
|
+
transactionItems.push(
|
190
|
+
new TransactionItem(
|
191
|
+
async () => ({
|
192
|
+
tx: client.closePositionIx(),
|
193
|
+
}),
|
194
|
+
"close position"
|
195
|
+
)
|
196
|
+
);
|
197
197
|
|
198
198
|
const statuses = await new TransactionsManager(
|
199
199
|
client,
|