@haven-fi/solauto-sdk 1.0.323 → 1.0.325
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/clients/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +1 -1
- package/dist/utils/marginfiUtils.d.ts +2 -2
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +11 -1
- package/dist/utils/solauto/generalUtils.d.ts +2 -2
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/generalUtils.js +4 -5
- package/local/createISMAccounts.ts +1 -1
- package/local/updateSolautoLUT.ts +2 -4
- package/package.json +1 -1
- package/src/clients/solautoMarginfiClient.ts +1 -2
- package/src/utils/marginfiUtils.ts +11 -1
- package/src/utils/solauto/generalUtils.ts +3 -7
- package/tests/unit/accounts.ts +14 -2
@@ -1 +1 @@
|
|
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,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAQzC,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,WAAW,CAAkB;IAE9B,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;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAkE1C,8BAA8B;
|
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,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAQzC,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,WAAW,CAAkB;IAE9B,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;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAkE1C,8BAA8B;IA6CpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAUzB,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IA0BvE,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;IAgFrB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAoF5D,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CA8ClE"}
|
@@ -62,7 +62,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
62
62
|
this.initialized = true;
|
63
63
|
}
|
64
64
|
async setIntermediaryMarginfiDetails() {
|
65
|
-
const existingMarginfiAccounts = (await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(this.
|
65
|
+
const existingMarginfiAccounts = (await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(this.umi, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.marginfiGroup))
|
66
66
|
.filter((x) => !x.marginfiAccount.equals(this.marginfiAccountPk))
|
67
67
|
.sort((a, b) => a.marginfiAccount.toString().localeCompare(b.marginfiAccount.toString()));
|
68
68
|
const compatibleMarginfiAccounts = existingMarginfiAccounts.length > 0
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
2
2
|
import { Umi } from "@metaplex-foundation/umi";
|
3
3
|
import { Bank, MarginfiAccount } from "../marginfi-sdk";
|
4
4
|
import { MarginfiAssetAccounts } from "../types/accounts";
|
@@ -16,7 +16,7 @@ export declare function getMaxLtvAndLiqThreshold(umi: Umi, marginfiGroup: Public
|
|
16
16
|
mint: PublicKey;
|
17
17
|
bank?: Bank | null;
|
18
18
|
}, supplyPrice?: number): Promise<[number, number]>;
|
19
|
-
export declare function getAllMarginfiAccountsByAuthority(
|
19
|
+
export declare function getAllMarginfiAccountsByAuthority(umi: Umi, authority: PublicKey, group?: PublicKey, compatibleWithSolauto?: boolean): Promise<{
|
20
20
|
marginfiAccount: PublicKey;
|
21
21
|
supplyMint?: PublicKey;
|
22
22
|
debtMint?: PublicKey;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwC3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAiEA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,OAAO,UAejB;AAsDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAiLpC;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE"}
|
@@ -66,7 +66,7 @@ async function getMaxLtvAndLiqThreshold(umi, marginfiGroup, supply, debt, supply
|
|
66
66
|
}
|
67
67
|
return calcMaxLtvAndLiqThreshold(supply.bank, debt.bank, supplyPrice);
|
68
68
|
}
|
69
|
-
async function getAllMarginfiAccountsByAuthority(
|
69
|
+
async function getAllMarginfiAccountsByAuthority(umi, authority, group, compatibleWithSolauto) {
|
70
70
|
const marginfiAccounts = await umi.rpc.getProgramAccounts(marginfi_sdk_1.MARGINFI_PROGRAM_ID, {
|
71
71
|
commitment: "confirmed",
|
72
72
|
dataSlice: {
|
@@ -83,6 +83,16 @@ async function getAllMarginfiAccountsByAuthority(conn, umi, authority, compatibl
|
|
83
83
|
offset: 40, // Anchor account discriminator + group pubkey
|
84
84
|
},
|
85
85
|
},
|
86
|
+
...(group
|
87
|
+
? [
|
88
|
+
{
|
89
|
+
memcmp: {
|
90
|
+
bytes: new Uint8Array(group.toBuffer()),
|
91
|
+
offset: 8,
|
92
|
+
},
|
93
|
+
},
|
94
|
+
]
|
95
|
+
: []),
|
86
96
|
],
|
87
97
|
});
|
88
98
|
if (compatibleWithSolauto) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
2
2
|
import { Program, Umi } from "@metaplex-foundation/umi";
|
3
3
|
import { AutomationSettings, DCASettings, DCASettingsInpArgs, PositionState, PositionType, SolautoSettingsParameters, SolautoSettingsParametersInpArgs, TokenType } from "../../generated";
|
4
4
|
import { RebalanceAction, SolautoPositionDetails } from "../../types/solauto";
|
@@ -12,7 +12,7 @@ export declare function eligibleForRefresh(positionState: PositionState, positio
|
|
12
12
|
export declare function getSolautoManagedPositions(umi: Umi, authority?: PublicKey, positionTypeFilter?: PositionType): Promise<SolautoPositionDetails[]>;
|
13
13
|
export declare function getAllReferralStates(umi: Umi): Promise<PublicKey[]>;
|
14
14
|
export declare function getReferralsByUser(umi: Umi, user: PublicKey): Promise<PublicKey[]>;
|
15
|
-
export declare function getAllPositionsByAuthority(
|
15
|
+
export declare function getAllPositionsByAuthority(umi: Umi, user: PublicKey, positionTypeFilter?: PositionType): Promise<SolautoPositionDetails[]>;
|
16
16
|
export declare function positionStateWithLatestPrices(state: PositionState, supplyPrice?: number, debtPrice?: number): Promise<PositionState>;
|
17
17
|
interface AssetProps {
|
18
18
|
mint: PublicKey;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
|
@@ -91,8 +91,7 @@ function eligibleForRebalance(positionState, positionSettings, positionDca, curr
|
|
91
91
|
: positionSettings.boostToBps;
|
92
92
|
const repayFrom = positionSettings.repayToBps + positionSettings.repayGap;
|
93
93
|
const boostFrom = boostToBps - positionSettings.boostGap;
|
94
|
-
if (
|
95
|
-
bpsDistanceThreshold) {
|
94
|
+
if (positionState.liqUtilizationRateBps - boostFrom <= bpsDistanceThreshold) {
|
96
95
|
if (positionState.liqUtilizationRateBps < boostFrom) {
|
97
96
|
const values = (0, rebalanceUtils_1.getRebalanceValues)(positionState, positionSettings, positionDca, (0, generalUtils_1.currentUnixSeconds)(), supplyMintPrice, debtMintPrice);
|
98
97
|
const sufficientLiquidity = (0, numberUtils_1.fromBaseUnit)(positionState.debt.amountCanBeUsed.baseAmountUsdValue, constants_1.USD_DECIMALS) *
|
@@ -105,7 +104,7 @@ function eligibleForRebalance(positionState, positionSettings, positionDca, curr
|
|
105
104
|
}
|
106
105
|
return "boost";
|
107
106
|
}
|
108
|
-
else if (
|
107
|
+
else if (repayFrom - positionState.liqUtilizationRateBps <=
|
109
108
|
bpsDistanceThreshold) {
|
110
109
|
return "repay";
|
111
110
|
}
|
@@ -237,7 +236,7 @@ async function getReferralsByUser(umi, user) {
|
|
237
236
|
});
|
238
237
|
return accounts.map((x) => (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey));
|
239
238
|
}
|
240
|
-
async function getAllPositionsByAuthority(
|
239
|
+
async function getAllPositionsByAuthority(umi, user, positionTypeFilter) {
|
241
240
|
const solautoCompatiblePositions = await Promise.all([
|
242
241
|
(async () => {
|
243
242
|
const solautoManagedPositions = await getSolautoManagedPositions(umi, user, positionTypeFilter);
|
@@ -250,7 +249,7 @@ async function getAllPositionsByAuthority(conn, umi, user, positionTypeFilter) {
|
|
250
249
|
if (positionTypeFilter === generated_1.PositionType.SafeLoan) {
|
251
250
|
return [];
|
252
251
|
}
|
253
|
-
let marginfiPositions = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(
|
252
|
+
let marginfiPositions = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(umi, user, undefined, true);
|
254
253
|
marginfiPositions = marginfiPositions.filter((x) => x.supplyMint &&
|
255
254
|
(x.debtMint.equals(web3_js_1.PublicKey.default) ||
|
256
255
|
constants_1.ALL_SUPPORTED_TOKENS.includes(x.debtMint.toString())));
|
@@ -24,7 +24,7 @@ async function createIntermediarySolautoManagerAccounts() {
|
|
24
24
|
|
25
25
|
umi = umi.use(signerIdentity(signer));
|
26
26
|
|
27
|
-
const accounts = await getAllMarginfiAccountsByAuthority(
|
27
|
+
const accounts = await getAllMarginfiAccountsByAuthority(umi, SOLAUTO_MANAGER, undefined, false);
|
28
28
|
const data = await safeFetchAllMarginfiAccount(umi, accounts.map(x => publicKey(x.marginfiAccount)));
|
29
29
|
const existingMarginfiGroups = data.map(x => x.group.toString());
|
30
30
|
|
@@ -28,14 +28,12 @@ const solautoFeeWalletTokenAccounts = getTokenAccounts(
|
|
28
28
|
);
|
29
29
|
|
30
30
|
export async function updateSolautoLut(additionalAccounts?: string[]) {
|
31
|
-
const [
|
31
|
+
const [_, umi] = getSolanaRpcConnection(
|
32
32
|
buildHeliusApiUrl(process.env.HELIUS_API_KEY!)
|
33
33
|
);
|
34
34
|
const ismAccounts = await getAllMarginfiAccountsByAuthority(
|
35
|
-
connection,
|
36
35
|
umi,
|
37
|
-
SOLAUTO_MANAGER
|
38
|
-
false
|
36
|
+
SOLAUTO_MANAGER
|
39
37
|
);
|
40
38
|
|
41
39
|
return updateLookupTable(
|
package/package.json
CHANGED
@@ -158,10 +158,9 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
158
158
|
async setIntermediaryMarginfiDetails() {
|
159
159
|
const existingMarginfiAccounts = (
|
160
160
|
await getAllMarginfiAccountsByAuthority(
|
161
|
-
this.connection,
|
162
161
|
this.umi,
|
163
162
|
toWeb3JsPublicKey(this.signer.publicKey),
|
164
|
-
|
163
|
+
this.marginfiGroup
|
165
164
|
)
|
166
165
|
)
|
167
166
|
.filter((x) => !x.marginfiAccount.equals(this.marginfiAccountPk))
|
@@ -138,9 +138,9 @@ export async function getMaxLtvAndLiqThreshold(
|
|
138
138
|
}
|
139
139
|
|
140
140
|
export async function getAllMarginfiAccountsByAuthority(
|
141
|
-
conn: Connection,
|
142
141
|
umi: Umi,
|
143
142
|
authority: PublicKey,
|
143
|
+
group?: PublicKey,
|
144
144
|
compatibleWithSolauto?: boolean
|
145
145
|
): Promise<
|
146
146
|
{ marginfiAccount: PublicKey; supplyMint?: PublicKey; debtMint?: PublicKey }[]
|
@@ -163,6 +163,16 @@ export async function getAllMarginfiAccountsByAuthority(
|
|
163
163
|
offset: 40, // Anchor account discriminator + group pubkey
|
164
164
|
},
|
165
165
|
},
|
166
|
+
...(group
|
167
|
+
? [
|
168
|
+
{
|
169
|
+
memcmp: {
|
170
|
+
bytes: new Uint8Array(group.toBuffer()),
|
171
|
+
offset: 8,
|
172
|
+
},
|
173
|
+
},
|
174
|
+
]
|
175
|
+
: []),
|
166
176
|
],
|
167
177
|
}
|
168
178
|
);
|
@@ -166,10 +166,7 @@ export function eligibleForRebalance(
|
|
166
166
|
const repayFrom = positionSettings.repayToBps + positionSettings.repayGap;
|
167
167
|
const boostFrom = boostToBps - positionSettings.boostGap;
|
168
168
|
|
169
|
-
if (
|
170
|
-
Math.max(0, positionState.liqUtilizationRateBps - boostFrom) <=
|
171
|
-
bpsDistanceThreshold
|
172
|
-
) {
|
169
|
+
if (positionState.liqUtilizationRateBps - boostFrom <= bpsDistanceThreshold) {
|
173
170
|
if (positionState.liqUtilizationRateBps < boostFrom) {
|
174
171
|
const values = getRebalanceValues(
|
175
172
|
positionState!,
|
@@ -194,7 +191,7 @@ export function eligibleForRebalance(
|
|
194
191
|
|
195
192
|
return "boost";
|
196
193
|
} else if (
|
197
|
-
|
194
|
+
repayFrom - positionState.liqUtilizationRateBps <=
|
198
195
|
bpsDistanceThreshold
|
199
196
|
) {
|
200
197
|
return "repay";
|
@@ -371,7 +368,6 @@ export async function getReferralsByUser(
|
|
371
368
|
}
|
372
369
|
|
373
370
|
export async function getAllPositionsByAuthority(
|
374
|
-
conn: Connection,
|
375
371
|
umi: Umi,
|
376
372
|
user: PublicKey,
|
377
373
|
positionTypeFilter?: PositionType
|
@@ -395,9 +391,9 @@ export async function getAllPositionsByAuthority(
|
|
395
391
|
}
|
396
392
|
|
397
393
|
let marginfiPositions = await getAllMarginfiAccountsByAuthority(
|
398
|
-
conn,
|
399
394
|
umi,
|
400
395
|
user,
|
396
|
+
undefined,
|
401
397
|
true
|
402
398
|
);
|
403
399
|
marginfiPositions = marginfiPositions.filter(
|
package/tests/unit/accounts.ts
CHANGED
@@ -9,9 +9,10 @@ import {
|
|
9
9
|
} from "../../src/utils/solanaUtils";
|
10
10
|
import { publicKey } from "@metaplex-foundation/umi";
|
11
11
|
import { assert } from "chai";
|
12
|
-
import { getTokenAccount } from "../../src/utils";
|
13
|
-
import { SOLAUTO_FEES_WALLET } from "../../src/constants";
|
12
|
+
import { getAllMarginfiAccountsByAuthority, getTokenAccount } from "../../src/utils";
|
13
|
+
import { SOLAUTO_FEES_WALLET, SOLAUTO_MANAGER } from "../../src/constants";
|
14
14
|
import { PublicKey } from "@solana/web3.js";
|
15
|
+
import { safeFetchAllMarginfiAccount } from "../../src/marginfi-sdk";
|
15
16
|
|
16
17
|
describe("Assert Solauto fee token accounts are created", async () => {
|
17
18
|
it("all Solauto fee token accounts created", async () => {
|
@@ -35,4 +36,15 @@ describe("Assert Solauto fee token accounts are created", async () => {
|
|
35
36
|
}
|
36
37
|
assert(tokenAccounts.filter((x) => !x.exists).length === 0);
|
37
38
|
});
|
39
|
+
|
40
|
+
it("ISM accounts for every supported Marginfi group", async () => {
|
41
|
+
let [conn, umi] = getSolanaRpcConnection(
|
42
|
+
buildHeliusApiUrl(process.env.HELIUS_API_KEY!)
|
43
|
+
);
|
44
|
+
|
45
|
+
const ism = await getAllMarginfiAccountsByAuthority(umi, SOLAUTO_MANAGER, undefined, false);
|
46
|
+
|
47
|
+
const ismData = safeFetchAllMarginfiAccount(umi, ism.map(x => publicKey(x.marginfiAccount)));
|
48
|
+
|
49
|
+
});
|
38
50
|
});
|