@haven-fi/solauto-sdk 1.0.342 → 1.0.344
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/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +8 -2
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/generalUtils.js +3 -2
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +4 -3
- package/package.json +1 -1
- package/src/transactions/transactionUtils.ts +10 -3
- package/src/utils/solauto/generalUtils.ts +5 -8
- package/src/utils/solauto/rebalanceUtils.ts +17 -8
- package/tests/transactions/solautoMarginfi.ts +31 -21
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAmBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAoCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA2LjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AA2LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAAC,MAAM,EAAE,aAAa,
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAmBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAoCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA2LjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AA2LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAAC,MAAM,EAAE,aAAa,oBAkDzE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA2H5C;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsC5C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG;;;;EA0DxE"}
|
@@ -329,8 +329,14 @@ async function getTransactionChores(client, tx) {
|
|
329
329
|
return [choresBefore, choresAfter];
|
330
330
|
}
|
331
331
|
async function requiresRefreshBeforeRebalance(client) {
|
332
|
-
|
333
|
-
|
332
|
+
const neverRefreshedBefore = client.solautoPositionData &&
|
333
|
+
client.solautoPositionData.state.supply.amountCanBeUsed.baseUnit ===
|
334
|
+
BigInt(0) &&
|
335
|
+
client.solautoPositionData.state.debt.amountCanBeUsed.baseUnit ===
|
336
|
+
BigInt(0);
|
337
|
+
const aboveMaxLtv = client.solautoPositionState.liqUtilizationRateBps >
|
338
|
+
(0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.01);
|
339
|
+
if (aboveMaxLtv || neverRefreshedBefore) {
|
334
340
|
return true;
|
335
341
|
}
|
336
342
|
else if (client.solautoPositionData && !client.selfManaged) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,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;AAI9E,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,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,oBAAoB,SAAI,GACvB,eAAe,GAAG,SAAS,
|
1
|
+
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
|
@@ -92,12 +92,13 @@ function eligibleForRebalance(positionState, positionSettings, positionDca, curr
|
|
92
92
|
const repayFrom = positionSettings.repayToBps + positionSettings.repayGap;
|
93
93
|
const boostFrom = boostToBps - positionSettings.boostGap;
|
94
94
|
if (positionState.liqUtilizationRateBps - boostFrom <= bpsDistanceThreshold) {
|
95
|
-
|
95
|
+
const limitsUpToDate = positionState.supply.amountCanBeUsed.baseUnit > BigInt(0) ||
|
96
|
+
positionState.debt.amountCanBeUsed.baseUnit > BigInt(0);
|
97
|
+
if (limitsUpToDate && positionState.liqUtilizationRateBps < boostFrom) {
|
96
98
|
const values = (0, rebalanceUtils_1.getRebalanceValues)(positionState, positionSettings, positionDca, (0, generalUtils_1.currentUnixSeconds)(), supplyMintPrice, debtMintPrice);
|
97
99
|
const sufficientLiquidity = (0, numberUtils_1.fromBaseUnit)(positionState.debt.amountCanBeUsed.baseAmountUsdValue, constants_1.USD_DECIMALS) *
|
98
100
|
0.95 >
|
99
101
|
values.debtAdjustmentUsd;
|
100
|
-
console.log((0, numberUtils_1.fromBaseUnit)(positionState.debt.amountCanBeUsed.baseAmountUsdValue, constants_1.USD_DECIMALS), values.debtAdjustmentUsd);
|
101
102
|
if (!sufficientLiquidity) {
|
102
103
|
(0, generalUtils_1.consoleLog)("Insufficient debt liquidity to further boost");
|
103
104
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EAEb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAajD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmI9C,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,GACnC,eAAe,CAwDjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,
|
1
|
+
{"version":3,"file":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EAEb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAajD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmI9C,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,GACnC,eAAe,CAwDjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CAuE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CA2ChB"}
|
@@ -122,9 +122,10 @@ function getFlashLoanDetails(client, values, jupQuote) {
|
|
122
122
|
? debtUsd + debtAdjustmentUsdAbs
|
123
123
|
: debtUsd;
|
124
124
|
const tempLiqUtilizationRateBps = (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, client.solautoPositionState.liqThresholdBps);
|
125
|
-
const
|
126
|
-
|
127
|
-
|
125
|
+
const maxLiqUtilizationRateBps = (0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.015);
|
126
|
+
const requiresFlashLoan = supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
|
127
|
+
(0, generalUtils_2.consoleLog)("Requires flash loan:", requiresFlashLoan);
|
128
|
+
(0, generalUtils_2.consoleLog)("Intermediary liq utilization rate:", tempLiqUtilizationRateBps, `$${supplyUsd}`, `$${debtUsd}`, "Max:", maxLiqUtilizationRateBps);
|
128
129
|
let flashLoanToken = undefined;
|
129
130
|
let flashLoanTokenPrice = 0;
|
130
131
|
if (values.rebalanceDirection === generated_1.RebalanceDirection.Boost) {
|
package/package.json
CHANGED
@@ -596,14 +596,21 @@ export async function getTransactionChores(
|
|
596
596
|
}
|
597
597
|
|
598
598
|
export async function requiresRefreshBeforeRebalance(client: SolautoClient) {
|
599
|
-
|
599
|
+
const neverRefreshedBefore =
|
600
|
+
client.solautoPositionData &&
|
601
|
+
client.solautoPositionData.state.supply.amountCanBeUsed.baseUnit ===
|
602
|
+
BigInt(0) &&
|
603
|
+
client.solautoPositionData.state.debt.amountCanBeUsed.baseUnit ===
|
604
|
+
BigInt(0);
|
605
|
+
const aboveMaxLtv =
|
600
606
|
client.solautoPositionState!.liqUtilizationRateBps >
|
601
607
|
getMaxLiqUtilizationRateBps(
|
602
608
|
client.solautoPositionState!.maxLtvBps,
|
603
609
|
client.solautoPositionState!.liqThresholdBps,
|
604
610
|
0.01
|
605
|
-
)
|
606
|
-
|
611
|
+
);
|
612
|
+
|
613
|
+
if (aboveMaxLtv || neverRefreshedBefore) {
|
607
614
|
return true;
|
608
615
|
} else if (client.solautoPositionData && !client.selfManaged) {
|
609
616
|
if (
|
@@ -167,7 +167,11 @@ export function eligibleForRebalance(
|
|
167
167
|
const boostFrom = boostToBps - positionSettings.boostGap;
|
168
168
|
|
169
169
|
if (positionState.liqUtilizationRateBps - boostFrom <= bpsDistanceThreshold) {
|
170
|
-
|
170
|
+
const limitsUpToDate =
|
171
|
+
positionState.supply.amountCanBeUsed.baseUnit > BigInt(0) ||
|
172
|
+
positionState.debt.amountCanBeUsed.baseUnit > BigInt(0);
|
173
|
+
|
174
|
+
if (limitsUpToDate && positionState.liqUtilizationRateBps < boostFrom) {
|
171
175
|
const values = getRebalanceValues(
|
172
176
|
positionState!,
|
173
177
|
positionSettings,
|
@@ -183,13 +187,6 @@ export function eligibleForRebalance(
|
|
183
187
|
) *
|
184
188
|
0.95 >
|
185
189
|
values.debtAdjustmentUsd;
|
186
|
-
console.log(
|
187
|
-
fromBaseUnit(
|
188
|
-
positionState.debt.amountCanBeUsed.baseAmountUsdValue,
|
189
|
-
USD_DECIMALS
|
190
|
-
),
|
191
|
-
values.debtAdjustmentUsd
|
192
|
-
);
|
193
190
|
if (!sufficientLiquidity) {
|
194
191
|
consoleLog("Insufficient debt liquidity to further boost");
|
195
192
|
}
|
@@ -16,7 +16,7 @@ import {
|
|
16
16
|
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
17
17
|
import { QuoteResponse } from "@jup-ag/api";
|
18
18
|
import { JupSwapDetails } from "../jupiterUtils";
|
19
|
-
import { currentUnixSeconds } from "../generalUtils";
|
19
|
+
import { consoleLog, currentUnixSeconds } from "../generalUtils";
|
20
20
|
import {
|
21
21
|
fromBaseUnit,
|
22
22
|
fromBps,
|
@@ -272,14 +272,23 @@ export function getFlashLoanDetails(
|
|
272
272
|
debtUsd,
|
273
273
|
client.solautoPositionState!.liqThresholdBps
|
274
274
|
);
|
275
|
+
const maxLiqUtilizationRateBps = getMaxLiqUtilizationRateBps(
|
276
|
+
client.solautoPositionState!.maxLtvBps,
|
277
|
+
client.solautoPositionState!.liqThresholdBps,
|
278
|
+
0.015
|
279
|
+
);
|
275
280
|
const requiresFlashLoan =
|
276
|
-
supplyUsd <= 0 ||
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
281
|
+
supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
|
282
|
+
|
283
|
+
consoleLog("Requires flash loan:", requiresFlashLoan);
|
284
|
+
consoleLog(
|
285
|
+
"Intermediary liq utilization rate:",
|
286
|
+
tempLiqUtilizationRateBps,
|
287
|
+
`$${supplyUsd}`,
|
288
|
+
`$${debtUsd}`,
|
289
|
+
"Max:",
|
290
|
+
maxLiqUtilizationRateBps
|
291
|
+
);
|
283
292
|
|
284
293
|
let flashLoanToken: PositionTokenUsage | undefined = undefined;
|
285
294
|
let flashLoanTokenPrice = 0;
|
@@ -26,15 +26,18 @@ import {
|
|
26
26
|
SOLAUTO_TEST_PROGRAM,
|
27
27
|
USDC,
|
28
28
|
} from "../../src/constants";
|
29
|
-
import {
|
29
|
+
import {
|
30
|
+
buildHeliusApiUrl,
|
31
|
+
positionStateWithLatestPrices,
|
32
|
+
} from "../../src/utils";
|
30
33
|
import { PriorityFeeSetting } from "../../src/types";
|
31
34
|
|
32
35
|
describe("Solauto Marginfi tests", async () => {
|
33
|
-
const signer = setupTest();
|
34
|
-
|
36
|
+
// const signer = setupTest();
|
37
|
+
const signer = setupTest("solauto-manager");
|
35
38
|
|
36
|
-
const payForTransactions =
|
37
|
-
const testProgram =
|
39
|
+
const payForTransactions = true;
|
40
|
+
const testProgram = false;
|
38
41
|
const positionId = 1;
|
39
42
|
|
40
43
|
it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
|
@@ -51,7 +54,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
51
54
|
await client.initialize({
|
52
55
|
signer,
|
53
56
|
positionId,
|
54
|
-
authority: new PublicKey("
|
57
|
+
authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
|
55
58
|
// new: true,
|
56
59
|
// marginfiAccount: new PublicKey(
|
57
60
|
// "4nNvUXF5YqHFcH2nGweSiuvy1ct7V5FXfoCLKFYUN36z"
|
@@ -61,6 +64,13 @@ describe("Solauto Marginfi tests", async () => {
|
|
61
64
|
// debtMint: new PublicKey(USDC),
|
62
65
|
});
|
63
66
|
|
67
|
+
const data = client.solautoPositionData;
|
68
|
+
console.log(data);
|
69
|
+
console.log(data?.state.supply.amountCanBeUsed);
|
70
|
+
console.log(data?.state.debt.amountCanBeUsed);
|
71
|
+
|
72
|
+
console.log(await positionStateWithLatestPrices(data!.state));
|
73
|
+
|
64
74
|
const transactionItems: TransactionItem[] = [];
|
65
75
|
// const settingParams: SolautoSettingsParametersInpArgs = {
|
66
76
|
// boostToBps: maxBoostToBps(
|
@@ -119,13 +129,13 @@ describe("Solauto Marginfi tests", async () => {
|
|
119
129
|
// )
|
120
130
|
// );
|
121
131
|
|
122
|
-
transactionItems.push(
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
);
|
132
|
+
// transactionItems.push(
|
133
|
+
// new TransactionItem(
|
134
|
+
// async (attemptNum) =>
|
135
|
+
// await buildSolautoRebalanceTransaction(client, undefined, attemptNum),
|
136
|
+
// "rebalance"
|
137
|
+
// )
|
138
|
+
// );
|
129
139
|
|
130
140
|
// transactionItems.push(
|
131
141
|
// new TransactionItem(
|
@@ -155,14 +165,14 @@ describe("Solauto Marginfi tests", async () => {
|
|
155
165
|
// )
|
156
166
|
// );
|
157
167
|
|
158
|
-
const statuses = await new TransactionsManager(
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
).clientSend(transactionItems);
|
168
|
+
// const statuses = await new TransactionsManager(
|
169
|
+
// client,
|
170
|
+
// undefined,
|
171
|
+
// !payForTransactions ? "only-simulate" : "normal",
|
172
|
+
// PriorityFeeSetting.Low,
|
173
|
+
// true
|
174
|
+
// ).clientSend(transactionItems);
|
165
175
|
|
166
|
-
console.log(statuses);
|
176
|
+
// console.log(statuses);
|
167
177
|
});
|
168
178
|
});
|