@haven-fi/solauto-sdk 1.0.143 → 1.0.145
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/constants/solautoConstants.d.ts +1 -1
- package/dist/constants/solautoConstants.d.ts.map +1 -1
- package/dist/constants/solautoConstants.js +1 -1
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +7 -7
- package/dist/utils/jupiterUtils.d.ts +2 -1
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +8 -3
- package/dist/utils/solauto/rebalanceUtils.d.ts +1 -1
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +4 -4
- package/package.json +1 -1
- package/src/constants/solautoConstants.ts +1 -1
- package/src/transactions/transactionUtils.ts +7 -6
- package/src/utils/jupiterUtils.ts +11 -4
- package/src/utils/solauto/rebalanceUtils.ts +5 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const BASIS_POINTS = 10000;
|
|
2
2
|
export declare const DEFAULT_LIMIT_GAP_BPS = 1000;
|
|
3
3
|
export declare const MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
|
4
|
-
export declare const MIN_REPAY_GAP_BPS =
|
|
4
|
+
export declare const MIN_REPAY_GAP_BPS = 50;
|
|
5
5
|
export declare const MIN_BOOST_GAP_BPS = 50;
|
|
6
6
|
export declare const PRICES: {
|
|
7
7
|
[key: string]: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,iCAAiC,IAAI,CAAC;AACnD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,iCAAiC,IAAI,CAAC;AACnD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAQpC,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE,CAAA;CAAO,CAAC;AAE9E,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAE1E,eAAO,MAAM,kBAAkB,gDAAgD,CAAC;AAEhF,eAAO,MAAM,qBAAqB,UAWjC,CAAC"}
|
|
@@ -9,7 +9,7 @@ const generalAccounts_1 = require("./generalAccounts");
|
|
|
9
9
|
exports.BASIS_POINTS = 10000;
|
|
10
10
|
exports.DEFAULT_LIMIT_GAP_BPS = 1000;
|
|
11
11
|
exports.MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
|
12
|
-
exports.MIN_REPAY_GAP_BPS =
|
|
12
|
+
exports.MIN_REPAY_GAP_BPS = 50;
|
|
13
13
|
exports.MIN_BOOST_GAP_BPS = 50;
|
|
14
14
|
// export const JITO_BLOCK_ENGINE = "ny.mainnet.block-engine.jito.wtf";
|
|
15
15
|
// export const JITO_CONNECTION = new JitoRpcConnection(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAEL,aAAa,EAUd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyNzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;AAmLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IACE,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACD,SAAS,CACZ,
|
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAEL,aAAa,EAUd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyNzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;AAmLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IACE,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACD,SAAS,CACZ,CA6HA;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAmCrD"}
|
|
@@ -333,8 +333,8 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
|
333
333
|
const values = (0, rebalanceUtils_1.getRebalanceValues)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), (0, generalUtils_1.currentUnixSeconds)(), (0, generalUtils_1.safeGetPrice)(client.supplyMint), (0, generalUtils_1.safeGetPrice)(client.debtMint), targetLiqUtilizationRateBps);
|
|
334
334
|
client.log("Rebalance values: ", values);
|
|
335
335
|
const swapDetails = (0, rebalanceUtils_1.getJupSwapRebalanceDetails)(client, values, targetLiqUtilizationRateBps, attemptNum);
|
|
336
|
-
const { jupQuote, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
|
|
337
|
-
const flashLoan = (0, rebalanceUtils_1.getFlashLoanDetails)(client, values, jupQuote);
|
|
336
|
+
const { jupQuote, priceImpactBps, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
|
|
337
|
+
const flashLoan = (0, rebalanceUtils_1.getFlashLoanDetails)(client, values, jupQuote, priceImpactBps);
|
|
338
338
|
let tx = (0, umi_1.transactionBuilder)();
|
|
339
339
|
if (flashLoan) {
|
|
340
340
|
client.log("Flash loan details: ", flashLoan);
|
|
@@ -348,11 +348,11 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
|
348
348
|
client.flashBorrow(flashLoan, (0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(client.signer.publicKey), swapDetails.inputMint)),
|
|
349
349
|
...(addFirstRebalance
|
|
350
350
|
? [
|
|
351
|
-
client.rebalance("A", swapDetails, rebalanceType,
|
|
351
|
+
client.rebalance("A", swapDetails, rebalanceType, priceImpactBps, flashLoan, targetLiqUtilizationRateBps),
|
|
352
352
|
]
|
|
353
353
|
: []),
|
|
354
354
|
swapIx,
|
|
355
|
-
client.rebalance("B", swapDetails, rebalanceType,
|
|
355
|
+
client.rebalance("B", swapDetails, rebalanceType, priceImpactBps, flashLoan, targetLiqUtilizationRateBps),
|
|
356
356
|
client.flashRepay(flashLoan),
|
|
357
357
|
]);
|
|
358
358
|
}
|
|
@@ -361,9 +361,9 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
|
361
361
|
tx = tx.add([
|
|
362
362
|
setupInstructions,
|
|
363
363
|
tokenLedgerIx,
|
|
364
|
-
client.rebalance("A", swapDetails, rebalanceType,
|
|
364
|
+
client.rebalance("A", swapDetails, rebalanceType, priceImpactBps, undefined, targetLiqUtilizationRateBps),
|
|
365
365
|
swapIx,
|
|
366
|
-
client.rebalance("B", swapDetails, rebalanceType,
|
|
366
|
+
client.rebalance("B", swapDetails, rebalanceType, priceImpactBps, undefined, targetLiqUtilizationRateBps),
|
|
367
367
|
]);
|
|
368
368
|
}
|
|
369
369
|
if (client.solautoPositionState.liqUtilizationRateBps >
|
|
@@ -386,7 +386,7 @@ async function convertReferralFeesToDestination(umi, referralState, tokenAccount
|
|
|
386
386
|
inputMint: tokenAccountData.mint,
|
|
387
387
|
outputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(referralState.destFeesMint),
|
|
388
388
|
exactIn: true,
|
|
389
|
-
|
|
389
|
+
slippageIncFactor: 0.15,
|
|
390
390
|
});
|
|
391
391
|
let tx = (0, umi_1.transactionBuilder)()
|
|
392
392
|
.add(setupInstructions)
|
|
@@ -6,12 +6,13 @@ export interface JupSwapDetails {
|
|
|
6
6
|
outputMint: PublicKey;
|
|
7
7
|
destinationWallet: PublicKey;
|
|
8
8
|
amount: bigint;
|
|
9
|
-
|
|
9
|
+
slippageIncFactor?: number;
|
|
10
10
|
exactOut?: boolean;
|
|
11
11
|
exactIn?: boolean;
|
|
12
12
|
}
|
|
13
13
|
export interface JupSwapTransaction {
|
|
14
14
|
jupQuote: QuoteResponse;
|
|
15
|
+
priceImpactBps: number;
|
|
15
16
|
lookupTableAddresses: string[];
|
|
16
17
|
setupInstructions: TransactionBuilder;
|
|
17
18
|
tokenLedgerIx: TransactionBuilder;
|
|
@@ -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;AAMrB,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,
|
|
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;AAMrB,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;CACnB;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,CA6E7B"}
|
|
@@ -31,11 +31,12 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
|
31
31
|
: swapDetails.exactIn
|
|
32
32
|
? "ExactIn"
|
|
33
33
|
: undefined,
|
|
34
|
-
slippageBps:
|
|
34
|
+
slippageBps: 30,
|
|
35
35
|
maxAccounts: !swapDetails.exactOut ? 60 : undefined,
|
|
36
36
|
}), 3);
|
|
37
|
-
const
|
|
38
|
-
|
|
37
|
+
const priceImpactBps = (Math.round((0, numberUtils_1.toBps)(parseFloat(quoteResponse.priceImpactPct))) + 1);
|
|
38
|
+
const finalPriceSlippageBps = Math.round(Math.max(50, quoteResponse.slippageBps, priceImpactBps) *
|
|
39
|
+
(1 + (swapDetails.slippageIncFactor ?? 0)));
|
|
39
40
|
quoteResponse.slippageBps = finalPriceSlippageBps;
|
|
40
41
|
console.log(quoteResponse);
|
|
41
42
|
console.log("Getting jup instructions...");
|
|
@@ -51,8 +52,12 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
|
51
52
|
if (!instructions.swapInstruction) {
|
|
52
53
|
throw new Error("No swap instruction was returned by Jupiter");
|
|
53
54
|
}
|
|
55
|
+
console.log("Raw price impact bps:", priceImpactBps);
|
|
56
|
+
const finalPriceImpactBps = priceImpactBps * (1 + (swapDetails.slippageIncFactor ?? 0));
|
|
57
|
+
console.log("Increased price impact bps:", finalPriceImpactBps);
|
|
54
58
|
return {
|
|
55
59
|
jupQuote: quoteResponse,
|
|
60
|
+
priceImpactBps: finalPriceImpactBps,
|
|
56
61
|
lookupTableAddresses: instructions.addressLookupTableAddresses,
|
|
57
62
|
setupInstructions: (0, umi_1.transactionBuilder)().add(instructions.setupInstructions.map((ix) => (0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(ix)))),
|
|
58
63
|
tokenLedgerIx: (0, umi_1.transactionBuilder)().add(instructions.tokenLedgerInstruction !== undefined
|
|
@@ -15,6 +15,6 @@ export interface FlashLoanDetails {
|
|
|
15
15
|
baseUnitAmount: bigint;
|
|
16
16
|
mint: PublicKey;
|
|
17
17
|
}
|
|
18
|
-
export declare function getFlashLoanDetails(client: SolautoClient, values: RebalanceValues, jupQuote: QuoteResponse): FlashLoanDetails | undefined;
|
|
18
|
+
export declare function getFlashLoanDetails(client: SolautoClient, values: RebalanceValues, jupQuote: QuoteResponse, priceImpactBps: number): FlashLoanDetails | undefined;
|
|
19
19
|
export declare function getJupSwapRebalanceDetails(client: SolautoClient, values: RebalanceValues, targetLiqUtilizationRateBps?: number, attemptNum?: number): JupSwapDetails;
|
|
20
20
|
//# sourceMappingURL=rebalanceUtils.d.ts.map
|
|
@@ -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,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAgJjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;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,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAiEjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,
|
|
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,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAgJjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;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,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAiEjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,EACvB,cAAc,EAAE,MAAM,GACrB,gBAAgB,GAAG,SAAS,CAmE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAkChB"}
|
|
@@ -114,11 +114,11 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
|
|
|
114
114
|
dcaTokenType: dca?.tokenType
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
-
function getFlashLoanDetails(client, values, jupQuote) {
|
|
117
|
+
function getFlashLoanDetails(client, values, jupQuote, priceImpactBps) {
|
|
118
118
|
let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) + (values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
|
|
119
119
|
let debtUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
|
|
120
120
|
const debtAdjustmentWithSlippage = Math.abs(values.debtAdjustmentUsd) +
|
|
121
|
-
Math.abs(values.debtAdjustmentUsd) * (0, numberUtils_1.fromBps)(
|
|
121
|
+
Math.abs(values.debtAdjustmentUsd) * (0, numberUtils_1.fromBps)(priceImpactBps);
|
|
122
122
|
supplyUsd =
|
|
123
123
|
values.debtAdjustmentUsd < 0
|
|
124
124
|
? supplyUsd - debtAdjustmentWithSlippage
|
|
@@ -148,7 +148,7 @@ function getFlashLoanDetails(client, values, jupQuote) {
|
|
|
148
148
|
? {
|
|
149
149
|
baseUnitAmount: exactAmountBaseUnit
|
|
150
150
|
? exactAmountBaseUnit +
|
|
151
|
-
BigInt(Math.round(Number(exactAmountBaseUnit) * (0, numberUtils_1.fromBps)(
|
|
151
|
+
BigInt(Math.round(Number(exactAmountBaseUnit) * (0, numberUtils_1.fromBps)(priceImpactBps)))
|
|
152
152
|
: (0, numberUtils_1.toBaseUnit)(debtAdjustmentWithSlippage / flashLoanTokenPrice, flashLoanToken.decimals),
|
|
153
153
|
mint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(flashLoanToken.mint),
|
|
154
154
|
}
|
|
@@ -171,7 +171,7 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
|
|
|
171
171
|
inputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(input.mint),
|
|
172
172
|
outputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(output.mint),
|
|
173
173
|
destinationWallet: client.solautoPosition,
|
|
174
|
-
|
|
174
|
+
slippageIncFactor: 0.5 + (attemptNum ?? 0) * 0.2,
|
|
175
175
|
amount: rebalancingToZero
|
|
176
176
|
? client.solautoPositionState.debt.amountUsed.baseUnit +
|
|
177
177
|
BigInt(Math.round(Number(client.solautoPositionState.debt.amountUsed.baseUnit) *
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@ export const BASIS_POINTS = 10000;
|
|
|
17
17
|
|
|
18
18
|
export const DEFAULT_LIMIT_GAP_BPS = 1000;
|
|
19
19
|
export const MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
|
20
|
-
export const MIN_REPAY_GAP_BPS =
|
|
20
|
+
export const MIN_REPAY_GAP_BPS = 50;
|
|
21
21
|
export const MIN_BOOST_GAP_BPS = 50;
|
|
22
22
|
|
|
23
23
|
// export const JITO_BLOCK_ENGINE = "ny.mainnet.block-engine.jito.wtf";
|
|
@@ -611,12 +611,13 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
611
611
|
);
|
|
612
612
|
const {
|
|
613
613
|
jupQuote,
|
|
614
|
+
priceImpactBps,
|
|
614
615
|
lookupTableAddresses,
|
|
615
616
|
setupInstructions,
|
|
616
617
|
tokenLedgerIx,
|
|
617
618
|
swapIx,
|
|
618
619
|
} = await getJupSwapTransaction(client.signer, swapDetails, attemptNum);
|
|
619
|
-
const flashLoan = getFlashLoanDetails(client, values, jupQuote);
|
|
620
|
+
const flashLoan = getFlashLoanDetails(client, values, jupQuote, priceImpactBps);
|
|
620
621
|
|
|
621
622
|
let tx = transactionBuilder();
|
|
622
623
|
|
|
@@ -643,7 +644,7 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
643
644
|
"A",
|
|
644
645
|
swapDetails,
|
|
645
646
|
rebalanceType,
|
|
646
|
-
|
|
647
|
+
priceImpactBps,
|
|
647
648
|
flashLoan,
|
|
648
649
|
targetLiqUtilizationRateBps
|
|
649
650
|
),
|
|
@@ -654,7 +655,7 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
654
655
|
"B",
|
|
655
656
|
swapDetails,
|
|
656
657
|
rebalanceType,
|
|
657
|
-
|
|
658
|
+
priceImpactBps,
|
|
658
659
|
flashLoan,
|
|
659
660
|
targetLiqUtilizationRateBps
|
|
660
661
|
),
|
|
@@ -669,7 +670,7 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
669
670
|
"A",
|
|
670
671
|
swapDetails,
|
|
671
672
|
rebalanceType,
|
|
672
|
-
|
|
673
|
+
priceImpactBps,
|
|
673
674
|
undefined,
|
|
674
675
|
targetLiqUtilizationRateBps
|
|
675
676
|
),
|
|
@@ -678,7 +679,7 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
678
679
|
"B",
|
|
679
680
|
swapDetails,
|
|
680
681
|
rebalanceType,
|
|
681
|
-
|
|
682
|
+
priceImpactBps,
|
|
682
683
|
undefined,
|
|
683
684
|
targetLiqUtilizationRateBps
|
|
684
685
|
),
|
|
@@ -719,7 +720,7 @@ export async function convertReferralFeesToDestination(
|
|
|
719
720
|
inputMint: tokenAccountData.mint,
|
|
720
721
|
outputMint: toWeb3JsPublicKey(referralState.destFeesMint),
|
|
721
722
|
exactIn: true,
|
|
722
|
-
|
|
723
|
+
slippageIncFactor: 0.15,
|
|
723
724
|
});
|
|
724
725
|
|
|
725
726
|
let tx = transactionBuilder()
|
|
@@ -21,7 +21,7 @@ export interface JupSwapDetails {
|
|
|
21
21
|
outputMint: PublicKey;
|
|
22
22
|
destinationWallet: PublicKey;
|
|
23
23
|
amount: bigint;
|
|
24
|
-
|
|
24
|
+
slippageIncFactor?: number;
|
|
25
25
|
exactOut?: boolean;
|
|
26
26
|
exactIn?: boolean;
|
|
27
27
|
}
|
|
@@ -42,6 +42,7 @@ function createTransactionInstruction(
|
|
|
42
42
|
|
|
43
43
|
export interface JupSwapTransaction {
|
|
44
44
|
jupQuote: QuoteResponse;
|
|
45
|
+
priceImpactBps: number;
|
|
45
46
|
lookupTableAddresses: string[];
|
|
46
47
|
setupInstructions: TransactionBuilder;
|
|
47
48
|
tokenLedgerIx: TransactionBuilder;
|
|
@@ -65,19 +66,20 @@ export async function getJupSwapTransaction(
|
|
|
65
66
|
: swapDetails.exactIn
|
|
66
67
|
? "ExactIn"
|
|
67
68
|
: undefined,
|
|
68
|
-
slippageBps:
|
|
69
|
+
slippageBps: 30,
|
|
69
70
|
maxAccounts: !swapDetails.exactOut ? 60 : undefined,
|
|
70
71
|
}),
|
|
71
72
|
3
|
|
72
73
|
);
|
|
73
74
|
|
|
75
|
+
const priceImpactBps = (Math.round(toBps(parseFloat(quoteResponse.priceImpactPct))) + 1);
|
|
74
76
|
const finalPriceSlippageBps = Math.round(
|
|
75
77
|
Math.max(
|
|
76
78
|
50,
|
|
77
79
|
quoteResponse.slippageBps,
|
|
78
|
-
|
|
80
|
+
priceImpactBps
|
|
79
81
|
) *
|
|
80
|
-
(1 + (swapDetails.
|
|
82
|
+
(1 + (swapDetails.slippageIncFactor ?? 0))
|
|
81
83
|
);
|
|
82
84
|
quoteResponse.slippageBps = finalPriceSlippageBps;
|
|
83
85
|
console.log(quoteResponse);
|
|
@@ -100,8 +102,13 @@ export async function getJupSwapTransaction(
|
|
|
100
102
|
throw new Error("No swap instruction was returned by Jupiter");
|
|
101
103
|
}
|
|
102
104
|
|
|
105
|
+
console.log("Raw price impact bps:", priceImpactBps);
|
|
106
|
+
const finalPriceImpactBps = priceImpactBps * (1 + (swapDetails.slippageIncFactor ?? 0));
|
|
107
|
+
console.log("Increased price impact bps:", finalPriceImpactBps);
|
|
108
|
+
|
|
103
109
|
return {
|
|
104
110
|
jupQuote: quoteResponse,
|
|
111
|
+
priceImpactBps: finalPriceImpactBps,
|
|
105
112
|
lookupTableAddresses: instructions.addressLookupTableAddresses,
|
|
106
113
|
setupInstructions: transactionBuilder().add(
|
|
107
114
|
instructions.setupInstructions.map((ix) =>
|
|
@@ -250,7 +250,8 @@ export interface FlashLoanDetails {
|
|
|
250
250
|
export function getFlashLoanDetails(
|
|
251
251
|
client: SolautoClient,
|
|
252
252
|
values: RebalanceValues,
|
|
253
|
-
jupQuote: QuoteResponse
|
|
253
|
+
jupQuote: QuoteResponse,
|
|
254
|
+
priceImpactBps: number
|
|
254
255
|
): FlashLoanDetails | undefined {
|
|
255
256
|
let supplyUsd = fromBaseUnit(
|
|
256
257
|
client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
|
|
@@ -263,7 +264,7 @@ export function getFlashLoanDetails(
|
|
|
263
264
|
|
|
264
265
|
const debtAdjustmentWithSlippage =
|
|
265
266
|
Math.abs(values.debtAdjustmentUsd) +
|
|
266
|
-
Math.abs(values.debtAdjustmentUsd) * fromBps(
|
|
267
|
+
Math.abs(values.debtAdjustmentUsd) * fromBps(priceImpactBps);
|
|
267
268
|
supplyUsd =
|
|
268
269
|
values.debtAdjustmentUsd < 0
|
|
269
270
|
? supplyUsd - debtAdjustmentWithSlippage
|
|
@@ -308,7 +309,7 @@ export function getFlashLoanDetails(
|
|
|
308
309
|
? exactAmountBaseUnit +
|
|
309
310
|
BigInt(
|
|
310
311
|
Math.round(
|
|
311
|
-
Number(exactAmountBaseUnit) * fromBps(
|
|
312
|
+
Number(exactAmountBaseUnit) * fromBps(priceImpactBps)
|
|
312
313
|
)
|
|
313
314
|
)
|
|
314
315
|
: toBaseUnit(
|
|
@@ -346,7 +347,7 @@ export function getJupSwapRebalanceDetails(
|
|
|
346
347
|
inputMint: toWeb3JsPublicKey(input.mint),
|
|
347
348
|
outputMint: toWeb3JsPublicKey(output.mint),
|
|
348
349
|
destinationWallet: client.solautoPosition,
|
|
349
|
-
|
|
350
|
+
slippageIncFactor: 0.5 + (attemptNum ?? 0) * 0.2,
|
|
350
351
|
amount: rebalancingToZero
|
|
351
352
|
? client.solautoPositionState!.debt.amountUsed.baseUnit +
|
|
352
353
|
BigInt(
|