@haven-fi/solauto-sdk 1.0.572 → 1.0.574

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.
@@ -1 +1 @@
1
- {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,6 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
86
86
  // All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form contextUpdates
87
87
  }
88
88
  }
89
- console.log("Resetting context updates...");
90
89
  this.contextUpdates.reset();
91
90
  }
92
91
  defaultLookupTables() {
@@ -43,7 +43,6 @@ export declare class SolautoMarginfiClient extends SolautoClient {
43
43
  rebalance(rebalanceStep: "A" | "B", jupQuote: QuoteResponse, rebalanceType: SolautoRebalanceTypeArgs, rebalanceValues: RebalanceValues, flashLoan?: FlashLoanDetails, targetLiqUtilizationRateBps?: number): TransactionBuilder;
44
44
  flashBorrow(rebalanceType: SolautoRebalanceType, flashLoanDetails: FlashLoanDetails, destinationTokenAccount: PublicKey): TransactionBuilder;
45
45
  flashRepay(flashLoanDetails: FlashLoanDetails): TransactionBuilder;
46
- closeBalance(marginfiAccount: PublicKey, bank: PublicKey): TransactionBuilder;
47
46
  getFreshPositionState(): Promise<PositionState | undefined>;
48
47
  supplyLiquidityAvailable(): bigint;
49
48
  supplyLiquidityDepositable(): bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAGb,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAEtB,OAAO,EAGL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAUzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,cAAc,CAAC,CAAY;IAE5B,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,EAAE,MAAM,CAAa;IAC3C,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAG5B,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAErD,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IAE/B,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAiG1C,8BAA8B;IAwCpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAUzB,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA0B3D,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB;IAStE,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUhE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,wBAAwB,EACvC,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,GACnC,kBAAkB;IA+ErB,WAAW,CACT,aAAa,EAAE,oBAAoB,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2CrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAwF5D,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAmDjE,wBAAwB,IAAI,MAAM;IAIlC,0BAA0B,IAAI,MAAM;IAIpC,sBAAsB,IAAI,MAAM;CAGjC"}
@@ -443,12 +443,6 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
443
443
  },
444
444
  ]);
445
445
  }
446
- const banksRequiringBalanceClose = Array.from(new Set([
447
- accounts.data.bank,
448
- ...(this.intermediaryMarginfiAccount?.lendingAccount.balances ?? [])
449
- .filter((x) => x.active && (0, numberUtils_1.bytesToI80F48)(x.liabilityShares.value) > 0)
450
- .map((x) => x.bankPk.toString()),
451
- ]));
452
446
  return (0, umi_1.transactionBuilder)()
453
447
  .add((0, marginfi_sdk_1.lendingAccountRepay)(this.umi, {
454
448
  amount: flashLoanDetails.baseUnitAmount,
@@ -460,25 +454,11 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
460
454
  signer: this.signer,
461
455
  signerTokenAccount: (0, umi_1.publicKey)((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), flashLoanDetails.mint)),
462
456
  }))
463
- .add(banksRequiringBalanceClose.map((x) => this.closeBalance(this.intermediaryMarginfiAccountPk, new web3_js_1.PublicKey(x)))
464
- // this.closeBalance(
465
- // this.intermediaryMarginfiAccountPk,
466
- // new PublicKey(accounts.data.bank)
467
- // )
468
- )
469
457
  .add((0, marginfi_sdk_1.lendingAccountEndFlashloan)(this.umi, {
470
458
  marginfiAccount: (0, umi_1.publicKey)(this.intermediaryMarginfiAccountPk),
471
459
  signer: this.signer,
472
460
  }).addRemainingAccounts(remainingAccounts));
473
461
  }
474
- closeBalance(marginfiAccount, bank) {
475
- return (0, umi_1.transactionBuilder)().add((0, marginfi_sdk_1.lendingAccountCloseBalance)(this.umi, {
476
- signer: this.signer,
477
- marginfiAccount: (0, umi_1.publicKey)(marginfiAccount),
478
- bank: (0, umi_1.publicKey)(bank),
479
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
480
- }));
481
- }
482
462
  async getFreshPositionState() {
483
463
  const state = await super.getFreshPositionState();
484
464
  if (state) {
@@ -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;AASrB,MAAM,WAAW,YAAY;IAC3B,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;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,0BAkB1D;AAED,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,CAAC,EAAE,kBAAkB,CAAC;IACnC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA2F7B;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO;;GAwC/B"}
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;AAUrB,MAAM,WAAW,YAAY;IAC3B,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;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,0BAkB1D;AAED,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,CAAC,EAAE,kBAAkB,CAAC;IACnC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA2F7B;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO;;GAwC/B"}
@@ -322,6 +322,6 @@ function getUpToDateShareValues(bank) {
322
322
  }
323
323
  function marginfiAccountEmpty(marginfiAccount) {
324
324
  return (marginfiAccount.lendingAccount.balances.find((x) => x.bankPk.toString() !== web3_js_1.PublicKey.default.toString() &&
325
- ((0, numberUtils_1.bytesToI80F48)(x.assetShares.value) > 0 ||
326
- (0, numberUtils_1.bytesToI80F48)(x.liabilityShares.value) > 0)) === undefined);
325
+ (Math.round((0, numberUtils_1.bytesToI80F48)(x.assetShares.value)) != 0 ||
326
+ Math.round((0, numberUtils_1.bytesToI80F48)(x.liabilityShares.value)) != 0)) === undefined);
327
327
  }
