@haven-fi/solauto-sdk 1.0.485 → 1.0.487
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.map +1 -1
- package/dist/utils/jupiterUtils.js +21 -11
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +1 -3
- package/package.json +1 -1
- package/src/utils/jupiterUtils.ts +14 -5
- package/src/utils/solanaUtils.ts +19 -21
- package/tests/transactions/solautoMarginfi.ts +2 -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;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"}
|
@@ -39,7 +39,11 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
39
39
|
? "ExactIn"
|
40
40
|
: undefined,
|
41
41
|
slippageBps: memecoinSwap ? 500 : 200,
|
42
|
-
maxAccounts: !swapDetails.exactOut
|
42
|
+
maxAccounts: !swapDetails.exactOut
|
43
|
+
? useLowAccounts
|
44
|
+
? 15
|
45
|
+
: 40
|
46
|
+
: undefined,
|
43
47
|
}), 4, 200);
|
44
48
|
const priceImpactBps = Math.round((0, numberUtils_1.toBps)(parseFloat(quoteResponse.priceImpactPct))) + 1;
|
45
49
|
const finalPriceSlippageBps = Math.round(Math.max(50, quoteResponse.slippageBps, priceImpactBps) *
|
@@ -47,15 +51,21 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
47
51
|
quoteResponse.slippageBps = finalPriceSlippageBps;
|
48
52
|
(0, generalUtils_1.consoleLog)(quoteResponse);
|
49
53
|
(0, generalUtils_1.consoleLog)("Getting jup instructions...");
|
50
|
-
const instructions = await (0, generalUtils_1.retryWithExponentialBackoff)(async () =>
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
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);
|
59
69
|
if (!instructions.swapInstruction) {
|
60
70
|
throw new Error("No swap instruction was returned by Jupiter");
|
61
71
|
}
|
@@ -73,7 +83,7 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
73
83
|
jupQuote: quoteResponse,
|
74
84
|
priceImpactBps: finalPriceImpactBps,
|
75
85
|
lookupTableAddresses: instructions.addressLookupTableAddresses,
|
76
|
-
setupInstructions: (0, umi_1.transactionBuilder)().add(instructions.setupInstructions.map((ix) => (0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(ix)))),
|
86
|
+
setupInstructions: (0, umi_1.transactionBuilder)().add((instructions.setupInstructions ?? []).map((ix) => (0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(ix)))),
|
77
87
|
tokenLedgerIx: (0, umi_1.transactionBuilder)().add(instructions.tokenLedgerInstruction !== undefined
|
78
88
|
? (0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.tokenLedgerInstruction))
|
79
89
|
: (0, umi_1.transactionBuilder)()),
|
@@ -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
@@ -82,7 +82,11 @@ export async function getJupSwapTransaction(
|
|
82
82
|
? "ExactIn"
|
83
83
|
: undefined,
|
84
84
|
slippageBps: memecoinSwap ? 500 : 200,
|
85
|
-
maxAccounts: !swapDetails.exactOut
|
85
|
+
maxAccounts: !swapDetails.exactOut
|
86
|
+
? useLowAccounts
|
87
|
+
? 15
|
88
|
+
: 40
|
89
|
+
: undefined,
|
86
90
|
}),
|
87
91
|
4,
|
88
92
|
200
|
@@ -99,8 +103,8 @@ export async function getJupSwapTransaction(
|
|
99
103
|
|
100
104
|
consoleLog("Getting jup instructions...");
|
101
105
|
const instructions = await retryWithExponentialBackoff(
|
102
|
-
async () =>
|
103
|
-
await jupApi.swapInstructionsPost({
|
106
|
+
async () => {
|
107
|
+
const res = await jupApi.swapInstructionsPost({
|
104
108
|
swapRequest: {
|
105
109
|
userPublicKey: signer.publicKey.toString(),
|
106
110
|
quoteResponse,
|
@@ -111,7 +115,12 @@ export async function getJupSwapTransaction(
|
|
111
115
|
swapDetails.outputMint
|
112
116
|
).toString(),
|
113
117
|
},
|
114
|
-
})
|
118
|
+
});
|
119
|
+
if (!res) {
|
120
|
+
throw new Error("No instructions retrieved");
|
121
|
+
}
|
122
|
+
return res;
|
123
|
+
},
|
115
124
|
4,
|
116
125
|
200
|
117
126
|
);
|
@@ -143,7 +152,7 @@ export async function getJupSwapTransaction(
|
|
143
152
|
priceImpactBps: finalPriceImpactBps,
|
144
153
|
lookupTableAddresses: instructions.addressLookupTableAddresses,
|
145
154
|
setupInstructions: transactionBuilder().add(
|
146
|
-
instructions.setupInstructions.map((ix) =>
|
155
|
+
(instructions.setupInstructions ?? []).map((ix) =>
|
147
156
|
getWrappedInstruction(signer, createTransactionInstruction(ix))
|
148
157
|
)
|
149
158
|
),
|
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();
|
@@ -56,7 +56,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
56
56
|
|
57
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("FKYQs7KgRvaKQHxXwb8HKfoBcFdSxLL3JvHWpPdVQ16v"),
|
76
76
|
// new: true,
|
77
77
|
// marginfiAccount: new PublicKey(
|
78
78
|
// ""
|