@haven-fi/solauto-sdk 1.0.803 → 1.0.805
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/services/swap/jupSwapManager.d.ts +1 -1
- package/dist/services/swap/jupSwapManager.d.ts.map +1 -1
- package/dist/services/swap/jupSwapManager.js +0 -1
- package/dist/utils/switchboardUtils.d.ts +4 -1
- package/dist/utils/switchboardUtils.d.ts.map +1 -1
- package/dist/utils/switchboardUtils.js +13 -6
- package/local/txSandbox.ts +7 -2
- package/package.json +2 -2
- package/src/services/swap/jupSwapManager.ts +0 -1
- package/src/utils/switchboardUtils.ts +22 -10
- package/dist/idls/switchboard.json +0 -1949
- package/src/idls/switchboard.json +0 -1949
@@ -25,7 +25,7 @@ export interface JupSwapTransactionData {
|
|
25
25
|
export declare class JupSwapManager {
|
26
26
|
private signer;
|
27
27
|
private limitSize?;
|
28
|
-
jupApi: import("@jup-ag/api").
|
28
|
+
jupApi: import("@jup-ag/api").SwapApi;
|
29
29
|
jupQuote: QuoteResponse | undefined;
|
30
30
|
constructor(signer: Signer, limitSize?: boolean | undefined);
|
31
31
|
getQuote(data: SwapInput): Promise<QuoteResponse>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"jupSwapManager.d.ts","sourceRoot":"","sources":["../../../src/services/swap/jupSwapManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAEL,aAAa,EAEd,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,qBAAa,cAAc;IAQvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS,CAAC;IARpB,MAAM,
|
1
|
+
{"version":3,"file":"jupSwapManager.d.ts","sourceRoot":"","sources":["../../../src/services/swap/jupSwapManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAEL,aAAa,EAEd,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,qBAAa,cAAc;IAQvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS,CAAC;IARpB,MAAM,gCAEH;IAEI,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAa;gBAG7C,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,OAAO,YAAA;IAGhB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;YA+BhD,kBAAkB;IAqChC,cAAc;IAId,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,0BAA0B;IAc5B,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA4CnE,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAYlE"}
|
@@ -46,7 +46,6 @@ class JupSwapManager {
|
|
46
46
|
userPublicKey: this.signer.publicKey.toString(),
|
47
47
|
quoteResponse: this.jupQuote,
|
48
48
|
wrapAndUnwrapSol: data.wrapAndUnwrapSol ?? false,
|
49
|
-
useTokenLedger: !data.exactOut && !data.exactIn,
|
50
49
|
destinationTokenAccount: (0, utils_1.getTokenAccount)(data.destinationWallet ??
|
51
50
|
(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), data.outputMint).toString(),
|
52
51
|
},
|
@@ -2,7 +2,10 @@ import { Connection, PublicKey } from "@solana/web3.js";
|
|
2
2
|
import { Signer } from "@metaplex-foundation/umi";
|
3
3
|
import * as OnDemand from "@switchboard-xyz/on-demand";
|
4
4
|
import { TransactionItemInputs } from "../types";
|
5
|
-
export declare function getPullFeed(conn: Connection, mint: PublicKey, wallet?: PublicKey): Promise<
|
5
|
+
export declare function getPullFeed(conn: Connection, mint: PublicKey, wallet?: PublicKey): Promise<{
|
6
|
+
gateway: OnDemand.Gateway;
|
7
|
+
feed: OnDemand.PullFeed;
|
8
|
+
}>;
|
6
9
|
export declare function buildSwbSubmitResponseTx(conn: Connection, signer: Signer, mint: PublicKey): Promise<TransactionItemInputs | undefined>;
|
7
10
|
export declare function getSwitchboardFeedData(conn: Connection, mints: PublicKey[]): Promise<{
|
8
11
|
mint: PublicKey;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"switchboardUtils.d.ts","sourceRoot":"","sources":["../../src/utils/switchboardUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAsB,MAAM,0BAA0B,CAAC;AAGtE,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;
|
1
|
+
{"version":3,"file":"switchboardUtils.d.ts","sourceRoot":"","sources":["../../src/utils/switchboardUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAsB,MAAM,0BAA0B,CAAC;AAGtE,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AASjD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,SAAS;;;GAkCnB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAmD5C;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAuB/D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,WAEzD"}
|
@@ -45,6 +45,7 @@ const OnDemand = __importStar(require("@switchboard-xyz/on-demand"));
|
|
45
45
|
const constants_1 = require("../constants");
|
46
46
|
const generalUtils_1 = require("./generalUtils");
|
47
47
|
const solanaUtils_1 = require("./solanaUtils");
|
48
|
+
const common_1 = require("@switchboard-xyz/common");
|
48
49
|
async function getPullFeed(conn, mint, wallet) {
|
49
50
|
const dummyWallet = {
|
50
51
|
publicKey: wallet ?? new web3_js_1.PublicKey("11111111111111111111111111111111"),
|
@@ -53,19 +54,25 @@ async function getPullFeed(conn, mint, wallet) {
|
|
53
54
|
};
|
54
55
|
const provider = new anchor_1.AnchorProvider(conn, dummyWallet, anchor_1.AnchorProvider.defaultOptions());
|
55
56
|
(0, generalUtils_1.consoleLog)("Pulling SWB program...");
|
56
|
-
const { PullFeed, ON_DEMAND_MAINNET_PID } = OnDemand;
|
57
|
+
const { PullFeed, Queue, ON_DEMAND_MAINNET_PID } = OnDemand;
|
57
58
|
const sbProgram = await anchor_1.Program.at(ON_DEMAND_MAINNET_PID, provider);
|
59
|
+
const crossbar = new common_1.CrossbarClient("https://integrator-crossbar.mrgn.app/");
|
60
|
+
const queue = await Queue.loadDefault(sbProgram);
|
61
|
+
const gateway = await queue.fetchGatewayFromCrossbar(crossbar);
|
58
62
|
(0, generalUtils_1.consoleLog)("Pulled SWB program!");
|
59
63
|
(0, generalUtils_1.consoleLog)("Feed id:", constants_1.SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId);
|
60
|
-
return
|
64
|
+
return {
|
65
|
+
gateway,
|
66
|
+
feed: new PullFeed(sbProgram, new web3_js_1.PublicKey(constants_1.SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId)),
|
67
|
+
};
|
61
68
|
}
|
62
69
|
async function buildSwbSubmitResponseTx(conn, signer, mint) {
|
63
|
-
const feed = await getPullFeed(conn, mint, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(signer.publicKey));
|
64
|
-
|
70
|
+
const { feed, gateway } = await getPullFeed(conn, mint, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(signer.publicKey));
|
71
|
+
// Try to replicate locally in the lambda docker container
|
65
72
|
(0, generalUtils_1.consoleLog)("Fetching crank IX...");
|
66
73
|
const [pullIxs, responses] = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
|
67
74
|
const res = await feed.fetchUpdateIx({
|
68
|
-
gateway,
|
75
|
+
gateway: gateway.endpoint(),
|
69
76
|
chain: "solana",
|
70
77
|
network: "mainnet-beta",
|
71
78
|
});
|
@@ -102,7 +109,7 @@ async function getSwitchboardFeedData(conn, mints) {
|
|
102
109
|
}
|
103
110
|
const currSlot = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await conn.getSlot("confirmed"), 5);
|
104
111
|
const results = await Promise.all(mints.map(async (mint) => {
|
105
|
-
const feed = await getPullFeed(conn, mint);
|
112
|
+
const { feed } = await getPullFeed(conn, mint);
|
106
113
|
const result = await feed.loadData();
|
107
114
|
const price = Number(result.result.value) / Math.pow(10, 18);
|
108
115
|
const stale = currSlot > result.result.slot.toNumber() + result.maxStaleness;
|
package/local/txSandbox.ts
CHANGED
@@ -12,7 +12,9 @@ import {
|
|
12
12
|
getPositionExBulk,
|
13
13
|
getSolanaRpcConnection,
|
14
14
|
getSolautoManagedPositions,
|
15
|
+
H_SOL,
|
15
16
|
JITO_SOL,
|
17
|
+
JUP_SOL,
|
16
18
|
LendingPlatform,
|
17
19
|
LOCAL_IRONFORGE_API_URL,
|
18
20
|
openSolautoPosition,
|
@@ -30,7 +32,7 @@ import {
|
|
30
32
|
import { getSecretKey } from "./shared";
|
31
33
|
import { NATIVE_MINT } from "@solana/spl-token";
|
32
34
|
|
33
|
-
const payForTransaction =
|
35
|
+
const payForTransaction = true;
|
34
36
|
const testProgram = false;
|
35
37
|
const lpEnv: ProgramEnv = "Prod";
|
36
38
|
|
@@ -67,7 +69,10 @@ export async function main() {
|
|
67
69
|
// ];
|
68
70
|
const transactionItems = [
|
69
71
|
new TransactionItem(
|
70
|
-
async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(NATIVE_MINT))
|
72
|
+
async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(NATIVE_MINT)),
|
73
|
+
// async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(JUP_SOL)),
|
74
|
+
// async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(JITO_SOL))
|
75
|
+
// async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(H_SOL))
|
71
76
|
),
|
72
77
|
];
|
73
78
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@haven-fi/solauto-sdk",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.805",
|
4
4
|
"main": "dist/index.js",
|
5
5
|
"types": "dist/index.d.ts",
|
6
6
|
"description": "Typescript SDK for the Solauto program on the Solana blockchain",
|
@@ -21,7 +21,7 @@
|
|
21
21
|
"@solana/spl-token": "^0.4.0",
|
22
22
|
"@solana/web3.js": "=1.98.2",
|
23
23
|
"@switchboard-xyz/common": "=3.4.1",
|
24
|
-
"@switchboard-xyz/on-demand": "=2.
|
24
|
+
"@switchboard-xyz/on-demand": "=2.17.4",
|
25
25
|
"axios": "^1.7.8",
|
26
26
|
"big.js": "^6.2.2",
|
27
27
|
"bs58": "^5.0.0",
|
@@ -105,7 +105,6 @@ export class JupSwapManager {
|
|
105
105
|
userPublicKey: this.signer.publicKey.toString(),
|
106
106
|
quoteResponse: this.jupQuote!,
|
107
107
|
wrapAndUnwrapSol: data.wrapAndUnwrapSol ?? false,
|
108
|
-
useTokenLedger: !data.exactOut && !data.exactIn,
|
109
108
|
destinationTokenAccount: getTokenAccount(
|
110
109
|
data.destinationWallet ??
|
111
110
|
toWeb3JsPublicKey(this.signer.publicKey),
|
@@ -9,7 +9,6 @@ import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
|
9
9
|
import { AnchorProvider, Idl, Program } from "@coral-xyz/anchor";
|
10
10
|
import * as OnDemand from "@switchboard-xyz/on-demand";
|
11
11
|
import Big from "big.js";
|
12
|
-
import switchboardIdl from "../idls/switchboard.json";
|
13
12
|
import { PRICES, SWITCHBOARD_PRICE_FEED_IDS } from "../constants";
|
14
13
|
import { TransactionItemInputs } from "../types";
|
15
14
|
import {
|
@@ -18,6 +17,7 @@ import {
|
|
18
17
|
retryWithExponentialBackoff,
|
19
18
|
} from "./generalUtils";
|
20
19
|
import { getWrappedInstruction } from "./solanaUtils";
|
20
|
+
import { CrossbarClient } from "@switchboard-xyz/common";
|
21
21
|
|
22
22
|
export async function getPullFeed(
|
23
23
|
conn: Connection,
|
@@ -40,15 +40,22 @@ export async function getPullFeed(
|
|
40
40
|
);
|
41
41
|
|
42
42
|
consoleLog("Pulling SWB program...");
|
43
|
-
const { PullFeed, ON_DEMAND_MAINNET_PID } = OnDemand;
|
43
|
+
const { PullFeed, Queue, ON_DEMAND_MAINNET_PID } = OnDemand;
|
44
44
|
const sbProgram = await Program.at(ON_DEMAND_MAINNET_PID, provider);
|
45
45
|
|
46
|
+
const crossbar = new CrossbarClient("https://integrator-crossbar.mrgn.app/");
|
47
|
+
const queue = await Queue.loadDefault(sbProgram);
|
48
|
+
const gateway = await queue.fetchGatewayFromCrossbar(crossbar as any);
|
49
|
+
|
46
50
|
consoleLog("Pulled SWB program!");
|
47
51
|
consoleLog("Feed id:", SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId);
|
48
|
-
return
|
49
|
-
|
50
|
-
new
|
51
|
-
|
52
|
+
return {
|
53
|
+
gateway,
|
54
|
+
feed: new PullFeed(
|
55
|
+
sbProgram,
|
56
|
+
new PublicKey(SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId)
|
57
|
+
),
|
58
|
+
};
|
52
59
|
}
|
53
60
|
|
54
61
|
export async function buildSwbSubmitResponseTx(
|
@@ -56,14 +63,19 @@ export async function buildSwbSubmitResponseTx(
|
|
56
63
|
signer: Signer,
|
57
64
|
mint: PublicKey
|
58
65
|
): Promise<TransactionItemInputs | undefined> {
|
59
|
-
const feed = await getPullFeed(
|
66
|
+
const { feed, gateway } = await getPullFeed(
|
67
|
+
conn,
|
68
|
+
mint,
|
69
|
+
toWeb3JsPublicKey(signer.publicKey)
|
70
|
+
);
|
71
|
+
|
72
|
+
// Try to replicate locally in the lambda docker container
|
60
73
|
|
61
|
-
const gateway = await feed.fetchGatewayUrl();
|
62
74
|
consoleLog("Fetching crank IX...");
|
63
75
|
const [pullIxs, responses] = await retryWithExponentialBackoff(
|
64
76
|
async () => {
|
65
77
|
const res = await feed.fetchUpdateIx({
|
66
|
-
gateway,
|
78
|
+
gateway: gateway.endpoint(),
|
67
79
|
chain: "solana",
|
68
80
|
network: "mainnet-beta",
|
69
81
|
});
|
@@ -118,7 +130,7 @@ export async function getSwitchboardFeedData(
|
|
118
130
|
|
119
131
|
const results = await Promise.all(
|
120
132
|
mints.map(async (mint) => {
|
121
|
-
const feed = await getPullFeed(conn, mint);
|
133
|
+
const { feed } = await getPullFeed(conn, mint);
|
122
134
|
const result = await feed.loadData();
|
123
135
|
const price = Number(result.result.value) / Math.pow(10, 18);
|
124
136
|
const stale =
|