@@ -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;AAerE,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyC5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO,qBAqB/B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAClD,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,CAyC5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAkBD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAsDnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO,qBAgB/B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,GAClD,MAAM,GAAG,SAAS,CAKpB"}
@@ -28,6 +28,7 @@ exports.getPythPrices = getPythPrices;
28
28
  exports.getSwitchboardPrices = getSwitchboardPrices;
29
29
  exports.getJupTokenPrices = getJupTokenPrices;
30
30
  exports.safeGetPrice = safeGetPrice;
31
+ const web3_js_1 = require("@solana/web3.js");
31
32
  const pythConstants_1 = require("../constants/pythConstants");
32
33
  const numberUtils_1 = require("./numberUtils");
33
34
  const solautoConstants_1 = require("../constants/solautoConstants");
@@ -89,47 +90,58 @@ async function getPythPrices(mints) {
89
90
  }, 5, 200);
90
91
  return prices;
91
92
  }
93
+ function getSortedPriceData(prices, mints) {
94
+ const sortedPrices = {};
95
+ for (const mint of mints) {
96
+ const key = mint.toString();
97
+ if (prices.hasOwnProperty(key)) {
98
+ sortedPrices[key] = prices[key];
99
+ }
100
+ }
101
+ return sortedPrices;
102
+ }
92
103
  async function getSwitchboardPrices(mints) {
93
104
  if (mints.length === 0) {
94
105
  return [];
95
106
  }
96
107
  const { CrossbarClient } = OnDemand;
97
108
  const crossbar = CrossbarClient.default();
98
- let prices = [];
109
+ let prices = {};
99
110
  try {
100
111
  prices = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
101
- const res = await crossbar.simulateSolanaFeeds("mainnet", mints.map((x) => switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS[x.toString()]));
102
- const p = res.flatMap((x) => x.results[0]);
103
- if (p.filter((x) => !x || isNaN(Number(x)) || Number(x) < 0).length > 0) {
112
+ const resp = await crossbar.simulateSolanaFeeds("mainnet", mints.map((x) => switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS[x.toString()]));
113
+ const prices = resp.flatMap((x) => x.results[0]);
114
+ if (prices.filter((x) => !x || isNaN(Number(x)) || Number(x) <= 0)
115
+ .length > 0) {
104
116
  throw new Error("Unable to fetch Switchboard prices");
105
117
  }
106
- return p.map((x) => typeof x === "string" ? parseFloat(x) : Number(x));
118
+ const finalMap = {};
119
+ for (const item of resp) {
120
+ for (const [k, v] of Object.entries(switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS)) {
121
+ if (item.feed === v) {
122
+ finalMap[k] = Number(item.results[0]);
123
+ }
124
+ }
125
+ }
126
+ return finalMap;
107
127
  }, 2, 350);
108
128
  }
109
129
  catch {
110
130
  (0, generalUtils_1.consoleLog)("Failed to fetch Switchboard prices after multiple retries");
111
131
  }
112
- if (prices.length === 0) {
113
- prices = Array(mints.length).fill(0);
114
- }
115
- const missingPrices = (0, generalUtils_1.zip)(mints, prices).filter((x) => !x[1] || isNaN(Number(x[1])));
116
- const jupPrices = (0, generalUtils_1.zip)(missingPrices.map((x) => x[0]), await getJupTokenPrices(missingPrices.map((x) => x[0])));
117
- prices = prices.map((x, i) => x ? x : jupPrices.find((y) => y[0].toString() === mints[i].toString())[1]);
118
- return prices;
132
+ const missingMints = mints.filter((x) => !prices[x.toString()]);
133
+ const jupPrices = (0, generalUtils_1.zip)(missingMints, await getJupTokenPrices(missingMints.map((x) => new web3_js_1.PublicKey(x)))).reduce((acc, [key, value]) => {
134
+ acc[key.toString()] = value;
135
+ return acc;
136
+ }, {});
137
+ return Object.values(getSortedPriceData({ ...prices, ...jupPrices }, mints));
119
138
  }
