@haven-fi/solauto-sdk 1.0.424 → 1.0.426
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/utils/jupiterUtils.d.ts +1 -0
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +8 -1
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +29 -11
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +4 -2
- package/local/logPositions.ts +16 -16
- package/package.json +1 -1
- package/src/utils/jupiterUtils.ts +15 -1
- package/src/utils/solanaUtils.ts +29 -13
- package/src/utils/solauto/rebalanceUtils.ts +5 -2
@@ -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;
|
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,CAmG7B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO;;GAiB5E"}
|
@@ -34,7 +34,7 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
34
34
|
: swapDetails.exactIn
|
35
35
|
? "ExactIn"
|
36
36
|
: undefined,
|
37
|
-
slippageBps: memecoinSwap ? 500 :
|
37
|
+
slippageBps: memecoinSwap ? 500 : 300,
|
38
38
|
maxAccounts: !swapDetails.exactOut ? 45 : undefined,
|
39
39
|
}), 4, 200);
|
40
40
|
const priceImpactBps = Math.round((0, numberUtils_1.toBps)(parseFloat(quoteResponse.priceImpactPct))) + 1;
|
@@ -60,6 +60,13 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
60
60
|
(0, generalUtils_1.consoleLog)("Raw price impact bps:", priceImpactBps);
|
61
61
|
const finalPriceImpactBps = priceImpactBps * (1 + (swapDetails.slippageIncFactor ?? 0));
|
62
62
|
(0, generalUtils_1.consoleLog)("Increased price impact bps:", finalPriceImpactBps);
|
63
|
+
if (swapDetails.addPadding) {
|
64
|
+
(0, generalUtils_1.consoleLog)("Raw inAmount:", quoteResponse.inAmount);
|
65
|
+
quoteResponse.inAmount = Math.round(parseInt(quoteResponse.inAmount) +
|
66
|
+
parseInt(quoteResponse.inAmount) *
|
67
|
+
Math.max((0, numberUtils_1.fromBps)(finalPriceImpactBps), (0, numberUtils_1.fromBps)(finalPriceImpactBps) / 2)).toString();
|
68
|
+
(0, generalUtils_1.consoleLog)("Increased inAmount:", quoteResponse.inAmount);
|
69
|
+
}
|
63
70
|
return {
|
64
71
|
jupQuote: quoteResponse,
|
65
72
|
priceImpactBps: finalPriceImpactBps,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAIL,UAAU,EACV,SAAS,EAKT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAIlE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAE3D;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,SAAgC,GAC1C,CAAC,UAAU,EAAE,GAAG,CAAC,CAQnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAmBpC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBAa1B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBA2D1B;AAuBD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,eAAe,EAAE,kBAAkB,EACnC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,
|
1
|
+
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAIL,UAAU,EACV,SAAS,EAKT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAIlE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAE3D;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,SAAgC,GAC1C,CAAC,UAAU,EAAE,GAAG,CAAC,CAQnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAmBpC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBAa1B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBA2D1B;AAuBD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,eAAe,EAAE,kBAAkB,EACnC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwC7B;AAiDD,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,kBAAkB,EACtB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,eAAe,GAAE,kBAA2C,EAC5D,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAmEjC"}
|
@@ -156,18 +156,36 @@ async function getComputeUnitPriceEstimate(umi, tx, prioritySetting, useAccounts
|
|
156
156
|
.getInstructions()
|
157
157
|
.flatMap((x) => x.keys.flatMap((x) => x.pubkey.toString()));
|
158
158
|
let feeEstimate;
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
159
|
+
try {
|
160
|
+
const resp = await umi.rpc.call("getPriorityFeeEstimate", [
|
161
|
+
{
|
162
|
+
transaction: !useAccounts
|
163
|
+
? bs58_1.default.encode(web3Transaction.serialize())
|
164
|
+
: undefined,
|
165
|
+
accountKeys: useAccounts ? accountKeys : undefined,
|
166
|
+
options: {
|
167
|
+
priorityLevel: prioritySetting.toString(),
|
168
|
+
},
|
167
169
|
},
|
168
|
-
|
169
|
-
|
170
|
-
|
170
|
+
]);
|
171
|
+
feeEstimate = Math.round(resp.priorityFeeEstimate);
|
172
|
+
}
|
173
|
+
catch (e) {
|
174
|
+
try {
|
175
|
+
const resp = await umi.rpc.call("getPriorityFeeEstimate", [
|
176
|
+
{
|
177
|
+
accountKeys,
|
178
|
+
options: {
|
179
|
+
priorityLevel: prioritySetting.toString(),
|
180
|
+
},
|
181
|
+
},
|
182
|
+
]);
|
183
|
+
feeEstimate = Math.round(resp.priorityFeeEstimate);
|
184
|
+
}
|
185
|
+
catch (e) {
|
186
|
+
// console.error(e);
|
187
|
+
}
|
188
|
+
}
|
171
189
|
return feeEstimate;
|
172
190
|
}
|
173
191
|
async function spamSendTransactionUntilConfirmed(connection, transaction, blockhash, spamInterval = 1500) {
|
@@ -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;AAajD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmI9C,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;CACjB;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,CAwDjB;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,GACtB,gBAAgB,GAAG,SAAS,CAuE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,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,EAAE,MAAM,iBAAiB,CAAC;AAajD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmI9C,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;CACjB;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,CAwDjB;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,GACtB,gBAAgB,GAAG,SAAS,CAuE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CA8ChB"}
|
@@ -122,7 +122,7 @@ function getFlashLoanDetails(client, values, jupQuote) {
|
|
122
122
|
? debtUsd + debtAdjustmentUsdAbs
|
123
123
|
: debtUsd;
|
124
124
|
const tempLiqUtilizationRateBps = (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, client.solautoPositionState.liqThresholdBps);
|
125
|
-
const maxLiqUtilizationRateBps = (0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.
|
125
|
+
const maxLiqUtilizationRateBps = (0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.02);
|
126
126
|
const requiresFlashLoan = supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
|
127
127
|
(0, generalUtils_2.consoleLog)("Requires flash loan:", requiresFlashLoan);
|
128
128
|
(0, generalUtils_2.consoleLog)("Intermediary liq utilization rate:", tempLiqUtilizationRateBps, `$${supplyUsd}`, `$${debtUsd}`, "Max:", maxLiqUtilizationRateBps);
|
@@ -166,13 +166,15 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
|
|
166
166
|
: (0, numberUtils_1.toBaseUnit)(usdToSwap / (0, priceUtils_1.safeGetPrice)(output.mint), output.decimals);
|
167
167
|
const exactOut = targetLiqUtilizationRateBps === 0 || values.repayingCloseToMaxLtv;
|
168
168
|
const exactIn = !exactOut;
|
169
|
+
const addPadding = targetLiqUtilizationRateBps === 0;
|
169
170
|
return {
|
170
171
|
inputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(input.mint),
|
171
172
|
outputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(output.mint),
|
172
173
|
destinationWallet: client.solautoPosition,
|
173
|
-
slippageIncFactor:
|
174
|
+
slippageIncFactor: 0.5 + (attemptNum ?? 0) * 0.25,
|
174
175
|
amount: exactOut ? outputAmount : inputAmount,
|
175
176
|
exactIn: exactIn,
|
176
177
|
exactOut: exactOut,
|
178
|
+
addPadding,
|
177
179
|
};
|
178
180
|
}
|
package/local/logPositions.ts
CHANGED
@@ -2,6 +2,7 @@ import { publicKey } from "@metaplex-foundation/umi";
|
|
2
2
|
import {
|
3
3
|
buildHeliusApiUrl,
|
4
4
|
fetchTokenPrices,
|
5
|
+
fromBaseUnit,
|
5
6
|
getSolanaRpcConnection,
|
6
7
|
getSolautoManagedPositions,
|
7
8
|
PositionState,
|
@@ -17,7 +18,6 @@ import {
|
|
17
18
|
import { PublicKey, SystemProgram, VersionedTransaction } from "@solana/web3.js";
|
18
19
|
import { NATIVE_MINT } from "@solana/spl-token";
|
19
20
|
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
20
|
-
import { fromBaseUnit } from "../dist";
|
21
21
|
import path from "path";
|
22
22
|
import { config } from "dotenv";
|
23
23
|
|
@@ -240,18 +240,18 @@ function decodeVersionedTx(base58Tx: string) {
|
|
240
240
|
return { versionedTx, signatures };
|
241
241
|
}
|
242
242
|
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
console.log(
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
);
|
251
|
-
console.log(
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
);
|
256
|
-
|
257
|
-
console.log(SystemProgram.programId.toString());
|
243
|
+
const filterWhitelist = true;
|
244
|
+
main(filterWhitelist).then((x) => x);
|
245
|
+
|
246
|
+
// console.log(
|
247
|
+
// decodeVersionedTx(
|
248
|
+
// "mQkqpyEB1JEkGUsowzhUXvn2v1kwdGYApNGDUsRZ1BmpmKJhMUXQhmyZoDXKPtVhcjgWQHqN6S94p2fNiPxyRhBUvN1Vs5HjbhdVjhhG4XEDCXRw4K2PPEeTowWf7N5GjQ4wZdpdP8UZtnz3CXtbkCYGnxfjt6AtanQXsJpWUpC84g7ZSfYiNAYRv2geHp6E13yNXya9FGFekmsN3S9UcmWJTQgLu9vFxmL9S6DD6npDK7wPyZ66dcKWTMg2nb8Drig8aLAiFRnkqC99QjN7YYG65qq9VkzTC7o8EbGddddrfLu6Hyk2SgEqebMvhiV729y3sWpDpbbKakknJj4PUodasfKza4XNg3jRGBoVRxvSb3QGFdhbDJa86YvQbsP7pWLqMuJcoaGX3uLgsBFA2z8kGmZBuzGAS3FtgnmE7L8dFMLWGDDKTdFwsTbeZQJsGGtn5sy627onUqyTxHy9UfuBz57h3kd26yUBUmbR9RVgCX2WMSHdEW58uYd2BYbAG4NVQYCzgcWzZEjayXn73fo2Y72Y4BrxnKcqJ8WixHjaj7PPRdvX87wxiHy9b8CxsngKhYM5sWoXVWj5CAq6drS2g7b4b7CZzjeQYkCF"
|
249
|
+
// )
|
250
|
+
// );
|
251
|
+
// console.log(
|
252
|
+
// decodeVersionedTx(
|
253
|
+
// "e6uLxBWUSbPnkYKPWoyoR6YZw7Qt4NnZcabGwaAChdAN4N4GFwvxMxwq3mrxoRM3CDzPHhAh7rbEmzAzyA8pJAhGAaDWfCG3CjnVoWbpdDQvpwUxRffK3xFDGqJeoQvQBvQtZidwaDvDnnkJ6xRgsnpujS65jcGP5AsECsaJ2uRMSsLt8ucynZjQzVw24jqaYRRmUN4otF2mSgbgkXLu9G82g8sfcj3VQuZxoA9Hrpm9kTMNu28R9wRG9yZKCQozSJjL4GGwe3ZMDRdfggbq9xPddNcHFgUGk6PYHgLvVWTr8GSLQpj8HLdtekxdywwXYcK3oS8RNmgrnbm6o7PADSWRYZhAHJLD8G92N5yCnFy8sRGHhMosdgQ5TjF8d5uG92tMfmS67VkjSJqMsX6pZnhnN9K5EFmdZxutaHMuyo5kv9DoXivrCdQrku5yfYbfCPgPY3Ei25tBYN1kTLYXoJvdUuxehjLkR2pVseae2TbApigLAhdvrxGNHLZTncunfp18c2kmWVrwLqc7UPANuKSmNAyy4ntU9nL1zkA9WTxFLsNK5xZukZi8vsK8XoM8f1wyyoiGHPHCF5i2QAat1kwEZ71GdRodeumYb96GwLyskbJJo8g8Yp5oVQhLeKopTSezEgJ3awQCgpd4xqg3rd9ijvRUq5g3aR2NbmrtEZUxumuf5G2RfPK5Nx7MFUuJeT2Pn6LHShsGCzsKt1GewgErWSJMNktBgkJkAyWMQkxt6No8ZSKjDbrnyQEGuuXLKCeMhdFFC6dm8oMgiWC6KLJjzLkG5T4iySKnYcM7pCKtfZLLXXTEGJ8Zz3rqspCGozrwzUGeL86FFqqNNCHFY2Zx2de75krrPo5QfiLMQ1ECgMkLbrmYTx8owsPeM3nDgmMTpooKoVp94GZi22XCda9F3M7HTHrMXsAjNHm7C26VSUbKJCySneNnKzpZ3wP88Kf8qmq6B392k3HdaUyoWXMTaBHKnkzhyMECXSzxbpZPoNa4ra6bscXUSqQijSg2uh6TR7X7hLEmDQKuDTbTVL62oMvw1qgNtsQmkeZFhrumLHj4askbDFzV8ghK15T6GDDnN9gEaFKZU7LbyWscJjdb4RGHy79LCYB2iAg6kJw4efc6p16gqKqnYPBJdXbJjXHKZpUhrJa8YcSwbFWM3YabHNFxwjNHzXJydEg37DpAjjaLVfBhcVCXEBh8K7FcojQ9yT6u3HMjFZwV4fvrBBBSMiNrhvgFVUAQtUaFVmx4BhMvkJTPsR6UrXp4HCPXgohUEUtFEJeyGQPEibBqwgjUpMLWyKUAxjKpYQ3AmdjnseE23njArKaEwrRQA4NnxpUUazzsWJqHymHPJG73GQhQtxNtvfDDMVSj95UkiscssHNEpkt6dqLeohDR1rP2kg41EBGQMNEdeYtUt1JkzdjZBsvU1oV81GG1tEQoSUR1skjq9tWpfoiSPVN9QTQC3kQUgZQQPR9arK5XWqj6y5iPnusQk8zdzoHJt5EFm7aagfLG3uJxdd9ZF7Gk4tMzijx5d1fV1uGhcxAyb5B5m8nkCdap"
|
254
|
+
// )
|
255
|
+
// );
|
256
|
+
|
257
|
+
// console.log(SystemProgram.programId.toString());
|
package/package.json
CHANGED
@@ -25,6 +25,7 @@ export interface JupSwapDetails {
|
|
25
25
|
slippageIncFactor?: number;
|
26
26
|
exactOut?: boolean;
|
27
27
|
exactIn?: boolean;
|
28
|
+
addPadding?: boolean;
|
28
29
|
}
|
29
30
|
|
30
31
|
function createTransactionInstruction(
|
@@ -70,7 +71,7 @@ export async function getJupSwapTransaction(
|
|
70
71
|
: swapDetails.exactIn
|
71
72
|
? "ExactIn"
|
72
73
|
: undefined,
|
73
|
-
slippageBps: memecoinSwap ? 500 :
|
74
|
+
slippageBps: memecoinSwap ? 500 : 300,
|
74
75
|
maxAccounts: !swapDetails.exactOut ? 45 : undefined,
|
75
76
|
}),
|
76
77
|
4,
|
@@ -116,6 +117,19 @@ export async function getJupSwapTransaction(
|
|
116
117
|
priceImpactBps * (1 + (swapDetails.slippageIncFactor ?? 0));
|
117
118
|
consoleLog("Increased price impact bps:", finalPriceImpactBps);
|
118
119
|
|
120
|
+
if (swapDetails.addPadding) {
|
121
|
+
consoleLog("Raw inAmount:", quoteResponse.inAmount);
|
122
|
+
quoteResponse.inAmount = Math.round(
|
123
|
+
parseInt(quoteResponse.inAmount) +
|
124
|
+
parseInt(quoteResponse.inAmount) *
|
125
|
+
Math.max(
|
126
|
+
fromBps(finalPriceImpactBps),
|
127
|
+
fromBps(finalPriceImpactBps) / 2
|
128
|
+
)
|
129
|
+
).toString();
|
130
|
+
consoleLog("Increased inAmount:", quoteResponse.inAmount);
|
131
|
+
}
|
132
|
+
|
119
133
|
return {
|
120
134
|
jupQuote: quoteResponse,
|
121
135
|
priceImpactBps: finalPriceImpactBps,
|
package/src/utils/solanaUtils.ts
CHANGED
@@ -300,19 +300,35 @@ export async function getComputeUnitPriceEstimate(
|
|
300
300
|
.getInstructions()
|
301
301
|
.flatMap((x) => x.keys.flatMap((x) => x.pubkey.toString()));
|
302
302
|
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
303
|
+
let feeEstimate: number | undefined;
|
304
|
+
try {
|
305
|
+
const resp = await umi.rpc.call("getPriorityFeeEstimate", [
|
306
|
+
{
|
307
|
+
transaction: !useAccounts
|
308
|
+
? bs58.encode(web3Transaction.serialize())
|
309
|
+
: undefined,
|
310
|
+
accountKeys: useAccounts ? accountKeys : undefined,
|
311
|
+
options: {
|
312
|
+
priorityLevel: prioritySetting.toString(),
|
313
|
+
},
|
314
|
+
},
|
315
|
+
]);
|
316
|
+
feeEstimate = Math.round((resp as any).priorityFeeEstimate as number);
|
317
|
+
} catch (e) {
|
318
|
+
try {
|
319
|
+
const resp = await umi.rpc.call("getPriorityFeeEstimate", [
|
320
|
+
{
|
321
|
+
accountKeys,
|
322
|
+
options: {
|
323
|
+
priorityLevel: prioritySetting.toString(),
|
324
|
+
},
|
325
|
+
},
|
326
|
+
]);
|
327
|
+
feeEstimate = Math.round((resp as any).priorityFeeEstimate as number);
|
328
|
+
} catch (e) {
|
329
|
+
// console.error(e);
|
330
|
+
}
|
331
|
+
}
|
316
332
|
|
317
333
|
return feeEstimate;
|
318
334
|
}
|
@@ -275,7 +275,7 @@ export function getFlashLoanDetails(
|
|
275
275
|
const maxLiqUtilizationRateBps = getMaxLiqUtilizationRateBps(
|
276
276
|
client.solautoPositionState!.maxLtvBps,
|
277
277
|
client.solautoPositionState!.liqThresholdBps,
|
278
|
-
0.
|
278
|
+
0.02
|
279
279
|
);
|
280
280
|
const requiresFlashLoan =
|
281
281
|
supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
|
@@ -357,13 +357,16 @@ export function getJupSwapRebalanceDetails(
|
|
357
357
|
targetLiqUtilizationRateBps === 0 || values.repayingCloseToMaxLtv;
|
358
358
|
const exactIn = !exactOut;
|
359
359
|
|
360
|
+
const addPadding = targetLiqUtilizationRateBps === 0;
|
361
|
+
|
360
362
|
return {
|
361
363
|
inputMint: toWeb3JsPublicKey(input.mint),
|
362
364
|
outputMint: toWeb3JsPublicKey(output.mint),
|
363
365
|
destinationWallet: client.solautoPosition,
|
364
|
-
slippageIncFactor:
|
366
|
+
slippageIncFactor: 0.5 + (attemptNum ?? 0) * 0.25,
|
365
367
|
amount: exactOut ? outputAmount : inputAmount,
|
366
368
|
exactIn: exactIn,
|
367
369
|
exactOut: exactOut,
|
370
|
+
addPadding,
|
368
371
|
};
|
369
372
|
}
|