@haven-fi/solauto-sdk 1.0.158 → 1.0.160
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.js +1 -1
- package/dist/utils/solanaUtils.js +1 -1
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +7 -4
- package/package.json +1 -1
- package/src/clients/solautoMarginfiClient.ts +1 -1
- package/src/utils/solanaUtils.ts +1 -1
- package/src/utils/solauto/rebalanceUtils.ts +14 -14
|
@@ -336,7 +336,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
336
336
|
: undefined,
|
|
337
337
|
rebalanceType,
|
|
338
338
|
targetLiqUtilizationRateBps: targetLiqUtilizationRateBps ?? null,
|
|
339
|
-
targetInAmountBaseUnit: targetLiqUtilizationRateBps
|
|
339
|
+
targetInAmountBaseUnit: targetLiqUtilizationRateBps && rebalanceStep === "A"
|
|
340
340
|
? swapDetails.amount
|
|
341
341
|
: null,
|
|
342
342
|
limitGapBps: limitGapBps ?? null,
|
|
@@ -157,7 +157,7 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, txType, attem
|
|
|
157
157
|
if (txType !== "skip-simulation") {
|
|
158
158
|
// TODO: we should only retry simulation if it's not a solauto error
|
|
159
159
|
const simulationResult = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await simulateTransaction(connection, (0, umi_web3js_adapters_1.toWeb3JsTransaction)(await (await assembleFinalTransaction(umi.identity, tx, feeEstimate, 1400000).setLatestBlockhash(umi)).build(umi))), 3);
|
|
160
|
-
const computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.
|
|
160
|
+
const computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.2);
|
|
161
161
|
console.log("Compute unit limit: ", computeUnitLimit);
|
|
162
162
|
}
|
|
163
163
|
if (txType !== "only-simulate") {
|
|
@@ -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,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
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,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA8IjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;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,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAiEjB;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,EACvB,cAAc,EAAE,MAAM,GACrB,gBAAgB,GAAG,SAAS,CAoE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAsChB"}
|
|
@@ -111,11 +111,12 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
|
|
|
111
111
|
debtAdjustmentUsd,
|
|
112
112
|
amountToDcaIn: amountToDcaIn ?? 0,
|
|
113
113
|
amountUsdToDcaIn,
|
|
114
|
-
dcaTokenType: dca?.tokenType
|
|
114
|
+
dcaTokenType: dca?.tokenType,
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
function getFlashLoanDetails(client, values, jupQuote, priceImpactBps) {
|
|
118
|
-
let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
|
|
118
|
+
let supplyUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
|
|
119
|
+
(values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
|
|
119
120
|
let debtUsd = (0, numberUtils_1.fromBaseUnit)(client.solautoPositionState.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
|
|
120
121
|
const debtAdjustmentWithSlippage = Math.abs(values.debtAdjustmentUsd) +
|
|
121
122
|
Math.abs(values.debtAdjustmentUsd) * (0, numberUtils_1.fromBps)(priceImpactBps);
|
|
@@ -141,7 +142,8 @@ function getFlashLoanDetails(client, values, jupQuote, priceImpactBps) {
|
|
|
141
142
|
flashLoanToken = client.solautoPositionState.supply;
|
|
142
143
|
flashLoanTokenPrice = (0, generalUtils_2.safeGetPrice)(client.supplyMint);
|
|
143
144
|
}
|
|
144
|
-
const exactAmountBaseUnit = jupQuote &&
|
|
145
|
+
const exactAmountBaseUnit = jupQuote &&
|
|
146
|
+
(jupQuote.swapMode === "ExactOut" || jupQuote.swapMode === "ExactIn")
|
|
145
147
|
? BigInt(parseInt(jupQuote.inAmount))
|
|
146
148
|
: undefined;
|
|
147
149
|
return requiresFlashLoan
|
|
@@ -161,7 +163,8 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
|
|
|
161
163
|
const output = values.increasingLeverage
|
|
162
164
|
? client.solautoPositionState.supply
|
|
163
165
|
: client.solautoPositionState.debt;
|
|
164
|
-
const usdToSwap = Math.abs(values.debtAdjustmentUsd) +
|
|
166
|
+
const usdToSwap = Math.abs(values.debtAdjustmentUsd) +
|
|
167
|
+
(values.dcaTokenType === generated_1.TokenType.Debt ? values.amountUsdToDcaIn : 0);
|
|
165
168
|
const inputPrice = values.increasingLeverage
|
|
166
169
|
? (0, generalUtils_2.safeGetPrice)(client.debtMint)
|
|
167
170
|
: (0, generalUtils_2.safeGetPrice)(client.supplyMint);
|
package/package.json
CHANGED
|
@@ -517,7 +517,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
517
517
|
: undefined,
|
|
518
518
|
rebalanceType,
|
|
519
519
|
targetLiqUtilizationRateBps: targetLiqUtilizationRateBps ?? null,
|
|
520
|
-
targetInAmountBaseUnit: targetLiqUtilizationRateBps
|
|
520
|
+
targetInAmountBaseUnit: targetLiqUtilizationRateBps && rebalanceStep === "A"
|
|
521
521
|
? swapDetails.amount
|
|
522
522
|
: null,
|
|
523
523
|
limitGapBps: limitGapBps ?? null,
|
package/src/utils/solanaUtils.ts
CHANGED
|
@@ -309,7 +309,7 @@ export async function sendSingleOptimizedTransaction(
|
|
|
309
309
|
);
|
|
310
310
|
|
|
311
311
|
const computeUnitLimit = Math.round(
|
|
312
|
-
simulationResult.value.unitsConsumed! * 1.
|
|
312
|
+
simulationResult.value.unitsConsumed! * 1.2
|
|
313
313
|
);
|
|
314
314
|
console.log("Compute unit limit: ", computeUnitLimit);
|
|
315
315
|
}
|
|
@@ -26,9 +26,7 @@ import {
|
|
|
26
26
|
toBaseUnit,
|
|
27
27
|
} from "../numberUtils";
|
|
28
28
|
import { USD_DECIMALS } from "../../constants/generalAccounts";
|
|
29
|
-
import {
|
|
30
|
-
DEFAULT_LIMIT_GAP_BPS,
|
|
31
|
-
} from "../../constants/solautoConstants";
|
|
29
|
+
import { DEFAULT_LIMIT_GAP_BPS } from "../../constants/solautoConstants";
|
|
32
30
|
|
|
33
31
|
function getAdditionalAmountToDcaIn(dca: DCASettings): number {
|
|
34
32
|
if (dca.dcaInBaseUnit === BigInt(0)) {
|
|
@@ -125,7 +123,7 @@ function getTargetRateAndDcaAmount(
|
|
|
125
123
|
dca: DCASettings | undefined,
|
|
126
124
|
currentUnixTime: number,
|
|
127
125
|
targetLiqUtilizationRateBps?: number
|
|
128
|
-
): { targetRateBps: number; amountToDcaIn?: number
|
|
126
|
+
): { targetRateBps: number; amountToDcaIn?: number } {
|
|
129
127
|
if (targetLiqUtilizationRateBps !== undefined) {
|
|
130
128
|
return {
|
|
131
129
|
targetRateBps: targetLiqUtilizationRateBps,
|
|
@@ -238,7 +236,7 @@ export function getRebalanceValues(
|
|
|
238
236
|
debtAdjustmentUsd,
|
|
239
237
|
amountToDcaIn: amountToDcaIn ?? 0,
|
|
240
238
|
amountUsdToDcaIn,
|
|
241
|
-
dcaTokenType: dca?.tokenType
|
|
239
|
+
dcaTokenType: dca?.tokenType,
|
|
242
240
|
};
|
|
243
241
|
}
|
|
244
242
|
|
|
@@ -253,10 +251,12 @@ export function getFlashLoanDetails(
|
|
|
253
251
|
jupQuote: QuoteResponse,
|
|
254
252
|
priceImpactBps: number
|
|
255
253
|
): FlashLoanDetails | undefined {
|
|
256
|
-
let supplyUsd =
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
254
|
+
let supplyUsd =
|
|
255
|
+
fromBaseUnit(
|
|
256
|
+
client.solautoPositionState!.supply.amountUsed.baseAmountUsdValue,
|
|
257
|
+
USD_DECIMALS
|
|
258
|
+
) +
|
|
259
|
+
(values.dcaTokenType === TokenType.Supply ? values.amountUsdToDcaIn : 0);
|
|
260
260
|
let debtUsd = fromBaseUnit(
|
|
261
261
|
client.solautoPositionState!.debt.amountUsed.baseAmountUsdValue,
|
|
262
262
|
USD_DECIMALS
|
|
@@ -299,7 +299,8 @@ export function getFlashLoanDetails(
|
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
const exactAmountBaseUnit =
|
|
302
|
-
jupQuote &&
|
|
302
|
+
jupQuote &&
|
|
303
|
+
(jupQuote.swapMode === "ExactOut" || jupQuote.swapMode === "ExactIn")
|
|
303
304
|
? BigInt(parseInt(jupQuote.inAmount))
|
|
304
305
|
: undefined;
|
|
305
306
|
|
|
@@ -308,9 +309,7 @@ export function getFlashLoanDetails(
|
|
|
308
309
|
baseUnitAmount: exactAmountBaseUnit
|
|
309
310
|
? exactAmountBaseUnit +
|
|
310
311
|
BigInt(
|
|
311
|
-
Math.round(
|
|
312
|
-
Number(exactAmountBaseUnit) * fromBps(priceImpactBps)
|
|
313
|
-
)
|
|
312
|
+
Math.round(Number(exactAmountBaseUnit) * fromBps(priceImpactBps))
|
|
314
313
|
)
|
|
315
314
|
: toBaseUnit(
|
|
316
315
|
debtAdjustmentWithSlippage / flashLoanTokenPrice,
|
|
@@ -335,7 +334,8 @@ export function getJupSwapRebalanceDetails(
|
|
|
335
334
|
: client.solautoPositionState!.debt;
|
|
336
335
|
|
|
337
336
|
const usdToSwap =
|
|
338
|
-
Math.abs(values.debtAdjustmentUsd) +
|
|
337
|
+
Math.abs(values.debtAdjustmentUsd) +
|
|
338
|
+
(values.dcaTokenType === TokenType.Debt ? values.amountUsdToDcaIn : 0);
|
|
339
339
|
|
|
340
340
|
const inputPrice = values.increasingLeverage
|
|
341
341
|
? safeGetPrice(client.debtMint)
|