120
139
  async function getJupTokenPrices(mints, mayIncludeSpamTokens) {
121
140
  if (mints.length == 0) {
122
141
  return [];
123
142
  }
124
- const data = await (0, jupiterUtils_1.getJupPriceData)(mints, mayIncludeSpamTokens);
125
- const sortedData = {};
126
- for (const mint of mints) {
127
- const key = mint.toString();
128
- if (data.hasOwnProperty(key)) {
129
- sortedData[key] = data[key];
130
- }
131
- }
132
- return Object.values(sortedData).map((x) => x !== null && typeof x === "object" && "price" in x
143
+ const data = getSortedPriceData(await (0, jupiterUtils_1.getJupPriceData)(mints, mayIncludeSpamTokens), mints);
144
+ return Object.values(data).map((x) => x !== null && typeof x === "object" && "price" in x
133
145
  ? parseFloat(x.price)
134
146
  : 0);
135
147
  }
@@ -3,7 +3,7 @@ import { Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
3
3
  import { PriorityFeeSetting, TransactionRunType } from "../types";
4
4
  export declare function buildHeliusApiUrl(heliusApiKey: string): string;
5
5
  export declare function buildIronforgeApiUrl(ironforgeApiKey: string): string;
6
- export declare function getSolanaRpcConnection(rpcUrl: string, programId?: PublicKey): [Connection, Umi];
6
+ export declare function getSolanaRpcConnection(rpcUrl: string, programId?: PublicKey, wsEndpoint?: string): [Connection, Umi];
7
7
  export declare function getWrappedInstruction(signer: Signer, ix: TransactionInstruction): WrappedInstruction;
8
8
  export declare function setComputeUnitLimitUmiIx(signer: Signer, maxComputeUnits: number): WrappedInstruction;
9
9
  export declare function setComputeUnitPriceUmiIx(signer: Signer, lamports: number): WrappedInstruction;
@@ -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;AAiBzB,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,6BAA6B,CACjD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,GAAG,CAAC,CAKd;AAED,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,CAuEjC"}
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;AAiBzB,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,EAC3C,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,UAAU,EAAE,GAAG,CAAC,CAWnB;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,6BAA6B,CACjD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,GAAG,CAAC,CAKd;AAED,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,CAuEjC"}
@@ -37,8 +37,11 @@ function buildHeliusApiUrl(heliusApiKey) {
37
37
  function buildIronforgeApiUrl(ironforgeApiKey) {
38
38
  return `https://rpc.ironforge.network/mainnet?apiKey=${ironforgeApiKey}`;
39
39
  }
40
- function getSolanaRpcConnection(rpcUrl, programId = constants_1.SOLAUTO_PROD_PROGRAM) {
41
- const connection = new web3_js_1.Connection(rpcUrl, "confirmed");
40
+ function getSolanaRpcConnection(rpcUrl, programId = constants_1.SOLAUTO_PROD_PROGRAM, wsEndpoint) {
41
+ const connection = new web3_js_1.Connection(rpcUrl, {
42
+ commitment: "confirmed",
43
+ wsEndpoint: wsEndpoint,
44
+ });
42
45
  const umi = (0, umi_bundle_defaults_1.createUmi)(connection).use({
43
46
  install(umi) {
44
47
  umi.programs.add((0, solauto_1.createDynamicSolautoProgram)(programId), false);
package/local/.env CHANGED
@@ -1 +1 @@
1
- ADDRESS_WHITELIST=5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe,He4ka5Q3N1UvZikZvykdi47xyk5PoVP2tcQL5sVp31Sz,5LTSvc5LhGcHCitw815j9DcpYrTzKpmyjf31n1Kb6zeR,E5BBsR1sUToPc3jXVwhrK5ttSiy6xhWJDMdQLvkgNppe,DRP5cgM1JpnMySvwg3jqRP2VA2DXSWUjo6VGLkNZ2etb,5qbTgNHBo5kedvDCseLbn5vJCtjrpUyNWwZzRnx72rPT
1
+ ADDRESS_WHITELIST=5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe,He4ka5Q3N1UvZikZvykdi47xyk5PoVP2tcQL5sVp31Sz,5LTSvc5LhGcHCitw815j9DcpYrTzKpmyjf31n1Kb6zeR,E5BBsR1sUToPc3jXVwhrK5ttSiy6xhWJDMdQLvkgNppe,DRP5cgM1JpnMySvwg3jqRP2VA2DXSWUjo6VGLkNZ2etb
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.572",
3
+ "version": "1.0.574",
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",
@@ -204,7 +204,6 @@ export abstract class SolautoClient extends ReferralStateManager {
204
204
  // All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form contextUpdates
205
205
  }
206
206
  }
207
- console.log("Resetting context updates...");
208
207
  this.contextUpdates.reset();
209
208
  }
210
209
 
@@ -40,7 +40,6 @@ import {
40
40
  MARGINFI_PROGRAM_ID,
41
41
  MarginfiAccount,
42
42
  lendingAccountBorrow,
43
- lendingAccountCloseBalance,
44
43
  lendingAccountDeposit,
45
44
  lendingAccountEndFlashloan,
46
45
  lendingAccountRepay,
@@ -62,7 +61,7 @@ import {
62
61
  getMarginfiMaxLtvAndLiqThreshold,
63
62
  marginfiAccountEmpty,
64
63
  } from "../utils/marginfiUtils";
65
- import { bytesToI80F48, fromBaseUnit, toBps } from "../utils/numberUtils";
64
+ import { fromBaseUnit, toBps } from "../utils/numberUtils";
66
65
  import { QuoteResponse } from "@jup-ag/api";
67
66
  import { consoleLog, safeGetPrice, splTokenTransferUmiIx } from "../utils";
68
67
 
@@ -585,10 +584,7 @@ export class SolautoMarginfiClient extends SolautoClient {
585
584
  return transactionBuilder().add(
586
585
  splTokenTransferUmiIx(
587
586
  this.signer,
588
- getTokenAccount(
589
- toWeb3JsPublicKey(this.signer.publicKey),
590
- this.debtMint
591
- ),
587
+ getTokenAccount(toWeb3JsPublicKey(this.signer.publicKey), this.debtMint),
592
588
  destinationTokenAccount,
593
589
  toWeb3JsPublicKey(this.signer.publicKey),
594
590
  flashLoanDetails.baseUnitAmount
@@ -687,15 +683,6 @@ export class SolautoMarginfiClient extends SolautoClient {
687
683
  );
688
684
  }
689
685
 
690
- const banksRequiringBalanceClose = Array.from(
691
- new Set([
692
- accounts.data.bank,
693
- ...(this.intermediaryMarginfiAccount?.lendingAccount.balances ?? [])
694
- .filter((x) => x.active && bytesToI80F48(x.liabilityShares.value) > 0)
695
- .map((x) => x.bankPk.toString()),
696
- ])
697
- );
698
-
699
686
  return transactionBuilder()
700
687
  .add(
701
688
  lendingAccountRepay(this.umi, {
@@ -714,18 +701,6 @@ export class SolautoMarginfiClient extends SolautoClient {
714
701
  ),
715
702
  })
716
703
  )
717
- .add(
718
- banksRequiringBalanceClose.map((x) =>
719
- this.closeBalance(
720
- this.intermediaryMarginfiAccountPk,
721
- new PublicKey(x)
722
- )
723
- )
724
- // this.closeBalance(
725
- // this.intermediaryMarginfiAccountPk,
726
- // new PublicKey(accounts.data.bank)
727
- // )
728
- )
729
704
  .add(
730
705
  lendingAccountEndFlashloan(this.umi, {
731
706
  marginfiAccount: publicKey(this.intermediaryMarginfiAccountPk),
@@ -734,17 +709,6 @@ export class SolautoMarginfiClient extends SolautoClient {
734
709
  );
735
710
  }
736
711
 
737
- closeBalance(marginfiAccount: PublicKey, bank: PublicKey) {
738
- return transactionBuilder().add(
739
- lendingAccountCloseBalance(this.umi, {
740
- signer: this.signer,
741
- marginfiAccount: publicKey(marginfiAccount),
742
- bank: publicKey(bank),
743
- marginfiGroup: publicKey(this.marginfiGroup),
744
- })
745
- );
746
- }
747
-
748
712
  async getFreshPositionState(): Promise<PositionState | undefined> {
749
713
  const state = await super.getFreshPositionState();
750
714
  if (state) {
@@ -15,6 +15,7 @@ import { getTokenAccount } from "./accountUtils";
15
15
  import {
16
16
  consoleLog,
17
17
  retryWithExponentialBackoff,
18
+ tokenInfo,
18
19
  } from "./generalUtils";
19
20
 
20
21
  const jupApi = createJupiterApiClient();
@@ -591,8 +591,8 @@ export function marginfiAccountEmpty(marginfiAccount: MarginfiAccount) {
591
591
  marginfiAccount.lendingAccount.balances.find(
592
592
  (x) =>
593
593
  x.bankPk.toString() !== PublicKey.default.toString() &&
594
- (bytesToI80F48(x.assetShares.value) > 0 ||
595
- bytesToI80F48(x.liabilityShares.value) > 0)
594
+ (Math.round(bytesToI80F48(x.assetShares.value)) != 0 ||
595
+ Math.round(bytesToI80F48(x.liabilityShares.value)) != 0)
596
596
  ) === undefined
597
597
  );
598
598
  }
@@ -11,8 +11,7 @@ import {
11
11
  zip,
12
12
  } from "./generalUtils";
13
13
  import * as OnDemand from "@switchboard-xyz/on-demand";
14
- import { getJupPriceData, getJupQuote } from "./jupiterUtils";
15
- import { QuoteGetSwapModeEnum } from "@jup-ag/api";
14
+ import { getJupPriceData } from "./jupiterUtils";
16
15
 
17
16
  export async function fetchTokenPrices(mints: PublicKey[]): Promise<number[]> {
18
17
  const currentTime = currentUnixSeconds();
@@ -99,35 +98,57 @@ export async function getPythPrices(mints: PublicKey[]) {
99
98
  return prices;
100
99
  }
101
100
 
101
+ function getSortedPriceData(
102
+ prices: Record<string, number>,
103
+ mints: PublicKey[]
104
+ ) {
105
+ const sortedPrices: { [key: string]: any } = {};
106
+
107
+ for (const mint of mints) {
108
+ const key = mint.toString();
109
+ if (prices.hasOwnProperty(key)) {
110
+ sortedPrices[key] = prices[key];
111
+ }
112
+ }
113
+
114
+ return sortedPrices;
115
+ }
116
+
102
117
  export async function getSwitchboardPrices(
103
118
  mints: PublicKey[]
104
119
  ): Promise<number[]> {
105
120
  if (mints.length === 0) {
106
121
  return [];
107
122
  }
108
-
109
123
  const { CrossbarClient } = OnDemand;
110
124
  const crossbar = CrossbarClient.default();
111
125
 
112
- let prices: number[] = [];
126
+ let prices: Record<string, number> = {};
113
127
  try {
114
128
  prices = await retryWithExponentialBackoff(
115
129
  async () => {
116
- const res = await crossbar.simulateSolanaFeeds(
130
+ const resp = await crossbar.simulateSolanaFeeds(
117
131
  "mainnet",
118
132
  mints.map((x) => SWITCHBOARD_PRICE_FEED_IDS[x.toString()])
119
133
  );
120
134
 
121
- const p = res.flatMap((x) => x.results[0]);
135
+ const prices = resp.flatMap((x) => x.results[0]);
122
136
  if (
123
- p.filter((x) => !x || isNaN(Number(x)) || Number(x) < 0).length > 0
137
+ prices.filter((x) => !x || isNaN(Number(x)) || Number(x) <= 0)
138
+ .length > 0
124
139
  ) {
125
140
  throw new Error("Unable to fetch Switchboard prices");
126
141
  }
127
142
 
128
- return p.map((x) =>
129
- typeof x === "string" ? parseFloat(x) : Number(x)
130
- );
143
+ const finalMap: Record<string, number> = {};
144
+ for (const item of resp) {
145
+ for (const [k, v] of Object.entries(SWITCHBOARD_PRICE_FEED_IDS)) {
146
+ if (item.feed === v) {
147
+ finalMap[k] = Number(item.results[0]);
148
+ }
149
+ }
150
+ }
151
+ return finalMap;
131
152
  },
132
153
  2,
133
154
  350
@@ -136,23 +157,19 @@ export async function getSwitchboardPrices(
136
157
  consoleLog("Failed to fetch Switchboard prices after multiple retries");
137
158
  }
138
159
 
139
- if (prices.length === 0) {
140
- prices = Array(mints.length).fill(0);
141
- }
142
-
143
- const missingPrices = zip(mints, prices).filter(
144
- (x) => !x[1] || isNaN(Number(x[1]))
145
- );
160
+ const missingMints = mints.filter((x) => !prices[x.toString()]);
146
161
  const jupPrices = zip(
147
- missingPrices.map((x) => x[0]),
148
- await getJupTokenPrices(missingPrices.map((x) => x[0]))
149
- );
150
-
151
- prices = prices.map((x, i) =>
152
- x ? x : jupPrices.find((y) => y[0].toString() === mints[i].toString())![1]
162
+ missingMints,
163
+ await getJupTokenPrices(missingMints.map((x) => new PublicKey(x)))
164
+ ).reduce(
165
+ (acc, [key, value]) => {
166
+ acc[key.toString()] = value;
167
+ return acc;
168
+ },
169
+ {} as Record<string, number>
153
170
  );
154
171
 
155
- return prices;
172
+ return Object.values(getSortedPriceData({ ...prices, ...jupPrices }, mints));
156
173
  }
157
174
 
158
175
  export async function getJupTokenPrices(
@@ -163,17 +180,12 @@ export async function getJupTokenPrices(
163
180
  return [];
164
181
  }
165
182
 
166
- const data = await getJupPriceData(mints, mayIncludeSpamTokens);
167
-
168
- const sortedData: { [key: string]: any } = {};
169
- for (const mint of mints) {
170
- const key = mint.toString();
171
- if (data.hasOwnProperty(key)) {
172
- sortedData[key] = data[key];
173
- }
174
- }
183
+ const data = getSortedPriceData(
184
+ await getJupPriceData(mints, mayIncludeSpamTokens),
185
+ mints
186
+ );
175
187
 
176
- return Object.values(sortedData).map((x) =>
188
+ return Object.values(data).map((x) =>
177
189
  x !== null && typeof x === "object" && "price" in x
178
190
  ? parseFloat(x.price as string)
179
191
  : 0
@@ -187,4 +199,4 @@ export function safeGetPrice(
187
199
  return PRICES[mint!.toString()].price;
188
200
  }
189
201
  return undefined;
190
- }
202
+ }
@@ -57,9 +57,13 @@ export function buildIronforgeApiUrl(ironforgeApiKey: string) {
57
57
 
58
58
  export function getSolanaRpcConnection(
59
59
  rpcUrl: string,
60
- programId: PublicKey = SOLAUTO_PROD_PROGRAM
60
+ programId: PublicKey = SOLAUTO_PROD_PROGRAM,
61
+ wsEndpoint?: string
61
62
  ): [Connection, Umi] {
62
- const connection = new Connection(rpcUrl, "confirmed");
63
+ const connection = new Connection(rpcUrl, {
64
+ commitment: "confirmed",
65
+ wsEndpoint: wsEndpoint,
66
+ });
63
67
  const umi = createUmi(connection).use({
64
68
  install(umi) {
65
69
  umi.programs.add(createDynamicSolautoProgram(programId), false);
@@ -1,18 +1,9 @@
1
1
  import { describe, it } from "mocha";
2
- import {
3
- none,
4
- publicKey,
5
- some,
6
- transactionBuilder,
7
- Umi,
8
- UmiError,
9
- } from "@metaplex-foundation/umi";
2
+ import { none, publicKey, some } from "@metaplex-foundation/umi";
10
3
  import { setupTest } from "../shared";
11
4
  import { SolautoMarginfiClient } from "../../src/clients/solautoMarginfiClient";
12
5
  import {
13
- fetchSolautoPosition,
14
6
  PositionType,
15
- safeFetchAllSolautoPosition,
16
7
  safeFetchSolautoPosition,
17
8
  solautoAction,
18
9
  SolautoSettingsParametersInpArgs,
@@ -34,10 +25,10 @@ import {
34
25
  } from "../../src/transactions/transactionsManager";
35
26
  import { PublicKey } from "@solana/web3.js";
36
27
  import {
28
+ ALL_SUPPORTED_TOKENS,
37
29
  DEFAULT_MARGINFI_GROUP,
38
30
  MARGINFI_ACCOUNTS,
39
- POPCAT,
40
- RETARDIO,
31
+ PRICES,
41
32
  SOLAUTO_PROD_PROGRAM,
42
33
  SOLAUTO_TEST_PROGRAM,
43
34
  USDC,
@@ -45,122 +36,23 @@ import {
45
36
  } from "../../src/constants";
46
37
  import {
47
38
  buildHeliusApiUrl,
39
+ buildIronforgeApiUrl,
48
40
  fetchTokenPrices,
49
41
  getAllPositionsByAuthority,
50
- getBankLiquidityAvailableBaseUnit,
51
42
  getQnComputeUnitPriceEstimate,
52
43
  getSolautoManagedPositions,
53
44
  getSolautoPositionAccount,
54
- marginfiAccountEmpty,
55
45
  retryWithExponentialBackoff,
56
- safeGetPrice,
57
46
  } from "../../src/utils";
58
47
  import { PriorityFeeSetting } from "../../src/types";
59
- import {
60
- buildIronforgeApiUrl,
61
- fromBaseUnit,
62
- tokenInfo,
63
- USD_DECIMALS,
64
- } from "../../dist";
65
- import {
66
- lendingPoolAccrueBankInterest,
67
- safeFetchBank,
68
- safeFetchMarginfiAccount,
69
- } from "../../src/marginfi-sdk";
70
- import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
71
-
72
- async function test(
73
- umi: Umi,
74
- sp: PublicKey | undefined,
75
- supplyMint: PublicKey,
76
- sb: PublicKey,
77
- supplyMintDecimals: number,
78
- debtMint: PublicKey,
79
- db: PublicKey,
80
- debtMintDecimals: number
81
- ) {
82
- const solautoPosition = sp
83
- ? await fetchSolautoPosition(umi, publicKey(sp))
84
- : undefined;
85
-
86
- const mfiAccount = solautoPosition
87
- ? await safeFetchMarginfiAccount(
88
- umi,
89
- solautoPosition.position.protocolUserAccount
90
- )
91
- : undefined;
92
-
93
- const supplyBank = await safeFetchBank(umi, publicKey(sb));
94
- const debtBank = await safeFetchBank(umi, publicKey(db));
95
-
96
- await fetchTokenPrices([supplyMint, debtMint]);
97
-
98
- console.log(supplyBank);
99
- console.log(debtBank);
100
-
101
- if (mfiAccount) {
102
- console.log(mfiAccount.lendingAccount.balances);
103
- console.log(
104
- fromBaseUnit(
105
- BigInt(
106
- bytesToI80F48(
107
- mfiAccount.lendingAccount.balances[0].assetShares.value
108
- ) * bytesToI80F48(supplyBank.assetShareValue.value)
109
- ),
110
- supplyMintDecimals
111
- ) * safeGetPrice(supplyMint)
112
- );
113
- }
114
-
115
- const imfiAccount = await safeFetchMarginfiAccount(
116
- umi,
117
- publicKey("E8oukAkTMW4YsAPymMzWQHWb8egmGq9yjDtmMi6gfY18")
118
- );
119
-
120
- console.log(
121
- bytesToI80F48(
122
- imfiAccount.lendingAccount.balances[0].liabilityShares.value
123
- ) * bytesToI80F48(supplyBank.liabilityShareValue.value),
124
- bytesToI80F48(imfiAccount.lendingAccount.balances[0].assetShares.value) *
125
- bytesToI80F48(supplyBank.assetShareValue.value)
126
- );
127
- console.log(
128
- bytesToI80F48(
129
- imfiAccount.lendingAccount.balances[1].liabilityShares.value
130
- ) * bytesToI80F48(debtBank.liabilityShareValue.value),
131
- bytesToI80F48(imfiAccount.lendingAccount.balances[1].assetShares.value) *
132
- bytesToI80F48(debtBank.assetShareValue.value)
133
- );
134
-
135
- console.log(
136
- bytesToI80F48(supplyBank.totalAssetShares.value),
137
- bytesToI80F48(supplyBank.totalLiabilityShares.value),
138
- bytesToI80F48(supplyBank.totalAssetShares.value) -
139
- bytesToI80F48(supplyBank.totalLiabilityShares.value),
140
- fromBaseUnit(
141
- getBankLiquidityAvailableBaseUnit(supplyBank, false),
142
- supplyMintDecimals
143
- ) * safeGetPrice(supplyMint)
144
- );
145
- console.log(
146
- bytesToI80F48(debtBank.totalAssetShares.value),
147
- bytesToI80F48(debtBank.totalLiabilityShares.value),
148
- bytesToI80F48(debtBank.totalAssetShares.value) -
149
- bytesToI80F48(debtBank.totalLiabilityShares.value),
150
- fromBaseUnit(
151
- getBankLiquidityAvailableBaseUnit(debtBank, false),
152
- debtMintDecimals
153
- ) * safeGetPrice(debtMint)
154
- );
155
- }
156
48
 
157
49
  describe("Solauto Marginfi tests", async () => {
158
- const signer = setupTest();
159
- // const signer = setupTest("solauto-manager");
50
+ // const signer = setupTest();
51
+ const signer = setupTest("solauto-manager");
160
52
 
161
53
  const payForTransactions = true;
162
- const testProgram = true;
163
- const positionId = 1;
54
+ const testProgram = false;
55
+ const positionId = 3;
164
56
 
165
57
  it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
166
58
  const client = new SolautoMarginfiClient(
@@ -176,7 +68,7 @@ describe("Solauto Marginfi tests", async () => {
176
68
  await client.initialize({
177
69
  signer,
178
70
  positionId,
179
- // authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
71
+ authority: new PublicKey("FKYQs7KgRvaKQHxXwb8HKfoBcFdSxLL3JvHWpPdVQ16v"),
180
72
  // new: true,
181
73
  // marginfiAccount: new PublicKey(
182
74
  // ""
@@ -186,42 +78,6 @@ describe("Solauto Marginfi tests", async () => {
186
78
  // debtMint: new PublicKey(USDC),
187
79
  });
188
80
 
189
- await test(
190
- client.umi,
191
- // new PublicKey("E8oukAkTMW4YsAPymMzWQHWb8egmGq9yjDtmMi6gfY18"),
192
- undefined,
193
- new PublicKey(RETARDIO),
194
- new PublicKey("3J5rKmCi7JXG6qmiobFJyAidVTnnNAMGj4jomfBxKGRM"),
195
- 6,
196
- new PublicKey(USDC),
197
- new PublicKey("6cgYhBFWCc5sNHxkvSRhd5H9AdAHR41zKwuF37HmLry5"),
198
- 6
199
- );
200
- // await test(
201
- // client.umi,
202
- // new PublicKey("EcdfYZCtaePaDWVy9Cz6eiS5QbLbhThau1fHLhQTEZqs"),
203
- // new PublicKey(USDC),
204
- // new PublicKey("EXrnNVfLagt3j4hCHSD9WqK75o6dkZBtjpnrSrSC78MA"),
205
- // 6,
206
- // new PublicKey(POPCAT),
207
- // new PublicKey("845oEvt1oduoBj5zQxTr21cWWaUVnRjGerJuW3yMo2nn"),
208
- // 9
209
- // );
210
-
211
- // const mfiAccount = await safeFetchMarginfiAccount(
212
- // client.umi,
213
- // publicKey("E8oukAkTMW4YsAPymMzWQHWb8egmGq9yjDtmMi6gfY18")
214
- // );
215
- // // console.log(mfiAccount.lendingAccount.balances);
216
- // console.log(
217
- // mfiAccount.lendingAccount.balances.map((x) =>
218
- // bytesToI80F48(x.liabilityShares.value)
219
- // )
220
- // );
221
- // console.log(
222
- // mfiAccount.lendingAccount.balances.map((x) => x.bankPk.toString())
223
- // );
224
-
225
81
  const transactionItems: TransactionItem[] = [];
226
82
  // const settingParams: SolautoSettingsParametersInpArgs = {
227
83
  // boostToBps: maxBoostToBps(
@@ -289,68 +145,14 @@ describe("Solauto Marginfi tests", async () => {
289
145
  // )
290
146
  // );
291
147
 
292
- // transactionItems.push(
293
- // new TransactionItem(
294
- // async (attemptNum) =>
295
- // await buildSolautoRebalanceTransaction(client, undefined, attemptNum),
296
- // "rebalance"
297
- // )
298
- // );
299
-
300
- const imfiAccount = await safeFetchMarginfiAccount(
301
- client.umi,
302
- // publicKey(client.intermediaryMarginfiAccountPk)
303
- publicKey("E8oukAkTMW4YsAPymMzWQHWb8egmGq9yjDtmMi6gfY18")
304
- );
305
-
306
- console.log(imfiAccount.lendingAccount.balances);
307
- console.log(
308
- imfiAccount.lendingAccount.balances.map((x) => [
309
- x.bankPk.toString(),
310
- x.liabilityShares.value,
311
- bytesToI80F48(x.liabilityShares.value),
312
- ])
148
+ transactionItems.push(
149
+ new TransactionItem(
150
+ async (attemptNum) =>
151
+ await buildSolautoRebalanceTransaction(client, undefined, attemptNum),
152
+ "rebalance"
153
+ )
313
154
  );
314
155
 
315
- console.log(marginfiAccountEmpty(imfiAccount));
316
- return;
317
-
318
- // transactionItems.push(
319
- // new TransactionItem(async () => ({
320
- // tx: transactionBuilder().add([
321
- // lendingPoolAccrueBankInterest(client.umi, {
322
- // bank: publicKey("3J5rKmCi7JXG6qmiobFJyAidVTnnNAMGj4jomfBxKGRM"),
323
- // marginfiGroup: publicKey(
324
- // "EpzY5EYF1A5eFDRfjtsPXSYMPmEx1FXKaXPnouTMF4dm"
325
- // ),
326
- // }),
327
- // lendingPoolAccrueBankInterest(client.umi, {
328
- // bank: publicKey("6cgYhBFWCc5sNHxkvSRhd5H9AdAHR41zKwuF37HmLry5"),
329
- // marginfiGroup: publicKey(
330
- // "EpzY5EYF1A5eFDRfjtsPXSYMPmEx1FXKaXPnouTMF4dm"
331
- // ),
332
- // }),
333
- // ]),
334
- // }))
335
- // );
336
-
337
- // transactionItems.push(
338
- // new TransactionItem(async () => ({
339
- // tx: transactionBuilder().add(
340
- // imfiAccount.lendingAccount.balances
341
- // .filter(
342
- // (x) => x.active && bytesToI80F48(x.liabilityShares.value) > 0
343
- // )
344
- // .map((x) =>
345
- // client.closeBalance(
346
- // client.intermediaryMarginfiAccountPk,
347
- // toWeb3JsPublicKey(x.bankPk)
348
- // )
349
- // )
350
- // ),
351
- // }))
352
- // );
353
-
354
156
  // transactionItems.push(
355
157
  // new TransactionItem(
356
158
  // async () => ({ tx: client.refresh() }),