@haven-fi/solauto-sdk 1.0.484 → 1.0.486
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 +4 -1
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +23 -12
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +1 -3
- package/package.json +1 -1
- package/src/transactions/transactionsManager.ts +10 -5
- package/src/utils/jupiterUtils.ts +22 -8
- package/src/utils/solanaUtils.ts +19 -21
- package/tests/transactions/solautoMarginfi.ts +6 -6
@@ -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;
|
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;AAa7D,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;IAmGzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YAkCxB,6BAA6B;YAsI7B,qBAAqB;YAoDrB,eAAe;YA0Df,eAAe;CA4D9B"}
|
@@ -14,6 +14,7 @@ const web3_js_1 = require("@solana/web3.js");
|
|
14
14
|
const switchboardConstants_1 = require("../constants/switchboardConstants");
|
15
15
|
const utils_1 = require("../utils");
|
16
16
|
const jitoUtils_1 = require("../utils/jitoUtils");
|
17
|
+
const jupiter_sdk_1 = require("../jupiter-sdk");
|
17
18
|
const CHORES_TX_NAME = "account chores";
|
18
19
|
const MAX_SUPPORTED_ACCOUNT_LOCKS = 64;
|
19
20
|
class TransactionTooLargeError extends Error {
|
@@ -270,7 +271,9 @@ class TransactionsManager {
|
|
270
271
|
for (const item of items) {
|
271
272
|
await item.initialize();
|
272
273
|
}
|
273
|
-
const allAccounts = items
|
274
|
+
const allAccounts = items
|
275
|
+
.filter((x) => x.tx?.getInstructions().find((x) => x.programId !== jupiter_sdk_1.JUPITER_PROGRAM_ID))
|
276
|
+
.flatMap((x) => x.tx
|
274
277
|
?.getInstructions()
|
275
278
|
.flatMap((x) => x.keys.map((x) => x.pubkey.toString())));
|
276
279
|
const swbOracle = allAccounts.find((x) => Object.values(switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS).includes(x ?? ""));
|
@@ -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"}
|
@@ -25,9 +25,10 @@ function createTransactionInstruction(instruction) {
|
|
25
25
|
async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
26
26
|
const memecoinSwap = constants_1.TOKEN_INFO[swapDetails.inputMint.toString()].isMeme ||
|
27
27
|
constants_1.TOKEN_INFO[swapDetails.outputMint.toString()].isMeme;
|
28
|
+
const tokensWithLowAccounts = [constants_1.PYTH, constants_1.INF];
|
28
29
|
// TEMP REVERT ME
|
29
|
-
const
|
30
|
-
swapDetails.outputMint.equals(new web3_js_1.PublicKey(
|
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)));
|
31
32
|
const quoteResponse = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await jupApi.quoteGet({
|
32
33
|
amount: Number(swapDetails.amount),
|
33
34
|
inputMint: swapDetails.inputMint.toString(),
|
@@ -38,7 +39,11 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
38
39
|
? "ExactIn"
|
39
40
|
: undefined,
|
40
41
|
slippageBps: memecoinSwap ? 500 : 200,
|
41
|
-
maxAccounts: !swapDetails.exactOut
|
42
|
+
maxAccounts: !swapDetails.exactOut
|
43
|
+
? useLowAccounts
|
44
|
+
? 15
|
45
|
+
: 40
|
46
|
+
: undefined,
|
42
47
|
}), 4, 200);
|
43
48
|
const priceImpactBps = Math.round((0, numberUtils_1.toBps)(parseFloat(quoteResponse.priceImpactPct))) + 1;
|
44
49
|
const finalPriceSlippageBps = Math.round(Math.max(50, quoteResponse.slippageBps, priceImpactBps) *
|
@@ -46,15 +51,21 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
46
51
|
quoteResponse.slippageBps = finalPriceSlippageBps;
|
47
52
|
(0, generalUtils_1.consoleLog)(quoteResponse);
|
48
53
|
(0, generalUtils_1.consoleLog)("Getting jup instructions...");
|
49
|
-
const instructions = await (0, generalUtils_1.retryWithExponentialBackoff)(async () =>
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
const instructions = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
|
55
|
+
const res = await jupApi.swapInstructionsPost({
|
56
|
+
swapRequest: {
|
57
|
+
userPublicKey: signer.publicKey.toString(),
|
58
|
+
quoteResponse,
|
59
|
+
wrapAndUnwrapSol: false,
|
60
|
+
useTokenLedger: !swapDetails.exactOut && !swapDetails.exactIn,
|
61
|
+
destinationTokenAccount: (0, accountUtils_1.getTokenAccount)(swapDetails.destinationWallet, swapDetails.outputMint).toString(),
|
62
|
+
},
|
63
|
+
});
|
64
|
+
if (!res) {
|
65
|
+
throw new Error("No instructions retrieved");
|
66
|
+
}
|
67
|
+
return res;
|
68
|
+
}, 4, 200);
|
58
69
|
if (!instructions.swapInstruction) {
|
59
70
|
throw new Error("No swap instruction was returned by Jupiter");
|
60
71
|
}
|
@@ -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,CAwC7B;
|
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;AA+CD,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"}
|
@@ -196,9 +196,7 @@ async function spamSendTransactionUntilConfirmed(connection, transaction, blockh
|
|
196
196
|
transactionSignature = txSignature;
|
197
197
|
(0, generalUtils_1.consoleLog)(`Transaction sent`);
|
198
198
|
}
|
199
|
-
catch (
|
200
|
-
(0, generalUtils_1.consoleLog)("Error sending transaction:", error);
|
201
|
-
}
|
199
|
+
catch (e) { }
|
202
200
|
};
|
203
201
|
await sendTx();
|
204
202
|
const sendIntervalId = setInterval(async () => {
|
package/package.json
CHANGED
@@ -31,6 +31,7 @@ import {
|
|
31
31
|
import { SWITCHBOARD_PRICE_FEED_IDS } from "../constants/switchboardConstants";
|
32
32
|
import { buildSwbSubmitResponseTx, getSwitchboardFeedData } from "../utils";
|
33
33
|
import { sendJitoBundledTransactions } from "../utils/jitoUtils";
|
34
|
+
import { JUPITER_PROGRAM_ID } from "../jupiter-sdk";
|
34
35
|
|
35
36
|
const CHORES_TX_NAME = "account chores";
|
36
37
|
const MAX_SUPPORTED_ACCOUNT_LOCKS = 64;
|
@@ -433,11 +434,15 @@ export class TransactionsManager {
|
|
433
434
|
await item.initialize();
|
434
435
|
}
|
435
436
|
|
436
|
-
const allAccounts = items
|
437
|
-
x
|
438
|
-
?.getInstructions()
|
439
|
-
|
440
|
-
|
437
|
+
const allAccounts = items
|
438
|
+
.filter((x) =>
|
439
|
+
x.tx?.getInstructions().find((x) => x.programId !== JUPITER_PROGRAM_ID)
|
440
|
+
)
|
441
|
+
.flatMap((x) =>
|
442
|
+
x.tx
|
443
|
+
?.getInstructions()
|
444
|
+
.flatMap((x) => x.keys.map((x) => x.pubkey.toString()))
|
445
|
+
);
|
441
446
|
const swbOracle = allAccounts.find((x) =>
|
442
447
|
Object.values(SWITCHBOARD_PRICE_FEED_IDS).includes(x ?? "")
|
443
448
|
);
|
@@ -13,7 +13,7 @@ import {
|
|
13
13
|
} from "@jup-ag/api";
|
14
14
|
import { getTokenAccount } from "./accountUtils";
|
15
15
|
import { consoleLog, retryWithExponentialBackoff } from "./generalUtils";
|
16
|
-
import { PYTH, TOKEN_INFO } from "../constants";
|
16
|
+
import { INF, PYTH, TOKEN_INFO } from "../constants";
|
17
17
|
|
18
18
|
const jupApi = createJupiterApiClient();
|
19
19
|
|
@@ -60,10 +60,15 @@ export async function getJupSwapTransaction(
|
|
60
60
|
TOKEN_INFO[swapDetails.inputMint.toString()].isMeme ||
|
61
61
|
TOKEN_INFO[swapDetails.outputMint.toString()].isMeme;
|
62
62
|
|
63
|
+
const tokensWithLowAccounts = [PYTH, INF];
|
63
64
|
// TEMP REVERT ME
|
64
|
-
const
|
65
|
-
|
66
|
-
|
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
|
+
);
|
67
72
|
|
68
73
|
const quoteResponse = await retryWithExponentialBackoff(
|
69
74
|
async () =>
|
@@ -77,7 +82,11 @@ export async function getJupSwapTransaction(
|
|
77
82
|
? "ExactIn"
|
78
83
|
: undefined,
|
79
84
|
slippageBps: memecoinSwap ? 500 : 200,
|
80
|
-
maxAccounts: !swapDetails.exactOut
|
85
|
+
maxAccounts: !swapDetails.exactOut
|
86
|
+
? useLowAccounts
|
87
|
+
? 15
|
88
|
+
: 40
|
89
|
+
: undefined,
|
81
90
|
}),
|
82
91
|
4,
|
83
92
|
200
|
@@ -94,8 +103,8 @@ export async function getJupSwapTransaction(
|
|
94
103
|
|
95
104
|
consoleLog("Getting jup instructions...");
|
96
105
|
const instructions = await retryWithExponentialBackoff(
|
97
|
-
async () =>
|
98
|
-
await jupApi.swapInstructionsPost({
|
106
|
+
async () => {
|
107
|
+
const res = await jupApi.swapInstructionsPost({
|
99
108
|
swapRequest: {
|
100
109
|
userPublicKey: signer.publicKey.toString(),
|
101
110
|
quoteResponse,
|
@@ -106,7 +115,12 @@ export async function getJupSwapTransaction(
|
|
106
115
|
swapDetails.outputMint
|
107
116
|
).toString(),
|
108
117
|
},
|
109
|
-
})
|
118
|
+
});
|
119
|
+
if (!res) {
|
120
|
+
throw new Error("No instructions retrieved");
|
121
|
+
}
|
122
|
+
return res;
|
123
|
+
},
|
110
124
|
4,
|
111
125
|
200
|
112
126
|
);
|
package/src/utils/solanaUtils.ts
CHANGED
@@ -300,14 +300,25 @@ export async function getComputeUnitPriceEstimate(
|
|
300
300
|
.getInstructions()
|
301
301
|
.flatMap((x) => x.keys.flatMap((x) => x.pubkey.toString()));
|
302
302
|
|
303
|
-
|
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) {
|
304
318
|
try {
|
305
319
|
const resp = await umi.rpc.call("getPriorityFeeEstimate", [
|
306
320
|
{
|
307
|
-
|
308
|
-
? bs58.encode(web3Transaction.serialize())
|
309
|
-
: undefined,
|
310
|
-
accountKeys: useAccounts ? accountKeys : undefined,
|
321
|
+
accountKeys,
|
311
322
|
options: {
|
312
323
|
priorityLevel: prioritySetting.toString(),
|
313
324
|
},
|
@@ -315,20 +326,9 @@ export async function getComputeUnitPriceEstimate(
|
|
315
326
|
]);
|
316
327
|
feeEstimate = Math.round((resp as any).priorityFeeEstimate as number);
|
317
328
|
} catch (e) {
|
318
|
-
|
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
|
-
}
|
329
|
+
// console.error(e);
|
331
330
|
}
|
331
|
+
}
|
332
332
|
|
333
333
|
return feeEstimate;
|
334
334
|
}
|
@@ -349,9 +349,7 @@ async function spamSendTransactionUntilConfirmed(
|
|
349
349
|
);
|
350
350
|
transactionSignature = txSignature;
|
351
351
|
consoleLog(`Transaction sent`);
|
352
|
-
} catch (
|
353
|
-
consoleLog("Error sending transaction:", error);
|
354
|
-
}
|
352
|
+
} catch (e) {}
|
355
353
|
};
|
356
354
|
|
357
355
|
await sendTx();
|
@@ -51,12 +51,12 @@ export function getFlooredTimestampByMinute(
|
|
51
51
|
}
|
52
52
|
|
53
53
|
describe("Solauto Marginfi tests", async () => {
|
54
|
-
const signer = setupTest();
|
55
|
-
|
54
|
+
// const signer = setupTest();
|
55
|
+
const signer = setupTest("solauto-manager");
|
56
56
|
|
57
|
-
const payForTransactions =
|
57
|
+
const payForTransactions = true;
|
58
58
|
const testProgram = false;
|
59
|
-
const positionId =
|
59
|
+
const positionId = 2;
|
60
60
|
|
61
61
|
it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
|
62
62
|
const client = new SolautoMarginfiClient(
|
@@ -72,7 +72,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
72
72
|
await client.initialize({
|
73
73
|
signer,
|
74
74
|
positionId,
|
75
|
-
authority: new PublicKey("
|
75
|
+
authority: new PublicKey("7yk7HcAJfwNao3NSbYiPNtJvCPTxsgkzuJmyMLyP297E"),
|
76
76
|
// new: true,
|
77
77
|
// marginfiAccount: new PublicKey(
|
78
78
|
// ""
|
@@ -169,7 +169,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
169
169
|
transactionItems.push(
|
170
170
|
new TransactionItem(
|
171
171
|
async (attemptNum) =>
|
172
|
-
await buildSolautoRebalanceTransaction(client,
|
172
|
+
await buildSolautoRebalanceTransaction(client, undefined, attemptNum),
|
173
173
|
"rebalance"
|
174
174
|
)
|
175
175
|
);
|