@haven-fi/solauto-sdk 1.0.12 → 1.0.14

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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"}
@@ -5,6 +5,7 @@ require("rpc-websockets/dist/lib/client");
5
5
  const web3_js_1 = require("@solana/web3.js");
6
6
  const umi_1 = require("@metaplex-foundation/umi");
7
7
  const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
8
+ const umi_bundle_defaults_1 = require("@metaplex-foundation/umi-bundle-defaults");
8
9
  const umi_signer_wallet_adapters_1 = require("@metaplex-foundation/umi-signer-wallet-adapters");
9
10
  const generated_1 = require("../generated");
10
11
  const accountUtils_1 = require("../utils/accountUtils");
@@ -14,7 +15,6 @@ const spl_token_1 = require("@solana/spl-token");
14
15
  const solautoConstants_1 = require("../constants/solautoConstants");
15
16
  const generalUtils_1 = require("../utils/generalUtils");
16
17
  const generalUtils_2 = require("../utils/solauto/generalUtils");
17
- const umi_bundle_defaults_1 = require("@metaplex-foundation/umi-bundle-defaults");
18
18
  class SolautoClient {
19
19
  constructor(heliusApiKey, localTest) {
20
20
  this.heliusApiKey = heliusApiKey;
@@ -1 +1 @@
1
- {"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,SAAS,EAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,eAAe,EAOhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAOnE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,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,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS,EACnB,mBAAmB,CAAC,EAAE,SAAS,GAC9B,yBAAyB,CAU3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IAC/C,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,0BAA0B,EAAG,qBAAqB,CAAC;IACnD,wBAAwB,EAAG,qBAAqB,CAAC;IAGjD,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAiEhD,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAQ/B,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAMhE,OAAO,CAAC,6BAA6B;IA8DrC,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,wBAAwB,EACvC,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB;IA4CrB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IA8ElE,iCAAiC,IAAI,kBAAkB;IASjD,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CAiBlE"}
1
+ {"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,SAAS,EAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,eAAe,EAQhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAOnE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,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,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS,EACnB,mBAAmB,CAAC,EAAE,SAAS,GAC9B,yBAAyB,CAU3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IAC/C,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,0BAA0B,EAAG,qBAAqB,CAAC;IACnD,wBAAwB,EAAG,qBAAqB,CAAC;IAGjD,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAuEhD,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAQ/B,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAMhE,OAAO,CAAC,6BAA6B;IA8DrC,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,wBAAwB,EACvC,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB;IA4CrB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IA8ElE,iCAAiC,IAAI,kBAAkB;IASjD,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CAiBlE"}
@@ -50,8 +50,8 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
50
50
  this.marginfiDebtBankAccounts = (0, marginfiUtils_1.findMarginfiBankAccounts)({
51
51
  mint: this.debtLiquidityMint.toString(),
52
52
  });
53
- const existingMarginfiAccounts = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(this.umi, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey));
54
- const emptyMarginfiAccounts = existingMarginfiAccounts.filter((x) => x.lendingAccount.balances.find((y) => y.bankPk.toString() !== web3_js_1.PublicKey.default.toString() &&
53
+ const existingMarginfiAccounts = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(this.umi, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), false);
54
+ const emptyMarginfiAccounts = (await (0, marginfi_sdk_1.safeFetchAllMarginfiAccount)(this.umi, existingMarginfiAccounts.map((x) => (0, umi_1.publicKey)(x)))).filter((x) => x.lendingAccount.balances.find((y) => y.bankPk.toString() !== web3_js_1.PublicKey.default.toString() &&
55
55
  (Math.round((0, numberUtils_1.bytesToI80F48)(y.assetShares.value)) != 0 ||
56
56
  Math.round((0, numberUtils_1.bytesToI80F48)(y.liabilityShares.value)) != 0)) === undefined);
57
57
  this.intermediaryMarginfiAccountSigner =
@@ -305,7 +305,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
305
305
  if (state) {
306
306
  return state;
307
307
  }
308
- const freshState = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, this.supplyLiquidityMint, this.debtLiquidityMint, this.marginfiAccountPk, this.livePositionUpdates);
308
+ const freshState = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, this.marginfiAccountPk, this.supplyLiquidityMint, this.debtLiquidityMint, this.livePositionUpdates);
309
309
  this.log(freshState);
310
310
  return freshState;
