@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
|
}
|