@haven-fi/solauto-sdk 1.0.510 → 1.0.512
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/constants/solautoConstants.d.ts +1 -0
- package/dist/constants/solautoConstants.d.ts.map +1 -1
- package/dist/constants/solautoConstants.js +10 -1
- package/dist/transactions/transactionUtils.d.ts +2 -1
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +3 -2
- package/dist/transactions/transactionsManager.d.ts.map +1 -1
- package/dist/transactions/transactionsManager.js +1 -0
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +11 -2
- package/dist/utils/priceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.d.ts +1 -0
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +16 -1
- package/package.json +1 -1
- package/src/constants/solautoConstants.ts +11 -1
- package/src/transactions/transactionUtils.ts +7 -3
- package/src/transactions/transactionsManager.ts +1 -0
- package/src/utils/jupiterUtils.ts +17 -3
- package/src/utils/priceUtils.ts +1 -2
- package/src/utils/solauto/rebalanceUtils.ts +24 -2
- package/tests/transactions/solautoMarginfi.ts +28 -2
@@ -15,4 +15,5 @@ export declare const PRICES: {
|
|
15
15
|
export declare const SOLAUTO_LUT = "9D4xwZwDf46n9ft5gQxZzq3rBbdRXsXojKQLZbBdskPY";
|
16
16
|
export declare const STANDARD_LUT_ACCOUNTS: string[];
|
17
17
|
export declare const JITO_BLOCK_ENGINE = "https://mainnet.block-engine.jito.wtf";
|
18
|
+
export declare const BROKEN_TOKENS: string[];
|
18
19
|
//# sourceMappingURL=solautoConstants.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACV,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACV,MAAM,iBAAiB,CAAC;AASzB,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AACF,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AAIF,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,iCAAiC,IAAI,CAAC;AACnD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAO,CAAC;AAE7E,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAC1E,eAAO,MAAM,qBAAqB,UAYR,CAAC;AAE3B,eAAO,MAAM,iBAAiB,0CAA0C,CAAC;AAEzE,eAAO,MAAM,aAAa,UAOzB,CAAA"}
|
@@ -1,10 +1,11 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.JITO_BLOCK_ENGINE = exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.PRICES = exports.MIN_USD_SUPPORTED_POSITION = exports.MIN_BOOST_GAP_BPS = exports.MIN_REPAY_GAP_BPS = exports.MIN_POSITION_STATE_FRESHNESS_SECS = exports.BASIS_POINTS = exports.SOLAUTO_TEST_PROGRAM = exports.SOLAUTO_PROD_PROGRAM = void 0;
|
3
|
+
exports.BROKEN_TOKENS = exports.JITO_BLOCK_ENGINE = exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.PRICES = exports.MIN_USD_SUPPORTED_POSITION = exports.MIN_BOOST_GAP_BPS = exports.MIN_REPAY_GAP_BPS = exports.MIN_POSITION_STATE_FRESHNESS_SECS = exports.BASIS_POINTS = exports.SOLAUTO_TEST_PROGRAM = exports.SOLAUTO_PROD_PROGRAM = void 0;
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
5
5
|
const spl_token_1 = require("@solana/spl-token");
|
6
6
|
const generalAccounts_1 = require("./generalAccounts");
|
7
7
|
const jupiter_sdk_1 = require("../jupiter-sdk");
|
8
|
+
const tokenConstants_1 = require("./tokenConstants");
|
8
9
|
exports.SOLAUTO_PROD_PROGRAM = new web3_js_1.PublicKey("AutoyKBRaHSBHy9RsmXCZMy6nNFAg5FYijrvZyQcNLV");
|
9
10
|
exports.SOLAUTO_TEST_PROGRAM = new web3_js_1.PublicKey("TesTjfQ6TbXv96Tv6fqr95XTZ1LYPxtkafmShN9PjBp");
|
10
11
|
globalThis.LOCAL_TEST = false;
|
@@ -29,3 +30,11 @@ exports.STANDARD_LUT_ACCOUNTS = [
|
|
29
30
|
jupiter_sdk_1.JUPITER_PROGRAM_ID,
|
30
31
|
].map((x) => x.toString());
|
31
32
|
exports.JITO_BLOCK_ENGINE = "https://mainnet.block-engine.jito.wtf";
|
33
|
+
exports.BROKEN_TOKENS = [
|
34
|
+
tokenConstants_1.JUP,
|
35
|
+
tokenConstants_1.JLP,
|
36
|
+
tokenConstants_1.WETH,
|
37
|
+
tokenConstants_1.HNT,
|
38
|
+
tokenConstants_1.JTO,
|
39
|
+
tokenConstants_1.PYTH
|
40
|
+
];
|
@@ -1,11 +1,12 @@
|
|
1
1
|
import { TransactionBuilder, Umi } from "@metaplex-foundation/umi";
|
2
2
|
import { PublicKey } from "@solana/web3.js";
|
3
3
|
import { SolautoClient } from "../clients/solautoClient";
|
4
|
+
import { RebalanceValues } from "../utils/solauto/rebalanceUtils";
|
4
5
|
import { ReferralStateManager } from "../clients";
|
5
6
|
import { TransactionItemInputs } from "../types";
|
6
7
|
export declare function rebalanceChoresBefore(client: SolautoClient, tx: TransactionBuilder, accountsGettingCreated: string[]): Promise<TransactionBuilder>;
|
7
8
|
export declare function getTransactionChores(client: SolautoClient, tx: TransactionBuilder): Promise<[TransactionBuilder, TransactionBuilder]>;
|
8
|
-
export declare function requiresRefreshBeforeRebalance(client: SolautoClient): Promise<boolean>;
|
9
|
+
export declare function requiresRefreshBeforeRebalance(client: SolautoClient, values: RebalanceValues): Promise<boolean>;
|
9
10
|
export declare function buildSolautoRebalanceTransaction(client: SolautoClient, targetLiqUtilizationRateBps?: number, attemptNum?: number): Promise<TransactionItemInputs | undefined>;
|
10
11
|
export declare function convertReferralFeesToDestination(referralManager: ReferralStateManager, tokenAccount: PublicKey, destinationMint: PublicKey): Promise<TransactionItemInputs | undefined>;
|
11
12
|
export declare function getErrorInfo(umi: Umi, txs: TransactionBuilder[], error: Error, simulationSuccessful?: boolean): {
|
@@ -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;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
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;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,OAAO,EAIL,eAAe,EAChB,MAAM,iCAAiC,CAAC;AA0BzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6LjD,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,EAAE,MAAM,EAAE,eAAe,oBAqDlG;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsI5C;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,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EAoG/B"}
|
@@ -329,7 +329,7 @@ async function getTransactionChores(client, tx) {
|
|
329
329
|
choresAfter = choresAfter.add(transactionChoresAfter(client, solautoActions, client.livePositionUpdates.cancellingDca));
|
330
330
|
return [choresBefore, choresAfter];
|
331
331
|
}
|
332
|
-
async function requiresRefreshBeforeRebalance(client) {
|
332
|
+
async function requiresRefreshBeforeRebalance(client, values) {
|
333
333
|
const neverRefreshedBefore = client.solautoPositionData &&
|
334
334
|
client.solautoPositionData.state.supply.amountCanBeUsed.baseUnit ===
|
335
335
|
BigInt(0) &&
|
@@ -377,7 +377,8 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
377
377
|
const { jupQuote, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
|
378
378
|
const flashLoan = (0, rebalanceUtils_1.getFlashLoanDetails)(client, values, jupQuote);
|
379
379
|
let tx = (0, umi_1.transactionBuilder)();
|
380
|
-
|
380
|
+
// REVERT ME
|
381
|
+
if (await requiresRefreshBeforeRebalance(client, values)) {
|
381
382
|
tx = tx.add(client.refresh());
|
382
383
|
}
|
383
384
|
if (flashLoan) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EAEL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAc7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAMjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IARtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAS;gBAG3B,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AA0FD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAU5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAdxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAE3B,kBAAkB,SAAmB;gBAG3B,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAiBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EAEL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAc7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAMjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IARtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAS;gBAG3B,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AA0FD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAU5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAdxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAE3B,kBAAkB,SAAmB;gBAG3B,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAiBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IA2GzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YAkCxB,6BAA6B;YAsI7B,qBAAqB;YAoDrB,eAAe;YA0Df,eAAe;CA4D9B"}
|
@@ -289,6 +289,7 @@ class TransactionsManager {
|
|
289
289
|
.stale;
|
290
290
|
if (stale) {
|
291
291
|
this.txHandler.log("Requires oracle update...");
|
292
|
+
console.log(mint);
|
292
293
|
const swbTx = new TransactionItem(async () => (0, utils_1.buildSwbSubmitResponseTx)(client.connection, client.signer, mint), this.updateOracleTxName);
|
293
294
|
await swbTx.initialize();
|
294
295
|
items.unshift(swbTx);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,
|
1
|
+
{"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAWrB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,0BAoC1D;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CAmF7B;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO;;GA0B5E"}
|
@@ -10,6 +10,7 @@ const numberUtils_1 = require("./numberUtils");
|
|
10
10
|
const api_1 = require("@jup-ag/api");
|
11
11
|
const accountUtils_1 = require("./accountUtils");
|
12
12
|
const generalUtils_1 = require("./generalUtils");
|
13
|
+
const constants_1 = require("../constants");
|
13
14
|
const jupApi = (0, api_1.createJupiterApiClient)();
|
14
15
|
function createTransactionInstruction(instruction) {
|
15
16
|
return new web3_js_1.TransactionInstruction({
|
@@ -25,17 +26,25 @@ function createTransactionInstruction(instruction) {
|
|
25
26
|
async function getJupQuote(swapDetails) {
|
26
27
|
const memecoinSwap = (0, generalUtils_1.tokenInfo)(swapDetails.inputMint).isMeme ||
|
27
28
|
(0, generalUtils_1.tokenInfo)(swapDetails.outputMint).isMeme;
|
29
|
+
const tokensWithLowAccounts = [constants_1.PYTH, constants_1.INF];
|
30
|
+
// TEMP REVERT ME
|
31
|
+
const useLowAccounts = tokensWithLowAccounts.find((x) => swapDetails.inputMint.equals(new web3_js_1.PublicKey(x))) ||
|
32
|
+
tokensWithLowAccounts.find((x) => swapDetails.outputMint.equals(new web3_js_1.PublicKey(x)));
|
28
33
|
return await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await jupApi.quoteGet({
|
29
34
|
amount: Number(swapDetails.amount),
|
30
35
|
inputMint: swapDetails.inputMint.toString(),
|
31
36
|
outputMint: swapDetails.outputMint.toString(),
|
32
|
-
swapMode: swapDetails.
|
37
|
+
swapMode: swapDetails.exactOut
|
33
38
|
? "ExactOut"
|
34
39
|
: swapDetails.exactIn
|
35
40
|
? "ExactIn"
|
36
41
|
: undefined,
|
37
42
|
slippageBps: memecoinSwap ? 500 : 200,
|
38
|
-
maxAccounts: !swapDetails.exactOut
|
43
|
+
maxAccounts: !swapDetails.exactOut
|
44
|
+
? useLowAccounts
|
45
|
+
? 15
|
46
|
+
: 40
|
47
|
+
: undefined,
|
39
48
|
}), 2, 200);
|
40
49
|
}
|
41
50
|
async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
1
|
+
{"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAarE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqC5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAgDnB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,qBAQzD;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,oBAAoB;;;GAc/B"}
|
@@ -13,6 +13,7 @@ export interface RebalanceValues {
|
|
13
13
|
rebalanceAction: RebalanceAction;
|
14
14
|
rebalanceDirection: RebalanceDirection;
|
15
15
|
feesUsd: number;
|
16
|
+
targetRateBps: number;
|
16
17
|
}
|
17
18
|
export declare function getRebalanceValues(state: PositionState, settings: SolautoSettingsParameters | undefined, dca: DCASettings | undefined, currentUnixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number): RebalanceValues;
|
18
19
|
export declare function rebalanceRequiresFlashLoan(client: SolautoClient, values: RebalanceValues): {
|
@@ -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,EAAgB,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,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAe,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAc5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoI9C,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;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;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,CA4EjB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe;;;EAsDxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CAgC9B;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CA6FzB"}
|
@@ -4,6 +4,7 @@ exports.getRebalanceValues = getRebalanceValues;
|
|
4
4
|
exports.rebalanceRequiresFlashLoan = rebalanceRequiresFlashLoan;
|
5
5
|
exports.getFlashLoanDetails = getFlashLoanDetails;
|
6
6
|
exports.getJupSwapRebalanceDetails = getJupSwapRebalanceDetails;
|
7
|
+
const web3_js_1 = require("@solana/web3.js");
|
7
8
|
const generated_1 = require("../../generated");
|
8
9
|
const generalUtils_1 = require("./generalUtils");
|
9
10
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
@@ -12,6 +13,7 @@ const generalUtils_2 = require("../generalUtils");
|
|
12
13
|
const numberUtils_1 = require("../numberUtils");
|
13
14
|
const generalAccounts_1 = require("../../constants/generalAccounts");
|
14
15
|
const priceUtils_1 = require("../priceUtils");
|
16
|
+
const constants_1 = require("../../constants");
|
15
17
|
function getAdditionalAmountToDcaIn(dca) {
|
16
18
|
if (dca.dcaInBaseUnit === BigInt(0)) {
|
17
19
|
return 0;
|
@@ -83,7 +85,18 @@ function getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, target
|
|
83
85
|
}
|
84
86
|
}
|
85
87
|
function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
|
86
|
-
|
88
|
+
let { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, targetLiqUtilizationRateBps);
|
89
|
+
// REVERT ME AND GET TO THE ROOT OF THIS ISSUE
|
90
|
+
const supplyMint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.supply.mint);
|
91
|
+
if (constants_1.BROKEN_TOKENS.includes(supplyMint.toString()) &&
|
92
|
+
((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint).equals(new web3_js_1.PublicKey(constants_1.USDC)) ||
|
93
|
+
(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint).equals(new web3_js_1.PublicKey(constants_1.USDT))) &&
|
94
|
+
settings &&
|
95
|
+
settings.boostToBps ===
|
96
|
+
(0, numberUtils_1.maxBoostToBps)(state.maxLtvBps, state.liqThresholdBps) &&
|
97
|
+
targetRateBps === settings.boostToBps) {
|
98
|
+
targetRateBps = 6500;
|
99
|
+
}
|
87
100
|
const amountUsdToDcaIn = (0, numberUtils_1.fromBaseUnit)(BigInt(Math.round(amountToDcaIn ?? 0)), state.debt.decimals) *
|
88
101
|
(dca?.tokenType === generated_1.TokenType.Debt ? debtPrice : supplyPrice);
|
89
102
|
const rebalanceDirection = amountUsdToDcaIn > 0 || state.liqUtilizationRateBps <= targetRateBps
|
@@ -94,6 +107,7 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
|
|
94
107
|
amountUsdToDcaIn;
|
95
108
|
const debtUsd = (0, numberUtils_1.fromBaseUnit)(state.debt.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
|
96
109
|
let debtAdjustmentUsd = (0, numberUtils_1.getDebtAdjustmentUsd)(state.liqThresholdBps, supplyUsd, debtUsd, targetRateBps, adjustmentFeeBps);
|
110
|
+
(0, generalUtils_2.consoleLog)("Target rate:", targetRateBps, (0, numberUtils_1.maxBoostToBps)(state.maxLtvBps, state.liqThresholdBps));
|
97
111
|
const maxRepayTo = (0, numberUtils_1.maxRepayToBps)(state.maxLtvBps, state.liqThresholdBps);
|
98
112
|
return {
|
99
113
|
debtAdjustmentUsd,
|
@@ -108,6 +122,7 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
|
|
108
122
|
: "repay",
|
109
123
|
rebalanceDirection,
|
110
124
|
feesUsd: Math.abs(debtAdjustmentUsd * (0, numberUtils_1.fromBps)(adjustmentFeeBps)),
|
125
|
+
targetRateBps,
|
111
126
|
};
|
112
127
|
}
|
113
128
|
function rebalanceRequiresFlashLoan(client, values) {
|
package/package.json
CHANGED
@@ -11,6 +11,7 @@ import {
|
|
11
11
|
} from "@solana/spl-token";
|
12
12
|
import { SOLAUTO_MANAGER } from "./generalAccounts";
|
13
13
|
import { JUPITER_PROGRAM_ID } from "../jupiter-sdk";
|
14
|
+
import { HNT, JLP, JTO, JUP, PYTH, WETH } from "./tokenConstants";
|
14
15
|
|
15
16
|
export const SOLAUTO_PROD_PROGRAM = new PublicKey(
|
16
17
|
"AutoyKBRaHSBHy9RsmXCZMy6nNFAg5FYijrvZyQcNLV"
|
@@ -45,4 +46,13 @@ export const STANDARD_LUT_ACCOUNTS = [
|
|
45
46
|
JUPITER_PROGRAM_ID,
|
46
47
|
].map((x) => x.toString());
|
47
48
|
|
48
|
-
export const JITO_BLOCK_ENGINE = "https://mainnet.block-engine.jito.wtf";
|
49
|
+
export const JITO_BLOCK_ENGINE = "https://mainnet.block-engine.jito.wtf";
|
50
|
+
|
51
|
+
export const BROKEN_TOKENS = [
|
52
|
+
JUP,
|
53
|
+
JLP,
|
54
|
+
WETH,
|
55
|
+
HNT,
|
56
|
+
JTO,
|
57
|
+
PYTH
|
58
|
+
]
|
@@ -39,6 +39,7 @@ import {
|
|
39
39
|
getFlashLoanDetails,
|
40
40
|
getJupSwapRebalanceDetails,
|
41
41
|
getRebalanceValues,
|
42
|
+
RebalanceValues,
|
42
43
|
} from "../utils/solauto/rebalanceUtils";
|
43
44
|
import {
|
44
45
|
consoleLog,
|
@@ -71,10 +72,11 @@ import {
|
|
71
72
|
getJupiterErrorFromCode,
|
72
73
|
JUPITER_PROGRAM_ID,
|
73
74
|
} from "../jupiter-sdk";
|
74
|
-
import { PRICES } from "../constants";
|
75
|
+
import { JUP, PRICES, USDC } from "../constants";
|
75
76
|
import { TransactionItemInputs } from "../types";
|
76
77
|
import { safeGetPrice } from "../utils";
|
77
78
|
import { BundleSimulationError } from "../types/transactions";
|
79
|
+
import { getPackedSettings } from "http2";
|
78
80
|
|
79
81
|
interface wSolTokenUsage {
|
80
82
|
wSolTokenAccount: PublicKey;
|
@@ -598,7 +600,7 @@ export async function getTransactionChores(
|
|
598
600
|
return [choresBefore, choresAfter];
|
599
601
|
}
|
600
602
|
|
601
|
-
export async function requiresRefreshBeforeRebalance(client: SolautoClient) {
|
603
|
+
export async function requiresRefreshBeforeRebalance(client: SolautoClient, values: RebalanceValues) {
|
602
604
|
const neverRefreshedBefore =
|
603
605
|
client.solautoPositionData &&
|
604
606
|
client.solautoPositionData.state.supply.amountCanBeUsed.baseUnit ===
|
@@ -703,11 +705,13 @@ export async function buildSolautoRebalanceTransaction(
|
|
703
705
|
tokenLedgerIx,
|
704
706
|
swapIx,
|
705
707
|
} = await getJupSwapTransaction(client.signer, swapDetails, attemptNum);
|
708
|
+
|
706
709
|
const flashLoan = getFlashLoanDetails(client, values, jupQuote);
|
707
710
|
|
708
711
|
let tx = transactionBuilder();
|
709
712
|
|
710
|
-
|
713
|
+
// REVERT ME
|
714
|
+
if (await requiresRefreshBeforeRebalance(client, values)) {
|
711
715
|
tx = tx.add(client.refresh());
|
712
716
|
}
|
713
717
|
|
@@ -465,6 +465,7 @@ export class TransactionsManager {
|
|
465
465
|
|
466
466
|
if (stale) {
|
467
467
|
this.txHandler.log("Requires oracle update...");
|
468
|
+
console.log(mint);
|
468
469
|
const swbTx = new TransactionItem(
|
469
470
|
async () =>
|
470
471
|
buildSwbSubmitResponseTx(client.connection, client.signer, mint),
|
@@ -9,7 +9,6 @@ import { fromBps, toBps } from "./numberUtils";
|
|
9
9
|
import {
|
10
10
|
createJupiterApiClient,
|
11
11
|
Instruction,
|
12
|
-
QuoteGetSwapModeEnum,
|
13
12
|
QuoteResponse,
|
14
13
|
} from "@jup-ag/api";
|
15
14
|
import { getTokenAccount } from "./accountUtils";
|
@@ -18,6 +17,7 @@ import {
|
|
18
17
|
retryWithExponentialBackoff,
|
19
18
|
tokenInfo,
|
20
19
|
} from "./generalUtils";
|
20
|
+
import { INF, PYTH } from "../constants";
|
21
21
|
|
22
22
|
const jupApi = createJupiterApiClient();
|
23
23
|
|
@@ -55,19 +55,33 @@ export async function getJupQuote(swapDetails: JupSwapInput) {
|
|
55
55
|
tokenInfo(swapDetails.inputMint).isMeme ||
|
56
56
|
tokenInfo(swapDetails.outputMint).isMeme;
|
57
57
|
|
58
|
+
const tokensWithLowAccounts = [PYTH, INF];
|
59
|
+
// TEMP REVERT ME
|
60
|
+
const useLowAccounts =
|
61
|
+
tokensWithLowAccounts.find((x) =>
|
62
|
+
swapDetails.inputMint.equals(new PublicKey(x))
|
63
|
+
) ||
|
64
|
+
tokensWithLowAccounts.find((x) =>
|
65
|
+
swapDetails.outputMint.equals(new PublicKey(x))
|
66
|
+
);
|
67
|
+
|
58
68
|
return await retryWithExponentialBackoff(
|
59
69
|
async () =>
|
60
70
|
await jupApi.quoteGet({
|
61
71
|
amount: Number(swapDetails.amount),
|
62
72
|
inputMint: swapDetails.inputMint.toString(),
|
63
73
|
outputMint: swapDetails.outputMint.toString(),
|
64
|
-
swapMode: swapDetails.
|
74
|
+
swapMode: swapDetails.exactOut
|
65
75
|
? "ExactOut"
|
66
76
|
: swapDetails.exactIn
|
67
77
|
? "ExactIn"
|
68
78
|
: undefined,
|
69
79
|
slippageBps: memecoinSwap ? 500 : 200,
|
70
|
-
maxAccounts: !swapDetails.exactOut
|
80
|
+
maxAccounts: !swapDetails.exactOut
|
81
|
+
? useLowAccounts
|
82
|
+
? 15
|
83
|
+
: 40
|
84
|
+
: undefined,
|
71
85
|
}),
|
72
86
|
2,
|
73
87
|
200
|
package/src/utils/priceUtils.ts
CHANGED
@@ -8,12 +8,11 @@ import {
|
|
8
8
|
consoleLog,
|
9
9
|
currentUnixSeconds,
|
10
10
|
retryWithExponentialBackoff,
|
11
|
-
tokenInfo,
|
12
11
|
zip,
|
13
12
|
} from "./generalUtils";
|
14
13
|
import * as OnDemand from "@switchboard-xyz/on-demand";
|
15
14
|
import { getJupPriceData, getJupQuote } from "./jupiterUtils";
|
16
|
-
import {
|
15
|
+
import { QuoteGetSwapModeEnum } from "@jup-ag/api";
|
17
16
|
|
18
17
|
export async function fetchTokenPrices(mints: PublicKey[]): Promise<number[]> {
|
19
18
|
const currentTime = currentUnixSeconds();
|
@@ -24,13 +24,14 @@ import {
|
|
24
24
|
getLiqUtilzationRateBps,
|
25
25
|
getMaxLiqUtilizationRateBps,
|
26
26
|
getSolautoFeesBps,
|
27
|
+
maxBoostToBps,
|
27
28
|
maxRepayToBps,
|
28
29
|
toBaseUnit,
|
29
30
|
} from "../numberUtils";
|
30
31
|
import { USD_DECIMALS } from "../../constants/generalAccounts";
|
31
32
|
import { RebalanceAction } from "../../types";
|
32
33
|
import { getPriceImpact, safeGetPrice } from "../priceUtils";
|
33
|
-
import {
|
34
|
+
import { BROKEN_TOKENS, USDC, USDT } from "../../constants";
|
34
35
|
|
35
36
|
function getAdditionalAmountToDcaIn(dca: DCASettings): number {
|
36
37
|
if (dca.dcaInBaseUnit === BigInt(0)) {
|
@@ -169,6 +170,7 @@ export interface RebalanceValues {
|
|
169
170
|
rebalanceAction: RebalanceAction;
|
170
171
|
rebalanceDirection: RebalanceDirection;
|
171
172
|
feesUsd: number;
|
173
|
+
targetRateBps: number;
|
172
174
|
}
|
173
175
|
|
174
176
|
export function getRebalanceValues(
|
@@ -180,7 +182,7 @@ export function getRebalanceValues(
|
|
180
182
|
debtPrice: number,
|
181
183
|
targetLiqUtilizationRateBps?: number
|
182
184
|
): RebalanceValues {
|
183
|
-
|
185
|
+
let { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(
|
184
186
|
state,
|
185
187
|
settings,
|
186
188
|
dca,
|
@@ -188,6 +190,20 @@ export function getRebalanceValues(
|
|
188
190
|
targetLiqUtilizationRateBps
|
189
191
|
);
|
190
192
|
|
193
|
+
// REVERT ME AND GET TO THE ROOT OF THIS ISSUE
|
194
|
+
const supplyMint = toWeb3JsPublicKey(state.supply.mint);
|
195
|
+
if (
|
196
|
+
BROKEN_TOKENS.includes(supplyMint.toString()) &&
|
197
|
+
(toWeb3JsPublicKey(state.debt.mint).equals(new PublicKey(USDC)) ||
|
198
|
+
toWeb3JsPublicKey(state.debt.mint).equals(new PublicKey(USDT))) &&
|
199
|
+
settings &&
|
200
|
+
settings.boostToBps ===
|
201
|
+
maxBoostToBps(state.maxLtvBps, state.liqThresholdBps) &&
|
202
|
+
targetRateBps === settings.boostToBps
|
203
|
+
) {
|
204
|
+
targetRateBps = 6500;
|
205
|
+
}
|
206
|
+
|
191
207
|
const amountUsdToDcaIn =
|
192
208
|
fromBaseUnit(BigInt(Math.round(amountToDcaIn ?? 0)), state.debt.decimals) *
|
193
209
|
(dca?.tokenType === TokenType.Debt ? debtPrice : supplyPrice);
|
@@ -218,6 +234,11 @@ export function getRebalanceValues(
|
|
218
234
|
adjustmentFeeBps
|
219
235
|
);
|
220
236
|
|
237
|
+
consoleLog(
|
238
|
+
"Target rate:",
|
239
|
+
targetRateBps,
|
240
|
+
maxBoostToBps(state.maxLtvBps, state.liqThresholdBps)
|
241
|
+
);
|
221
242
|
const maxRepayTo = maxRepayToBps(state.maxLtvBps, state.liqThresholdBps);
|
222
243
|
return {
|
223
244
|
debtAdjustmentUsd,
|
@@ -234,6 +255,7 @@ export function getRebalanceValues(
|
|
234
255
|
: "repay",
|
235
256
|
rebalanceDirection,
|
236
257
|
feesUsd: Math.abs(debtAdjustmentUsd * fromBps(adjustmentFeeBps)),
|
258
|
+
targetRateBps,
|
237
259
|
};
|
238
260
|
}
|
239
261
|
|
@@ -3,12 +3,16 @@ 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
|
+
PositionType,
|
6
7
|
safeFetchSolautoPosition,
|
7
8
|
solautoAction,
|
8
9
|
SolautoSettingsParametersInpArgs,
|
9
10
|
} from "../../src/generated";
|
10
11
|
import { buildSolautoRebalanceTransaction } from "../../src/transactions/transactionUtils";
|
11
12
|
import {
|
13
|
+
bytesToI80F48,
|
14
|
+
getLiqUtilzationRateBps,
|
15
|
+
getMaxLiqUtilizationRateBps,
|
12
16
|
maxBoostToBps,
|
13
17
|
maxRepayFromBps,
|
14
18
|
maxRepayToBps,
|
@@ -21,14 +25,20 @@ import {
|
|
21
25
|
} from "../../src/transactions/transactionsManager";
|
22
26
|
import { PublicKey } from "@solana/web3.js";
|
23
27
|
import {
|
28
|
+
DEFAULT_MARGINFI_GROUP,
|
29
|
+
MARGINFI_ACCOUNTS,
|
24
30
|
SOLAUTO_PROD_PROGRAM,
|
25
31
|
SOLAUTO_TEST_PROGRAM,
|
26
32
|
USDC,
|
33
|
+
USDT,
|
27
34
|
} from "../../src/constants";
|
28
35
|
import {
|
29
36
|
buildHeliusApiUrl,
|
37
|
+
getAllPositionsByAuthority,
|
30
38
|
getQnComputeUnitPriceEstimate,
|
31
39
|
getSolautoManagedPositions,
|
40
|
+
getSolautoPositionAccount,
|
41
|
+
retryWithExponentialBackoff,
|
32
42
|
} from "../../src/utils";
|
33
43
|
import { PriorityFeeSetting } from "../../src/types";
|
34
44
|
import { buildIronforgeApiUrl } from "../../dist";
|
@@ -56,7 +66,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
56
66
|
await client.initialize({
|
57
67
|
signer,
|
58
68
|
positionId,
|
59
|
-
authority: new PublicKey("
|
69
|
+
authority: new PublicKey("7F6v4HWZsyFP6yVFq92HQWygUgoYm5khUX8pXWGLoqUN"),
|
60
70
|
// new: true,
|
61
71
|
// marginfiAccount: new PublicKey(
|
62
72
|
// ""
|
@@ -94,6 +104,15 @@ describe("Solauto Marginfi tests", async () => {
|
|
94
104
|
// targetBoostToBps: none(),
|
95
105
|
// };
|
96
106
|
|
107
|
+
const settingParams: SolautoSettingsParametersInpArgs = {
|
108
|
+
boostToBps: client.solautoPositionSettings().boostToBps - 150,
|
109
|
+
boostGap: 50,
|
110
|
+
repayToBps: client.solautoPositionSettings().repayToBps - 150,
|
111
|
+
repayGap: 50,
|
112
|
+
automation: none(),
|
113
|
+
targetBoostToBps: none(),
|
114
|
+
};
|
115
|
+
|
97
116
|
// if (client.solautoPositionData === null) {
|
98
117
|
// transactionItems.push(
|
99
118
|
// new TransactionItem(async () => {
|
@@ -144,10 +163,17 @@ describe("Solauto Marginfi tests", async () => {
|
|
144
163
|
)
|
145
164
|
);
|
146
165
|
|
166
|
+
// transactionItems.push(
|
167
|
+
// new TransactionItem(
|
168
|
+
// async () => ({ tx: client.refresh() }),
|
169
|
+
// "refresh"
|
170
|
+
// )
|
171
|
+
// );
|
172
|
+
|
147
173
|
// transactionItems.push(
|
148
174
|
// new TransactionItem(
|
149
175
|
// async (attemptNum) =>
|
150
|
-
// await buildSolautoRebalanceTransaction(client,
|
176
|
+
// await buildSolautoRebalanceTransaction(client, 0, attemptNum),
|
151
177
|
// "rebalance"
|
152
178
|
// )
|
153
179
|
// );
|