@haven-fi/solauto-sdk 1.0.468 → 1.0.470

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.
@@ -49,6 +49,7 @@ export declare class TransactionsManager {
49
49
  private signableRetries;
50
50
  private totalRetries;
51
51
  private retryDelay;
52
+ updateOracleTxName: string;
52
53
  constructor(txHandler: SolautoClient | ReferralStateManager, statusCallback?: ((statuses: TransactionManagerStatuses) => void) | undefined, txType?: TransactionRunType | undefined, priorityFeeSetting?: PriorityFeeSetting, atomically?: boolean, errorsToThrow?: ErrorsToThrow | undefined, retryConfig?: RetryConfig);
53
54
  private assembleTransactionSets;
54
55
  private updateStatus;
@@ -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,EACL,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;AAW7D,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;IAQ5B,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;IAZxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;gBAGjB,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;IA+FzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA4BxB,6BAA6B;YAmI7B,qBAAqB;YAmDrB,cAAc;YAqCd,eAAe;CA4D9B"}
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,EACL,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;AAW7D,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;IA+FzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA4BxB,6BAA6B;YAmI7B,qBAAqB;YAmDrB,cAAc;YA0Cd,eAAe;CA4D9B"}
@@ -150,6 +150,7 @@ class TransactionsManager {
150
150
  this.atomically = atomically;
151
151
  this.errorsToThrow = errorsToThrow;
152
152
  this.statuses = [];
153
+ this.updateOracleTxName = "Update oracle";
153
154
  this.lookupTables = new LookupTables(this.txHandler.defaultLookupTables(), this.txHandler.umi);
154
155
  this.signableRetries =
155
156
  retryConfig?.signableRetries ?? retryConfig?.totalRetries ?? 3;
@@ -278,7 +279,7 @@ class TransactionsManager {
278
279
  .stale;
279
280
  if (stale) {
280
281
  this.txHandler.log("Requires oracle update...");
281
- const swbTx = new TransactionItem(async () => (0, utils_1.buildSwbSubmitResponseTx)(client.connection, client.signer, mint), "Update oracle");
282
+ const swbTx = new TransactionItem(async () => (0, utils_1.buildSwbSubmitResponseTx)(client.connection, client.signer, mint), this.updateOracleTxName);
282
283
  await swbTx.initialize();
283
284
  items.unshift(swbTx);
284
285
  }
@@ -422,6 +423,10 @@ class TransactionsManager {
422
423
  ...itemSet.items,
423
424
  ...itemSets.slice(currentIndex + 1).flatMap((set) => set.items),
424
425
  ]);
426
+ const newItemSetNames = newItemSets.map(x => x.name());
427
+ if (newItemSetNames.length === 1 && newItemSetNames[0] === this.updateOracleTxName) {
428
+ return undefined;
429
+ }
425
430
  if (newItemSets.length > 1) {
426
431
  itemSets.splice(currentIndex, itemSets.length - currentIndex, ...newItemSets);
427
432
  const startOfQueuedStatuses = this.statuses.findIndex((x) => x.status === TransactionStatus.Queued);
@@ -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,CAiG7B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO;;GAsB5E"}
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,CAiG7B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO;;GA0B5E"}
@@ -85,7 +85,11 @@ async function getJupPriceData(mints, extraInfo) {
85
85
  if (!result ||
86
86
  result === null ||
87
87
  (typeof result === "object" &&
88
- Boolean(Object.values(result).filter((x) => x === null).length))) {
88
+ Boolean(Object.values(result).filter((x) => x === null).length)) ||
89
+ (typeof result === "object" &&
90
+ Object.values(result)
91
+ .map((x) => parseFloat(x.price))
92
+ .includes(0))) {
89
93
  throw new Error("Failed to get token prices using Jupiter");
90
94
  }
91
95
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAcrE,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqC5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CnB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,qBAYzD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB"}
1
+ {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAcrE,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqC5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAgDnB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,qBAQzD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB"}
@@ -120,8 +120,7 @@ async function getJupTokenPrices(mints) {
120
120
  return [];
121
121
  }
122
122
  const data = await (0, jupiterUtils_1.getJupPriceData)(mints);
123
- const prices = Object.values(data).map((x) => parseFloat(x.price));
124
- return prices;
123
+ return Object.values(data).map((x) => parseFloat(x.price));
125
124
  }
126
125
  function safeGetPrice(mint) {
127
126
  if (mint && mint?.toString() in solautoConstants_1.PRICES) {
@@ -1,6 +1,8 @@
1
1
  import { publicKey } from "@metaplex-foundation/umi";
2
2
  import {
3
3
  buildHeliusApiUrl,
4
+ currentUnixSeconds,
5
+ eligibleForRebalance,
4
6
  fetchTokenPrices,
5
7
  fromBaseUnit,
6
8
  getSolanaRpcConnection,
@@ -203,10 +205,20 @@ async function main(filterWhitelist: boolean) {
203
205
  toWeb3JsPublicKey(pos.state.debt.mint)
204
206
  );
205
207
 
208
+ const actionToTake = eligibleForRebalance(
209
+ pos.state,
210
+ pos.position.settingParams,
211
+ pos.position.dca,
212
+ currentUnixSeconds(),
213
+ safeGetPrice(pos.state.supply.mint)!,
214
+ safeGetPrice(pos.state.debt.mint)!,
215
+ 0
216
+ );
217
+
206
218
  const repayFrom =
207
219
  pos.position.settingParams.repayToBps +
208
220
  pos.position.settingParams.repayGap;
209
- const unhealthy = latestState.liqUtilizationRateBps > repayFrom;
221
+ const unhealthy = actionToTake === "repay";
210
222
  const healthText = unhealthy
211
223
  ? `(Unhealthy: ${latestState.liqUtilizationRateBps - repayFrom}bps)`
212
224
  : "";
@@ -214,10 +226,7 @@ async function main(filterWhitelist: boolean) {
214
226
  unhealthyPositions += 1;
215
227
  }
216
228
 
217
- const awaitingBoost =
218
- latestState.liqUtilizationRateBps <
219
- pos.position.settingParams.boostToBps -
220
- pos.position.settingParams.boostGap;
229
+ const awaitingBoost = actionToTake === "boost";
221
230
  const boostText = awaitingBoost ? " (awaiting boost)" : "";
222
231
  if (awaitingBoost) {
223
232
  awaitingBoostPositions += 1;
@@ -230,7 +239,6 @@ async function main(filterWhitelist: boolean) {
230
239
  console.log(
231
240
  `${strategy}: $${formatNumber(fromBaseUnit(latestState.netWorth.baseAmountUsdValue, USD_DECIMALS), 2, 10000, 2)} ${healthText} ${boostText}`
232
241
  );
233
- // console.log(latestState.liqUtilizationRateBps, repayFrom);
234
242
  }
235
243
 
236
244
  console.log(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.468",
3
+ "version": "1.0.470",
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",
@@ -231,6 +231,8 @@ export class TransactionsManager {
231
231
  private totalRetries: number;
232
232
  private retryDelay: number;
233
233
 
234
+ updateOracleTxName = "Update oracle";
235
+
234
236
  constructor(
235
237
  private txHandler: SolautoClient | ReferralStateManager,
236
238
  private statusCallback?: (statuses: TransactionManagerStatuses) => void,
@@ -451,7 +453,7 @@ export class TransactionsManager {
451
453
  const swbTx = new TransactionItem(
452
454
  async () =>
453
455
  buildSwbSubmitResponseTx(client.connection, client.signer, mint),
454
- "Update oracle"
456
+ this.updateOracleTxName
455
457
  );
456
458
  await swbTx.initialize();
457
459
  items.unshift(swbTx);
@@ -731,6 +733,11 @@ export class TransactionsManager {
731
733
  ...itemSets.slice(currentIndex + 1).flatMap((set) => set.items),
732
734
  ]);
733
735
 
736
+ const newItemSetNames = newItemSets.map(x => x.name());
737
+ if (newItemSetNames.length === 1 && newItemSetNames[0] === this.updateOracleTxName) {
738
+ return undefined;
739
+ }
740
+
734
741
  if (newItemSets.length > 1) {
735
742
  itemSets.splice(
736
743
  currentIndex,
@@ -168,7 +168,11 @@ export async function getJupPriceData(mints: PublicKey[], extraInfo?: boolean) {
168
168
  !result ||
169
169
  result === null ||
170
170
  (typeof result === "object" &&
171
- Boolean(Object.values(result).filter((x) => x === null).length))
171
+ Boolean(Object.values(result).filter((x) => x === null).length)) ||
172
+ (typeof result === "object" &&
173
+ Object.values(result)
174
+ .map((x) => parseFloat((x as any).price))
175
+ .includes(0))
172
176
  ) {
173
177
  throw new Error("Failed to get token prices using Jupiter");
174
178
  }
@@ -112,12 +112,12 @@ export async function getSwitchboardPrices(
112
112
  "mainnet",
113
113
  mints.map((x) => SWITCHBOARD_PRICE_FEED_IDS[x.toString()])
114
114
  );
115
-
115
+
116
116
  const p = res.flatMap((x) => x.results[0]);
117
117
  if (p.filter((x) => !x || isNaN(Number(x))).length > 0) {
118
118
  throw new Error("Unable to fetch Switchboard prices");
119
119
  }
120
-
120
+
121
121
  return p;
122
122
  },
123
123
  2,
@@ -131,7 +131,9 @@ export async function getSwitchboardPrices(
131
131
  prices = Array(mints.length).fill(0);
132
132
  }
133
133
 
134
- const missingPrices = zip(mints, prices).filter((x) => !x[1] || isNaN(Number(x)));
134
+ const missingPrices = zip(mints, prices).filter(
135
+ (x) => !x[1] || isNaN(Number(x))
136
+ );
135
137
  const jupPrices = zip(
136
138
  missingPrices.map((x) => x[0]),
137
139
  await getJupTokenPrices(missingPrices.map((x) => x[0]))
@@ -151,11 +153,7 @@ export async function getJupTokenPrices(mints: PublicKey[]) {
151
153
 
152
154
  const data = await getJupPriceData(mints);
153
155
 
154
- const prices = Object.values(data).map(
155
- (x) => parseFloat(x.price as string) as number
156
- );
157
-
158
- return prices;
156
+ return Object.values(data).map((x) => parseFloat(x.price as string));
159
157
  }
160
158
 
161
159
  export function safeGetPrice(