@haven-fi/solauto-sdk 1.0.305 → 1.0.307
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/utils/marginfiUtils.d.ts +2 -1
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +17 -10
- package/dist/utils/solauto/generalUtils.d.ts +1 -0
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/generalUtils.js +4 -4
- package/package.json +1 -1
- package/src/utils/marginfiUtils.ts +23 -15
- package/src/utils/solauto/generalUtils.ts +9 -4
- package/tests/transactions/solautoMarginfi.ts +11 -10
@@ -21,6 +21,7 @@ export declare function getAllMarginfiAccountsByAuthority(conn: Connection, umi:
|
|
21
21
|
supplyMint?: PublicKey;
|
22
22
|
debtMint?: PublicKey;
|
23
23
|
}[]>;
|
24
|
+
export declare function getBankLiquidityBaseUnit(bank: Bank | null, isAsset: boolean): number;
|
24
25
|
interface BankSelection {
|
25
26
|
mint?: PublicKey;
|
26
27
|
banksCache?: BanksCache;
|
@@ -35,6 +36,6 @@ export declare function getMarginfiAccountPositionState(umi: Umi, protocolAccoun
|
|
35
36
|
data?: MarginfiAccount;
|
36
37
|
}, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, livePositionUpdates?: LivePositionUpdates): Promise<PositionState | undefined>;
|
37
38
|
export declare function calculateAnnualAPYs(bank: Bank): [number, number];
|
38
|
-
export declare function getUpToDateShareValues(bank: Bank):
|
39
|
+
export declare function getUpToDateShareValues(bank: Bank): [number, number];
|
39
40
|
export {};
|
40
41
|
//# 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,UAAU,EAAE,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,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,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,CAuDA;
|
1
|
+
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,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,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,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,CAuDA;AAED,wBAAgB,wBAAwB,CACtC,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"}
|
@@ -4,6 +4,7 @@ exports.findMarginfiAccounts = findMarginfiAccounts;
|
|
4
4
|
exports.calcMaxLtvAndLiqThreshold = calcMaxLtvAndLiqThreshold;
|
5
5
|
exports.getMaxLtvAndLiqThreshold = getMaxLtvAndLiqThreshold;
|
6
6
|
exports.getAllMarginfiAccountsByAuthority = getAllMarginfiAccountsByAuthority;
|
7
|
+
exports.getBankLiquidityBaseUnit = getBankLiquidityBaseUnit;
|
7
8
|
exports.getMarginfiAccountPositionState = getMarginfiAccountPositionState;
|
8
9
|
exports.calculateAnnualAPYs = calculateAnnualAPYs;
|
9
10
|
exports.getUpToDateShareValues = getUpToDateShareValues;
|
@@ -107,23 +108,29 @@ async function getAllMarginfiAccountsByAuthority(conn, umi, authority, compatibl
|
|
107
108
|
}));
|
108
109
|
}
|
109
110
|
}
|
110
|
-
|
111
|
-
let amountUsed = 0;
|
111
|
+
function getBankLiquidityBaseUnit(bank, isAsset) {
|
112
112
|
let amountCanBeUsed = 0;
|
113
|
-
let marketPrice = 0;
|
114
113
|
if (bank !== null) {
|
115
|
-
[
|
116
|
-
(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.mint),
|
117
|
-
]);
|
118
|
-
const [assetShareValue, liabilityShareValue] = await getUpToDateShareValues(bank);
|
119
|
-
const shareValue = isAsset ? assetShareValue : liabilityShareValue;
|
120
|
-
amountUsed = shares * shareValue + Number(amountUsedAdjustment ?? 0);
|
114
|
+
const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
|
121
115
|
const totalDeposited = (0, numberUtils_1.bytesToI80F48)(bank.totalAssetShares.value) * assetShareValue;
|
122
116
|
amountCanBeUsed = isAsset
|
123
117
|
? Number(bank.config.depositLimit) - totalDeposited
|
124
118
|
: totalDeposited -
|
125
119
|
(0, numberUtils_1.bytesToI80F48)(bank.totalLiabilityShares.value) * liabilityShareValue;
|
126
120
|
}
|
121
|
+
return amountCanBeUsed;
|
122
|
+
}
|
123
|
+
async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment) {
|
124
|
+
let amountUsed = 0;
|
125
|
+
let amountCanBeUsed = 0;
|
126
|
+
let marketPrice = 0;
|
127
|
+
if (bank !== null) {
|
128
|
+
[marketPrice] = await (0, priceUtils_1.fetchTokenPrices)([(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.mint)]);
|
129
|
+
const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
|
130
|
+
const shareValue = isAsset ? assetShareValue : liabilityShareValue;
|
131
|
+
amountUsed = shares * shareValue + Number(amountUsedAdjustment ?? 0);
|
132
|
+
amountCanBeUsed = getBankLiquidityBaseUnit(bank, isAsset);
|
133
|
+
}
|
127
134
|
return {
|
128
135
|
mint: bank?.mint ?? (0, umi_1.publicKey)(web3_js_1.PublicKey.default),
|
129
136
|
decimals: bank?.mintDecimals ?? 0,
|
@@ -281,7 +288,7 @@ function calculateAnnualAPYs(bank) {
|
|
281
288
|
const utilizationRatio = totalLiabilities / totalAssets;
|
282
289
|
return calcInterestRate(bank, utilizationRatio);
|
283
290
|
}
|
284
|
-
|
291
|
+
function getUpToDateShareValues(bank) {
|
285
292
|
let timeDelta = (0, generalUtils_1.currentUnixSeconds)() - Number(bank.lastUpdate);
|
286
293
|
const [lendingApr, borrowingApr] = calculateAnnualAPYs(bank);
|
287
294
|
return [
|
@@ -18,6 +18,7 @@ interface AssetProps {
|
|
18
18
|
mint: PublicKey;
|
19
19
|
price?: number;
|
20
20
|
amountUsed?: number;
|
21
|
+
amountCanBeUsed?: number;
|
21
22
|
}
|
22
23
|
export declare function createFakePositionState(supply: AssetProps, debt: AssetProps, maxLtvBps: number, liqThresholdBps: number): PositionState;
|
23
24
|
export declare function createSolautoSettings(settings: SolautoSettingsParametersInpArgs): SolautoSettingsParameters;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAGL,OAAO,EAEP,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAElB,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,gCAAgC,EAChC,SAAS,EAMV,MAAM,iBAAiB,CAAC;AAkBzB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAczE;AAgBD,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,kBAAkB,GAC7B,MAAM,CAKR;AAED,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,kBAAkB,EAC9B,eAAe,EAAE,MAAM,GACtB,OAAO,CAET;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,kBAAkB,EAC9B,oBAAoB,EAAE,MAAM,UAY7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,yBAAyB,EACnC,eAAe,EAAE,MAAM,GACtB,yBAAyB,CAgB3B;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,yBAAyB,GAAG,SAAS,EACvD,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,eAAe,EAAE,MAAM,EACvB,oBAAoB,SAAI,GACvB,eAAe,GAAG,SAAS,CA2C7B;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,yBAAyB,EAC3C,eAAe,EAAE,MAAM,GACtB,OAAO,CAYT;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,EACR,SAAS,CAAC,EAAE,SAAS,EACrB,kBAAkB,CAAC,EAAE,YAAY,GAChC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAuFnC;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAkBzE;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,SAAS,EAAE,CAAC,CA+BtB;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,SAAS,EACf,kBAAkB,CAAC,EAAE,YAAY,GAChC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA6CnC;AAED,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,aAAa,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CA2CxB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
|
@@ -304,8 +304,8 @@ function createFakePositionState(supply, debt, maxLtvBps, liqThresholdBps) {
|
|
304
304
|
baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(supplyUsd, constants_1.USD_DECIMALS),
|
305
305
|
},
|
306
306
|
amountCanBeUsed: {
|
307
|
-
baseUnit: (0, numberUtils_1.toBaseUnit)(
|
308
|
-
baseAmountUsdValue: BigInt(Math.round(
|
307
|
+
baseUnit: (0, numberUtils_1.toBaseUnit)(supply.amountCanBeUsed ?? 0, supplyDecimals),
|
308
|
+
baseAmountUsdValue: BigInt(Math.round((supply.amountUsed ?? 0) * (supply.price ?? 0))),
|
309
309
|
},
|
310
310
|
baseAmountMarketPriceUsd: (0, numberUtils_1.toBaseUnit)(supply.price ?? 0, constants_1.USD_DECIMALS),
|
311
311
|
borrowFeeBps: 0,
|
@@ -322,8 +322,8 @@ function createFakePositionState(supply, debt, maxLtvBps, liqThresholdBps) {
|
|
322
322
|
baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(debtUsd, constants_1.USD_DECIMALS),
|
323
323
|
},
|
324
324
|
amountCanBeUsed: {
|
325
|
-
baseUnit: (0, numberUtils_1.toBaseUnit)(
|
326
|
-
baseAmountUsdValue: BigInt(Math.round(
|
325
|
+
baseUnit: (0, numberUtils_1.toBaseUnit)(debt.amountCanBeUsed ?? 0, debtDecimals),
|
326
|
+
baseAmountUsdValue: BigInt(Math.round((debt.amountCanBeUsed ?? 0) * (debt.price ?? 0))),
|
327
327
|
},
|
328
328
|
baseAmountMarketPriceUsd: (0, numberUtils_1.toBaseUnit)(debt.price ?? 0, constants_1.USD_DECIMALS),
|
329
329
|
borrowFeeBps: 0,
|
package/package.json
CHANGED
@@ -201,6 +201,25 @@ export async function getAllMarginfiAccountsByAuthority(
|
|
201
201
|
}
|
202
202
|
}
|
203
203
|
|
204
|
+
export function getBankLiquidityBaseUnit(
|
205
|
+
bank: Bank | null,
|
206
|
+
isAsset: boolean
|
207
|
+
) {
|
208
|
+
let amountCanBeUsed = 0;
|
209
|
+
|
210
|
+
if (bank !== null) {
|
211
|
+
const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
|
212
|
+
const totalDeposited =
|
213
|
+
bytesToI80F48(bank.totalAssetShares.value) * assetShareValue;
|
214
|
+
amountCanBeUsed = isAsset
|
215
|
+
? Number(bank.config.depositLimit) - totalDeposited
|
216
|
+
: totalDeposited -
|
217
|
+
bytesToI80F48(bank.totalLiabilityShares.value) * liabilityShareValue;
|
218
|
+
}
|
219
|
+
|
220
|
+
return amountCanBeUsed;
|
221
|
+
}
|
222
|
+
|
204
223
|
async function getTokenUsage(
|
205
224
|
bank: Bank | null,
|
206
225
|
isAsset: boolean,
|
@@ -212,20 +231,11 @@ async function getTokenUsage(
|
|
212
231
|
let marketPrice = 0;
|
213
232
|
|
214
233
|
if (bank !== null) {
|
215
|
-
[marketPrice] = await fetchTokenPrices([
|
216
|
-
|
217
|
-
]);
|
218
|
-
const [assetShareValue, liabilityShareValue] =
|
219
|
-
await getUpToDateShareValues(bank);
|
234
|
+
[marketPrice] = await fetchTokenPrices([toWeb3JsPublicKey(bank.mint)]);
|
235
|
+
const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
|
220
236
|
const shareValue = isAsset ? assetShareValue : liabilityShareValue;
|
221
237
|
amountUsed = shares * shareValue + Number(amountUsedAdjustment ?? 0);
|
222
|
-
|
223
|
-
const totalDeposited =
|
224
|
-
bytesToI80F48(bank.totalAssetShares.value) * assetShareValue;
|
225
|
-
amountCanBeUsed = isAsset
|
226
|
-
? Number(bank.config.depositLimit) - totalDeposited
|
227
|
-
: totalDeposited -
|
228
|
-
bytesToI80F48(bank.totalLiabilityShares.value) * liabilityShareValue;
|
238
|
+
amountCanBeUsed = getBankLiquidityBaseUnit(bank, isAsset);
|
229
239
|
}
|
230
240
|
|
231
241
|
return {
|
@@ -528,9 +538,7 @@ export function calculateAnnualAPYs(bank: Bank) {
|
|
528
538
|
return calcInterestRate(bank, utilizationRatio);
|
529
539
|
}
|
530
540
|
|
531
|
-
export
|
532
|
-
bank: Bank
|
533
|
-
): Promise<[number, number]> {
|
541
|
+
export function getUpToDateShareValues(bank: Bank): [number, number] {
|
534
542
|
let timeDelta = currentUnixSeconds() - Number(bank.lastUpdate);
|
535
543
|
const [lendingApr, borrowingApr] = calculateAnnualAPYs(bank);
|
536
544
|
|
@@ -450,6 +450,7 @@ interface AssetProps {
|
|
450
450
|
mint: PublicKey;
|
451
451
|
price?: number;
|
452
452
|
amountUsed?: number;
|
453
|
+
amountCanBeUsed?: number;
|
453
454
|
}
|
454
455
|
|
455
456
|
export function createFakePositionState(
|
@@ -476,8 +477,10 @@ export function createFakePositionState(
|
|
476
477
|
baseAmountUsdValue: toBaseUnit(supplyUsd, USD_DECIMALS),
|
477
478
|
},
|
478
479
|
amountCanBeUsed: {
|
479
|
-
baseUnit: toBaseUnit(
|
480
|
-
baseAmountUsdValue: BigInt(
|
480
|
+
baseUnit: toBaseUnit(supply.amountCanBeUsed ?? 0, supplyDecimals),
|
481
|
+
baseAmountUsdValue: BigInt(
|
482
|
+
Math.round((supply.amountUsed ?? 0) * (supply.price ?? 0))
|
483
|
+
),
|
481
484
|
},
|
482
485
|
baseAmountMarketPriceUsd: toBaseUnit(supply.price ?? 0, USD_DECIMALS),
|
483
486
|
borrowFeeBps: 0,
|
@@ -494,8 +497,10 @@ export function createFakePositionState(
|
|
494
497
|
baseAmountUsdValue: toBaseUnit(debtUsd, USD_DECIMALS),
|
495
498
|
},
|
496
499
|
amountCanBeUsed: {
|
497
|
-
baseUnit: toBaseUnit(
|
498
|
-
baseAmountUsdValue: BigInt(
|
500
|
+
baseUnit: toBaseUnit(debt.amountCanBeUsed ?? 0, debtDecimals),
|
501
|
+
baseAmountUsdValue: BigInt(
|
502
|
+
Math.round((debt.amountCanBeUsed ?? 0) * (debt.price ?? 0))
|
503
|
+
),
|
499
504
|
},
|
500
505
|
baseAmountMarketPriceUsd: toBaseUnit(debt.price ?? 0, USD_DECIMALS),
|
501
506
|
borrowFeeBps: 0,
|
@@ -3,6 +3,7 @@ import { none, publicKey, some } from "@metaplex-foundation/umi";
|
|
3
3
|
import { setupTest } from "../shared";
|
4
4
|
import { SolautoMarginfiClient } from "../../src/clients/solautoMarginfiClient";
|
5
5
|
import {
|
6
|
+
safeFetchSolautoPosition,
|
6
7
|
solautoAction,
|
7
8
|
SolautoSettingsParametersInpArgs,
|
8
9
|
} from "../../src/generated";
|
@@ -26,7 +27,7 @@ import {
|
|
26
27
|
SOLAUTO_TEST_PROGRAM,
|
27
28
|
USDC,
|
28
29
|
} from "../../src/constants";
|
29
|
-
import { buildHeliusApiUrl } from "../../src/utils";
|
30
|
+
import { buildHeliusApiUrl, getSolautoManagedPositions, positionStateWithLatestPrices } from "../../src/utils";
|
30
31
|
import { PriorityFeeSetting } from "../../src/types";
|
31
32
|
|
32
33
|
describe("Solauto Marginfi tests", async () => {
|
@@ -40,8 +41,8 @@ describe("Solauto Marginfi tests", async () => {
|
|
40
41
|
it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
|
41
42
|
const client = new SolautoMarginfiClient(
|
42
43
|
buildHeliusApiUrl(process.env.HELIUS_API_KEY!),
|
43
|
-
true
|
44
|
-
testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM
|
44
|
+
true
|
45
|
+
// testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM
|
45
46
|
);
|
46
47
|
|
47
48
|
const supply = NATIVE_MINT;
|
@@ -155,13 +156,13 @@ describe("Solauto Marginfi tests", async () => {
|
|
155
156
|
// )
|
156
157
|
// );
|
157
158
|
|
158
|
-
const statuses = await new TransactionsManager(
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
).clientSend(transactionItems);
|
159
|
+
// const statuses = await new TransactionsManager(
|
160
|
+
// client,
|
161
|
+
// undefined,
|
162
|
+
// !payForTransactions ? "only-simulate" : "normal",
|
163
|
+
// PriorityFeeSetting.Low
|
164
|
+
// ).clientSend(transactionItems);
|
164
165
|
|
165
|
-
console.log(statuses);
|
166
|
+
// console.log(statuses);
|
166
167
|
});
|
167
168
|
});
|