311
311
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const numberUtils_1 = require("./numberUtils");
4
- // // TODO delete this file
4
+ // TODO delete this file
5
5
  function check() {
6
6
  let supply = 458948;
7
7
  let debt = 212846;
@@ -1,6 +1,6 @@
1
1
  import { PublicKey } from "@solana/web3.js";
2
2
  import { Umi } from "@metaplex-foundation/umi";
3
- import { Bank, MarginfiAccount } from "../marginfi-sdk";
3
+ import { Bank } from "../marginfi-sdk";
4
4
  import { MarginfiTokenAccounts } from "../types/accounts";
5
5
  import { PositionState } from "../generated";
6
6
  import { LivePositionUpdates } from "./solauto/generalUtils";
@@ -9,7 +9,7 @@ export declare function findMarginfiBankAccounts({ mint, bank, }: {
9
9
  bank?: string;
10
10
  }): MarginfiTokenAccounts;
11
11
  export declare function getMaxLtvAndLiqThreshold(supplyBank: Bank, debtBank: Bank, supplyPrice?: number): Promise<[number, number]>;
12
- export declare function getAllMarginfiAccountsByAuthority(umi: Umi, authority: PublicKey): Promise<MarginfiAccount[]>;
13
- export declare function getMarginfiAccountPositionState(umi: Umi, supplyMint: PublicKey, debtMint: PublicKey, marginfiAccountPk: PublicKey, livePositionUpdates?: LivePositionUpdates): Promise<PositionState | undefined>;
12
+ export declare function getAllMarginfiAccountsByAuthority(umi: Umi, authority: PublicKey, compatibleWithSolauto?: boolean): Promise<PublicKey[]>;
13
+ export declare function getMarginfiAccountPositionState(umi: Umi, marginfiAccountPk: PublicKey, supplyMint?: PublicKey, debtMint?: PublicKey, livePositionUpdates?: LivePositionUpdates): Promise<PositionState | undefined>;
14
14
  export declare function getUpToDateShareValues(umi: Umi, bank: Bank): Promise<[number, number]>;
15
15
  //# sourceMappingURL=marginfiUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,IAAI,GACL,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,qBAAqB,CAWxB;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkC3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,eAAe,EAAE,CAAC,CA2B5B;AAoDD,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS,EACnB,iBAAiB,EAAE,SAAS,EAC5B,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAoIpC;AA+DD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0B3B"}
1
+ {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAOL,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,IAAI,GACL,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,qBAAqB,CAWxB;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkC3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,SAAS,EAAE,CAAC,CAuCtB;AAoDD,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,iBAAiB,EAAE,SAAS,EAC5B,UAAU,CAAC,EAAE,SAAS,EACtB,QAAQ,CAAC,EAAE,SAAS,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA4IpC;AA+DD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0B3B"}
@@ -44,7 +44,7 @@ async function getMaxLtvAndLiqThreshold(supplyBank, debtBank, supplyPrice) {
44
44
  return [maxLtv, liqThreshold];
45
45
  }
46
46
  exports.getMaxLtvAndLiqThreshold = getMaxLtvAndLiqThreshold;
47
- async function getAllMarginfiAccountsByAuthority(umi, authority) {
47
+ async function getAllMarginfiAccountsByAuthority(umi, authority, compatibleWithSolauto) {
48
48
  const marginfiAccounts = await umi.rpc.getProgramAccounts(marginfi_sdk_1.MARGINFI_PROGRAM_ID, {
49
49
  commitment: "finalized",
50
50
  dataSlice: {
@@ -63,7 +63,18 @@ async function getAllMarginfiAccountsByAuthority(umi, authority) {
63
63
  },
64
64
  ],
65
65
  });
66
- return (0, marginfi_sdk_1.safeFetchAllMarginfiAccount)(umi, marginfiAccounts.map((x) => x.publicKey));
66
+ if (compatibleWithSolauto) {
67
+ const positionStates = await Promise.all(marginfiAccounts.map(async (x) => ({
68
+ publicKey: x.publicKey,
69
+ state: await getMarginfiAccountPositionState(umi, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey)),
70
+ })));
71
+ return positionStates
72
+ .filter((x) => x.state !== undefined)
73
+ .map((x) => (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey));
74
+ }
75
+ else {
76
+ return marginfiAccounts.map((x) => (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey));
77
+ }
67
78
  }
68
79
  exports.getAllMarginfiAccountsByAuthority = getAllMarginfiAccountsByAuthority;
69
80
  async function getTokenUsage(umi, bank, isAsset, shares, amountUsedAdjustment) {
@@ -97,7 +108,7 @@ async function getTokenUsage(umi, bank, isAsset, shares, amountUsedAdjustment) {
97
108
  padding: new Uint8Array([]),
98
109
  };
99
110
  }
100
- async function getMarginfiAccountPositionState(umi, supplyMint, debtMint, marginfiAccountPk, livePositionUpdates) {
111
+ async function getMarginfiAccountPositionState(umi, marginfiAccountPk, supplyMint, debtMint, livePositionUpdates) {
101
112
  let marginfiAccount = await (0, marginfi_sdk_1.safeFetchMarginfiAccount)(umi, (0, umi_1.publicKey)(marginfiAccountPk));
102
113
  let supplyBank = supplyMint && supplyMint !== web3_js_1.PublicKey.default
103
114
  ? await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(findMarginfiBankAccounts({ mint: supplyMint.toString() }).bank))
@@ -111,19 +122,27 @@ async function getMarginfiAccountPositionState(umi, supplyMint, debtMint, margin
111
122
  marginfiAccount.lendingAccount.balances.filter((x) => x.active).length > 0) {
112
123
  const supplyBalances = marginfiAccount.lendingAccount.balances.filter((balance) => balance.active && (0, numberUtils_1.bytesToI80F48)(balance.assetShares.value) > 0);
113
124
  const debtBalances = marginfiAccount.lendingAccount.balances.filter((balance) => balance.active && (0, numberUtils_1.bytesToI80F48)(balance.liabilityShares.value) > 0);
114
- for (const balance of supplyBalances) {
125
+ if (supplyBalances.length > 1 || debtBalances.length > 1) {
126
+ // Not compatible with Solauto
127
+ return undefined;
128
+ }
129
+ if (supplyBalances.length > 0) {
115
130
  if (supplyBank === null) {
116
- supplyBank = await (0, marginfi_sdk_1.safeFetchBank)(umi, balance.bankPk);
131
+ supplyBank = await (0, marginfi_sdk_1.safeFetchBank)(umi, supplyBalances[0].bankPk);
132
+ }
133
+ if (!supplyMint) {
134
+ supplyMint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.mint);
117
135
  }
118
- supplyUsage = await getTokenUsage(umi, supplyBank, true, (0, numberUtils_1.bytesToI80F48)(balance.assetShares.value), livePositionUpdates?.supplyAdjustment);
119
- break;
136
+ supplyUsage = await getTokenUsage(umi, supplyBank, true, (0, numberUtils_1.bytesToI80F48)(supplyBalances[0].assetShares.value), livePositionUpdates?.supplyAdjustment);
120
137
  }
121
- for (const balance of debtBalances) {
138
+ if (debtBalances.length > 0) {
122
139
  if (debtBank === null) {
123
- debtBank = await (0, marginfi_sdk_1.safeFetchBank)(umi, balance.bankPk);
140
+ debtBank = await (0, marginfi_sdk_1.safeFetchBank)(umi, debtBalances[0].bankPk);
141
+ }
142
+ if (!debtMint) {
143
+ debtMint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(debtBank.mint);
124
144
  }
125
- debtUsage = await getTokenUsage(umi, debtBank, false, (0, numberUtils_1.bytesToI80F48)(balance.liabilityShares.value), livePositionUpdates?.debtAdjustment);
126
- break;
145
+ debtUsage = await getTokenUsage(umi, debtBank, false, (0, numberUtils_1.bytesToI80F48)(debtBalances[0].liabilityShares.value), livePositionUpdates?.debtAdjustment);
127
146
  }
128
147
  }
129
148
  if (supplyBank !== null && !supplyUsage) {
@@ -200,14 +200,14 @@ async function getAllPositionsByAuthority(umi, user) {
200
200
  positionId: x.positionId,
201
201
  lendingPlatform: x.lendingPlatform,
202
202
  })));
203
- const marginfiPositions = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(umi, user);
204
- allPositions.push(...marginfiPositions.map((x) => ({
203
+ const marginfiPositions = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(umi, user, true);
204
+ allPositions.push(...marginfiPositions.map((pubkey) => ({
205
205
  positionId: 0,
206
206
  lendingPlatform: generated_1.LendingPlatform.Marginfi,
207
- protocolAccount: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey),
207
+ protocolAccount: pubkey,
208
208
  })));
209
209
  // TODO support other platforms
210
- return [];
210
+ return allPositions;
211
211
  }
212
212
  exports.getAllPositionsByAuthority = getAllPositionsByAuthority;
213
213
  async function positionStateWithLatestPrices(umi, state, protocolAccount, lendingPlatform) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.12",
3
+ "version": "1.0.14",
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",
@@ -17,6 +17,7 @@ import {
17
17
  some,
18
18
  } from "@metaplex-foundation/umi";
19
19
  import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
20
+ import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
20
21
  import {
21
22
  WalletAdapter,
22
23
  walletAdapterIdentity,
@@ -58,7 +59,6 @@ import { NATIVE_MINT } from "@solana/spl-token";
58
59
  import { MIN_POSITION_STATE_FRESHNESS_SECS } from "../constants/solautoConstants";
59
60
  import { currentUnixSeconds } from "../utils/generalUtils";
60
61
  import { LivePositionUpdates } from "../utils/solauto/generalUtils";
61
- import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
62
62
 
63
63
  export interface SolautoClientArgs {
64
64
  authority?: PublicKey;
@@ -45,6 +45,7 @@ import {
45
45
  lendingAccountRepay,
46
46
  lendingAccountStartFlashloan,
47
47
  marginfiAccountInitialize,
48
+ safeFetchAllMarginfiAccount,
48
49
  safeFetchMarginfiAccount,
49
50
  } from "../marginfi-sdk";
50
51
  import { JupSwapDetails } from "../utils/jupiterUtils";
@@ -136,9 +137,15 @@ export class SolautoMarginfiClient extends SolautoClient {
136
137
 
137
138
  const existingMarginfiAccounts = await getAllMarginfiAccountsByAuthority(
138
139
  this.umi,
139
- toWeb3JsPublicKey(this.signer.publicKey)
140
+ toWeb3JsPublicKey(this.signer.publicKey),
141
+ false
140
142
  );
141
- const emptyMarginfiAccounts = existingMarginfiAccounts.filter(
143
+ const emptyMarginfiAccounts = (
144
+ await safeFetchAllMarginfiAccount(
145
+ this.umi,
146
+ existingMarginfiAccounts.map((x) => publicKey(x))
147
+ )
148
+ ).filter(
142
149
  (x) =>
143
150
  x.lendingAccount.balances.find(
144
151
  (y) =>
@@ -484,13 +491,13 @@ export class SolautoMarginfiClient extends SolautoClient {
484
491
 
485
492
  const freshState = await getMarginfiAccountPositionState(
486
493
  this.umi,
494
+ this.marginfiAccountPk,
487
495
  this.supplyLiquidityMint,
488
496
  this.debtLiquidityMint,
489
- this.marginfiAccountPk,
490
497
  this.livePositionUpdates
491
498
  );
492
499
  this.log(freshState);
493
-
500
+
494
501
  return freshState;
495
502
  }
496
503
  }
@@ -1,6 +1,6 @@
1
1
  import { getDebtAdjustmentUsd, getLiqUtilzationRateBps } from "./numberUtils";
2
2
 
3
- // // TODO delete this file
3
+ // TODO delete this file
4
4
  function check() {
5
5
  let supply = 458948;
6
6
  let debt = 212846;
@@ -37,4 +37,4 @@ function check() {
37
37
  console.log!(liq_utilization_rate);
38
38
  }
39
39
 
40
- check();
40
+ check();
@@ -86,8 +86,9 @@ export async function getMaxLtvAndLiqThreshold(
86
86
 
87
87
  export async function getAllMarginfiAccountsByAuthority(
88
88
  umi: Umi,
89
- authority: PublicKey
90
- ): Promise<MarginfiAccount[]> {
89
+ authority: PublicKey,
90
+ compatibleWithSolauto?: boolean
91
+ ): Promise<PublicKey[]> {
91
92
  const marginfiAccounts = await umi.rpc.getProgramAccounts(
92
93
  MARGINFI_PROGRAM_ID,
93
94
  {
@@ -110,10 +111,22 @@ export async function getAllMarginfiAccountsByAuthority(
110
111
  }
111
112
  );
112
113
 
113
- return safeFetchAllMarginfiAccount(
114
- umi,
115
- marginfiAccounts.map((x) => x.publicKey)
116
- );
114
+ if (compatibleWithSolauto) {
115
+ const positionStates = await Promise.all(
116
+ marginfiAccounts.map(async (x) => ({
117
+ publicKey: x.publicKey,
118
+ state: await getMarginfiAccountPositionState(
119
+ umi,
120
+ toWeb3JsPublicKey(x.publicKey)
121
+ ),
122
+ }))
123
+ );
124
+ return positionStates
125
+ .filter((x) => x.state !== undefined)
126
+ .map((x) => toWeb3JsPublicKey(x.publicKey));
127
+ } else {
128
+ return marginfiAccounts.map((x) => toWeb3JsPublicKey(x.publicKey));
129
+ }
117
130
  }
118
131
 
119
132
  async function getTokenUsage(
@@ -168,9 +181,9 @@ async function getTokenUsage(
168
181
 
169
182
  export async function getMarginfiAccountPositionState(
170
183
  umi: Umi,
171
- supplyMint: PublicKey,
172
- debtMint: PublicKey,
173
184
  marginfiAccountPk: PublicKey,
185
+ supplyMint?: PublicKey,
186
+ debtMint?: PublicKey,
174
187
  livePositionUpdates?: LivePositionUpdates
175
188
  ): Promise<PositionState | undefined> {
176
189
  let marginfiAccount = await safeFetchMarginfiAccount(
@@ -213,33 +226,41 @@ export async function getMarginfiAccountPositionState(
213
226
  balance.active && bytesToI80F48(balance.liabilityShares.value) > 0
214
227
  );
215
228
 
216
- for (const balance of supplyBalances) {
229
+ if (supplyBalances.length > 1 || debtBalances.length > 1) {
230
+ // Not compatible with Solauto
231
+ return undefined;
232
+ }
233
+
234
+ if (supplyBalances.length > 0) {
217
235
  if (supplyBank === null) {
218
- supplyBank = await safeFetchBank(umi, balance.bankPk);
236
+ supplyBank = await safeFetchBank(umi, supplyBalances[0].bankPk);
237
+ }
238
+ if (!supplyMint) {
239
+ supplyMint = toWeb3JsPublicKey(supplyBank!.mint);
219
240
  }
220
-
221
241
  supplyUsage = await getTokenUsage(
222
242
  umi,
223
243
  supplyBank!,
224
244
  true,
225
- bytesToI80F48(balance.assetShares.value),
245
+ bytesToI80F48(supplyBalances[0].assetShares.value),
226
246
  livePositionUpdates?.supplyAdjustment
227
247
  );
228
- break;
229
248
  }
230
- for (const balance of debtBalances) {
249
+
250
+ if (debtBalances.length > 0) {
231
251
  if (debtBank === null) {
232
- debtBank = await safeFetchBank(umi, balance.bankPk);
252
+ debtBank = await safeFetchBank(umi, debtBalances[0].bankPk);
253
+ }
254
+ if (!debtMint) {
255
+ debtMint = toWeb3JsPublicKey(debtBank!.mint);
233
256
  }
234
-
235
257
  debtUsage = await getTokenUsage(
236
258
  umi,
237
259
  debtBank!,
238
260
  false,
239
- bytesToI80F48(balance.liabilityShares.value),
261
+ bytesToI80F48(debtBalances[0].liabilityShares.value),
240
262
  livePositionUpdates?.debtAdjustment
241
263
  );
242
- break;
243
264
  }
244
265
  }
245
266
 
@@ -267,7 +288,7 @@ export async function getMarginfiAccountPositionState(
267
288
  return undefined;
268
289
  }
269
290
 
270
- const supplyPrice = PRICES[supplyMint.toString()].price;
291
+ const supplyPrice = PRICES[supplyMint!.toString()].price;
271
292
  let [maxLtv, liqThreshold] = await getMaxLtvAndLiqThreshold(
272
293
  supplyBank,
273
294
  debtBank,
@@ -322,18 +322,18 @@ export async function getAllPositionsByAuthority(
322
322
  }))
323
323
  );
324
324
 
325
- const marginfiPositions = await getAllMarginfiAccountsByAuthority(umi, user);
325
+ const marginfiPositions = await getAllMarginfiAccountsByAuthority(umi, user, true);
326
326
  allPositions.push(
327
- ...marginfiPositions.map((x) => ({
327
+ ...marginfiPositions.map((pubkey) => ({
328
328
  positionId: 0,
329
329
  lendingPlatform: LendingPlatform.Marginfi,
330
- protocolAccount: toWeb3JsPublicKey(x.publicKey),
330
+ protocolAccount: pubkey,
331
331
  }))
332
332
  );
333
333
 
334
334
  // TODO support other platforms
335
335
 
336
- return [];
336
+ return allPositions;
337
337
  }
338
338
 
339
339
  async function positionStateWithLatestPrices(