@haven-fi/solauto-sdk 1.0.784 → 1.0.786

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.
@@ -125,14 +125,15 @@ export function repay(client: SolautoClient, amount: "All" | bigint) {
125
125
  export function rebalance(
126
126
  client: SolautoClient,
127
127
  targetLiqUtilizationRateBps?: number,
128
- bpsDistanceFromRebalance?: number
128
+ bpsDistanceFromRebalance?: number,
129
+ optimizeSize?: boolean
129
130
  ) {
130
131
  return new TransactionItem(
131
132
  async (attemptNum, prevError) =>
132
133
  await new RebalanceTxBuilder(
133
134
  client,
134
135
  targetLiqUtilizationRateBps,
135
- attemptNum > 2 && prevError instanceof TransactionTooLargeError,
136
+ optimizeSize || (attemptNum > 2 && prevError instanceof TransactionTooLargeError),
136
137
  bpsDistanceFromRebalance
137
138
  ).buildRebalanceTx(attemptNum),
138
139
  "rebalance",
@@ -6,9 +6,10 @@ import {
6
6
  } from "@solana/web3.js";
7
7
  import { Signer, transactionBuilder } from "@metaplex-foundation/umi";
8
8
  import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
9
- import { AnchorProvider, Program } from "@coral-xyz/anchor";
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";
12
13
  import { PRICES, SWITCHBOARD_PRICE_FEED_IDS } from "../constants";
13
14
  import { TransactionItemInputs } from "../types";
14
15
  import {
@@ -17,7 +18,7 @@ import {
17
18
  } from "./generalUtils";
18
19
  import { getWrappedInstruction } from "./solanaUtils";
19
20
 
20
- export async function getPullFeed(
21
+ export function getPullFeed(
21
22
  conn: Connection,
22
23
  mint: PublicKey,
23
24
  wallet?: PublicKey
@@ -36,12 +37,11 @@ export async function getPullFeed(
36
37
  dummyWallet,
37
38
  AnchorProvider.defaultOptions()
38
39
  );
39
- const { PullFeed, ON_DEMAND_MAINNET_PID } = OnDemand;
40
- const sbProgram = await Program.at(ON_DEMAND_MAINNET_PID, provider);
40
+ const program = new Program(switchboardIdl as Idl, provider);
41
41
 
42
- console.log(new PublicKey(SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId).toString())
42
+ const { PullFeed } = OnDemand;
43
43
  return new PullFeed(
44
- sbProgram,
44
+ program,
45
45
  new PublicKey(SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId)
46
46
  );
47
47
  }
@@ -51,18 +51,12 @@ export async function buildSwbSubmitResponseTx(
51
51
  signer: Signer,
52
52
  mint: PublicKey
53
53
  ): Promise<TransactionItemInputs | undefined> {
54
- const feed = await getPullFeed(
55
- conn,
56
- mint,
57
- toWeb3JsPublicKey(signer.publicKey)
58
- );
59
- const gateway = await feed.fetchGatewayUrl();
60
- const [pullIxs, responses] = await retryWithExponentialBackoff(
54
+ const feed = getPullFeed(conn, mint, toWeb3JsPublicKey(signer.publicKey));
55
+ const [pullIx, responses] = await retryWithExponentialBackoff(
61
56
  async () => {
62
57
  const res = await feed.fetchUpdateIx({
63
- gateway: gateway,
64
58
  chain: "solana",
65
- network: "mainnet",
59
+ network: "mainnet-beta",
66
60
  });
67
61
  if (!res[1] || !res[1][0].value) {
68
62
  throw new Error("Unable to fetch Switchboard pull IX");
@@ -73,7 +67,7 @@ export async function buildSwbSubmitResponseTx(
73
67
  200
74
68
  );
75
69
 
76
- if (!pullIxs || !pullIxs.length) {
70
+ if (!pullIx) {
77
71
  throw new Error("Unable to fetch SWB crank IX");
78
72
  }
79
73
 
@@ -87,9 +81,7 @@ export async function buildSwbSubmitResponseTx(
87
81
  };
88
82
 
89
83
  return {
90
- tx: transactionBuilder(
91
- pullIxs.map((x) => getWrappedInstruction(signer, x))
92
- ),
84
+ tx: transactionBuilder([getWrappedInstruction(signer, pullIx!)]),
93
85
  lookupTableAddresses: responses
94
86
  .filter((x) => Boolean(x.oracle.lut?.key))
95
87
  .map((x) => x.oracle.lut!.key.toString()),
@@ -111,7 +103,7 @@ export async function getSwitchboardFeedData(
111
103
 
112
104
  const results = await Promise.all(
113
105
  mints.map(async (mint) => {
114
- const feed = await getPullFeed(conn, mint);
106
+ const feed = getPullFeed(conn, mint);
115
107
  const result = await feed.loadData();
116
108
  const price = Number(result.result.value) / Math.pow(10, 18);
117
109
  const stale =