@haven-fi/solauto-sdk 1.0.624 → 1.0.625
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/{generalAccounts.d.ts → generalConstants.d.ts} +3 -1
- package/dist/constants/generalConstants.d.ts.map +1 -0
- package/dist/constants/{generalAccounts.js → generalConstants.js} +4 -1
- package/dist/constants/index.d.ts +6 -5
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +2 -1
- package/dist/constants/marginfiAccounts.d.ts +4 -1
- package/dist/constants/marginfiAccounts.d.ts.map +1 -1
- package/dist/constants/marginfiAccounts.js +7 -5
- package/dist/constants/solautoConstants.d.ts +0 -3
- package/dist/constants/solautoConstants.d.ts.map +1 -1
- package/dist/constants/solautoConstants.js +3 -8
- package/dist/services/flashLoans/flProviderAggregator.d.ts +3 -3
- package/dist/services/flashLoans/flProviderAggregator.d.ts.map +1 -1
- package/dist/services/flashLoans/flProviderAggregator.js +5 -5
- package/dist/services/flashLoans/flProviderBase.d.ts +4 -3
- package/dist/services/flashLoans/flProviderBase.d.ts.map +1 -1
- package/dist/services/flashLoans/flProviderBase.js +3 -2
- package/dist/services/flashLoans/marginfiFlProvider.d.ts +2 -2
- package/dist/services/flashLoans/marginfiFlProvider.d.ts.map +1 -1
- package/dist/services/flashLoans/marginfiFlProvider.js +2 -3
- package/dist/services/rebalance/rebalanceSwapManager.d.ts.map +1 -1
- package/dist/services/rebalance/rebalanceSwapManager.js +1 -1
- package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -1
- package/dist/services/rebalance/rebalanceTxBuilder.js +4 -4
- package/dist/services/rebalance/rebalanceValues.d.ts.map +1 -1
- package/dist/services/rebalance/solautoFees.d.ts.map +1 -1
- package/dist/services/rebalance/solautoFees.js +4 -2
- package/dist/services/solauto/solautoClient.d.ts +4 -3
- package/dist/services/solauto/solautoClient.d.ts.map +1 -1
- package/dist/services/solauto/solautoClient.js +21 -24
- package/dist/services/solauto/solautoMarginfiClient.d.ts +3 -4
- package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/services/solauto/solautoMarginfiClient.js +19 -20
- package/dist/services/solauto/txHandler.d.ts +4 -2
- package/dist/services/solauto/txHandler.d.ts.map +1 -1
- package/dist/services/solauto/txHandler.js +4 -6
- package/dist/services/swap/jupSwapManager.d.ts +1 -1
- package/dist/services/swap/jupSwapManager.d.ts.map +1 -1
- package/dist/services/swap/jupSwapManager.js +7 -10
- package/dist/services/transactions/transactionUtils.d.ts +2 -3
- package/dist/services/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/services/transactions/transactionUtils.js +43 -46
- package/dist/services/transactions/transactionsManager.d.ts +2 -3
- package/dist/services/transactions/transactionsManager.d.ts.map +1 -1
- package/dist/services/transactions/transactionsManager.js +16 -20
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.js +1 -1
- package/dist/solautoPosition/solautoPositionEx.d.ts +1 -1
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/solautoPositionEx.js +1 -1
- package/dist/solautoPosition/utils.d.ts +2 -2
- package/dist/solautoPosition/utils.d.ts.map +1 -1
- package/dist/solautoPosition/utils.js +2 -2
- package/dist/types/solauto.d.ts +1 -0
- package/dist/types/solauto.d.ts.map +1 -1
- package/dist/utils/generalUtils.d.ts +2 -0
- package/dist/utils/generalUtils.d.ts.map +1 -1
- package/dist/utils/generalUtils.js +9 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/jitoUtils.d.ts.map +1 -1
- package/dist/utils/jitoUtils.js +7 -8
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.d.ts +7 -3
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +50 -19
- package/dist/utils/numberUtils.d.ts.map +1 -1
- package/dist/utils/priceUtils.d.ts.map +1 -1
- package/dist/utils/priceUtils.js +13 -15
- package/dist/utils/solanaUtils.d.ts +3 -5
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +7 -15
- package/dist/utils/solautoUtils.d.ts +3 -3
- package/dist/utils/solautoUtils.d.ts.map +1 -1
- package/dist/utils/solautoUtils.js +5 -5
- package/dist/utils/stringUtils.d.ts.map +1 -1
- package/dist/utils/stringUtils.js +3 -3
- package/dist/utils/switchboardUtils.d.ts +1 -1
- package/dist/utils/switchboardUtils.d.ts.map +1 -1
- package/dist/utils/switchboardUtils.js +4 -4
- package/local/createISMAccounts.ts +29 -12
- package/local/createTokenAccounts.ts +12 -11
- package/local/logPositions.ts +5 -5
- package/local/shared.ts +16 -10
- package/local/txSandbox.ts +5 -5
- package/local/updateMarginfiLUT.ts +35 -41
- package/local/updateSolautoLUT.ts +11 -13
- package/package.json +1 -1
- package/src/constants/{generalAccounts.ts → generalConstants.ts} +6 -1
- package/src/constants/index.ts +6 -5
- package/src/constants/marginfiAccounts.ts +15 -6
- package/src/constants/solautoConstants.ts +2 -10
- package/src/services/flashLoans/flProviderAggregator.ts +9 -7
- package/src/services/flashLoans/flProviderBase.ts +5 -4
- package/src/services/flashLoans/marginfiFlProvider.ts +3 -4
- package/src/services/rebalance/rebalanceSwapManager.ts +1 -1
- package/src/services/rebalance/rebalanceTxBuilder.ts +5 -5
- package/src/services/rebalance/rebalanceValues.ts +1 -1
- package/src/services/rebalance/solautoFees.ts +3 -4
- package/src/services/solauto/solautoClient.ts +9 -15
- package/src/services/solauto/solautoMarginfiClient.ts +21 -23
- package/src/services/solauto/txHandler.ts +10 -9
- package/src/services/swap/jupSwapManager.ts +7 -6
- package/src/services/transactions/transactionUtils.ts +17 -18
- package/src/services/transactions/transactionsManager.ts +23 -22
- package/src/solautoPosition/marginfiSolautoPositionEx.ts +1 -2
- package/src/solautoPosition/solautoPositionEx.ts +5 -5
- package/src/solautoPosition/utils.ts +7 -7
- package/src/types/solauto.ts +2 -0
- package/src/utils/generalUtils.ts +9 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/jitoUtils.ts +17 -14
- package/src/utils/jupiterUtils.ts +1 -1
- package/src/utils/marginfiUtils.ts +56 -14
- package/src/utils/numberUtils.ts +0 -1
- package/src/utils/priceUtils.ts +7 -5
- package/src/utils/solanaUtils.ts +24 -32
- package/src/utils/solautoUtils.ts +13 -13
- package/src/utils/stringUtils.ts +3 -3
- package/src/utils/switchboardUtils.ts +4 -4
- package/tests/transactions/shared.ts +9 -14
- package/tests/transactions/solautoMarginfi.ts +13 -3
- package/tests/unit/accounts.ts +14 -17
- package/tests/unit/lookupTables.ts +5 -5
- package/tests/unit/rebalanceCalculations.ts +17 -11
- package/README.md +0 -3
- package/dist/constants/generalAccounts.d.ts.map +0 -1
- package/src/constants/README.md +0 -7
@@ -1,23 +1,21 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
|
-
import { getTokenAccounts } from "../src/utils/accountUtils";
|
3
2
|
import {
|
4
3
|
SOLAUTO_FEES_WALLET,
|
5
4
|
SOLAUTO_MANAGER,
|
6
|
-
} from "../src/constants/generalAccounts";
|
7
|
-
import { ALL_SUPPORTED_TOKENS } from "../src/constants/tokenConstants";
|
8
|
-
import { updateLookupTable } from "./shared";
|
9
|
-
import {
|
10
5
|
SOLAUTO_LUT,
|
11
6
|
STANDARD_LUT_ACCOUNTS,
|
12
|
-
|
13
|
-
|
14
|
-
buildHeliusApiUrl,
|
7
|
+
SWITCHBOARD_PRICE_FEED_IDS,
|
8
|
+
ALL_SUPPORTED_TOKENS,
|
15
9
|
getAllMarginfiAccountsByAuthority,
|
16
10
|
getSolanaRpcConnection,
|
17
|
-
|
18
|
-
|
11
|
+
getTokenAccounts,
|
12
|
+
LOCAL_IRONFORGE_API_URL,
|
13
|
+
} from "../src";
|
14
|
+
import { updateLookupTable } from "./shared";
|
19
15
|
|
20
|
-
const LOOKUP_TABLE_ADDRESS = Boolean(SOLAUTO_LUT)
|
16
|
+
const LOOKUP_TABLE_ADDRESS = Boolean(SOLAUTO_LUT)
|
17
|
+
? new PublicKey(SOLAUTO_LUT)
|
18
|
+
: undefined;
|
21
19
|
const solautoManagerTokenAccounts = getTokenAccounts(
|
22
20
|
SOLAUTO_MANAGER,
|
23
21
|
ALL_SUPPORTED_TOKENS.map((x) => new PublicKey(x))
|
@@ -29,7 +27,7 @@ const solautoFeeWalletTokenAccounts = getTokenAccounts(
|
|
29
27
|
|
30
28
|
export async function updateSolautoLut(additionalAccounts?: string[]) {
|
31
29
|
const [_, umi] = getSolanaRpcConnection(
|
32
|
-
|
30
|
+
LOCAL_IRONFORGE_API_URL
|
33
31
|
);
|
34
32
|
const ismAccounts = await getAllMarginfiAccountsByAuthority(
|
35
33
|
umi,
|
@@ -43,7 +41,7 @@ export async function updateSolautoLut(additionalAccounts?: string[]) {
|
|
43
41
|
...solautoManagerTokenAccounts.map((x) => x.toString()),
|
44
42
|
...solautoFeeWalletTokenAccounts.map((x) => x.toString()),
|
45
43
|
...ismAccounts.map((x) => x.marginfiAccount.toString()),
|
46
|
-
...Object.values(SWITCHBOARD_PRICE_FEED_IDS).map(x => x.feedId),
|
44
|
+
...Object.values(SWITCHBOARD_PRICE_FEED_IDS).map((x) => x.feedId),
|
47
45
|
...(additionalAccounts ?? []),
|
48
46
|
],
|
49
47
|
LOOKUP_TABLE_ADDRESS
|
package/package.json
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
|
+
import { buildIronforgeApiUrl } from "../utils";
|
2
3
|
|
3
4
|
export const USD_DECIMALS = 9;
|
4
5
|
export const SOLAUTO_FEES_WALLET = new PublicKey("AprYCPiVeKMCgjQ2ZufwChMzvQ5kFjJo2ekTLSkXsQDm");
|
5
|
-
export const SOLAUTO_MANAGER = new PublicKey("MNGRcX4nc7quPdzBbNKJ4ScK5EE73JnwJVGxuJXhHCY");
|
6
|
+
export const SOLAUTO_MANAGER = new PublicKey("MNGRcX4nc7quPdzBbNKJ4ScK5EE73JnwJVGxuJXhHCY");
|
7
|
+
|
8
|
+
export const LOCAL_IRONFORGE_API_URL = buildIronforgeApiUrl(process.env.IRONFORGE_API_KEY!);
|
9
|
+
|
10
|
+
export const BASIS_POINTS = 10000;
|
package/src/constants/index.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
export * from
|
2
|
-
export * from
|
3
|
-
export * from
|
4
|
-
export * from
|
5
|
-
export * from
|
1
|
+
export * from "./generalConstants";
|
2
|
+
export * from "./marginfiAccounts";
|
3
|
+
export * from "./pythConstants";
|
4
|
+
export * from "./solautoConstants";
|
5
|
+
export * from "./switchboardConstants";
|
6
|
+
export * from "./tokenConstants";
|
@@ -1,14 +1,19 @@
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
1
2
|
import { NATIVE_MINT } from "@solana/spl-token";
|
2
3
|
import * as tokens from "./tokenConstants";
|
3
4
|
import { MarginfiAssetAccounts } from "../types/accounts";
|
4
|
-
import { PublicKey } from "@solana/web3.js";
|
5
5
|
import { SWITCHBOARD_PRICE_FEED_IDS } from "./switchboardConstants";
|
6
6
|
|
7
|
+
export const MARGINFI_PROD_PROGRAM = new PublicKey(
|
8
|
+
"MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA"
|
9
|
+
);
|
10
|
+
export const MARGINFI_STAGING_PROGRAM = new PublicKey(
|
11
|
+
"stag8sTKds2h4KzjUw3zKTsxbqvT4XKHdaR9X9E6Rct"
|
12
|
+
);
|
13
|
+
|
7
14
|
export const DEFAULT_MARGINFI_GROUP =
|
8
15
|
"4qp6Fx6tnZkY5Wropq9wUYgtFxXKwE6viZxFHg3rdAG8";
|
9
16
|
|
10
|
-
export const DEFAULT_PUBKEY = PublicKey.default.toString();
|
11
|
-
|
12
17
|
const USDC_PRICE_ORACLE = "Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX";
|
13
18
|
|
14
19
|
export const MARGINFI_ACCOUNTS: {
|
@@ -149,7 +154,8 @@ export const MARGINFI_ACCOUNTS: {
|
|
149
154
|
bank: "3J5rKmCi7JXG6qmiobFJyAidVTnnNAMGj4jomfBxKGRM",
|
150
155
|
liquidityVault: "863K9YPVT3xbUGFZevrQJLqMux3UdRkwNQ6usAp4hJyy",
|
151
156
|
vaultAuthority: "Qsv2rnNRdv59AwRU3YmGPMCTdKT41CDAKyYAr4srCJR",
|
152
|
-
priceOracle:
|
157
|
+
priceOracle:
|
158
|
+
SWITCHBOARD_PRICE_FEED_IDS[tokens.RETARDIO.toString()].feedId,
|
153
159
|
},
|
154
160
|
[tokens.USDC]: {
|
155
161
|
bank: "6cgYhBFWCc5sNHxkvSRhd5H9AdAHR41zKwuF37HmLry5",
|
@@ -184,9 +190,12 @@ export const MARGINFI_ACCOUNTS: {
|
|
184
190
|
liquidityVault: "4U1UBjXrPrW7JuQ894JbLUBqcb5LFfK9rfkWFwT7EdQ9",
|
185
191
|
vaultAuthority: "CY74V1r48kuuHA6APD3AaU2oPV1mBqe9srikrQQSHNR6",
|
186
192
|
priceOracle: USDC_PRICE_ORACLE,
|
187
|
-
}
|
188
|
-
}
|
193
|
+
},
|
194
|
+
},
|
189
195
|
};
|
190
196
|
|
191
197
|
export const MARGINFI_ACCOUNTS_LOOKUP_TABLE =
|
192
198
|
"GAjmWmBPcH5Gxbiykasydj6RsCEaCLyHEvK6kHdFigc6";
|
199
|
+
|
200
|
+
export const MARGINFI_STAGING_ACCOUNTS_LOOKUP_TABLE =
|
201
|
+
"EoEVYjz3MnsX6fKyxrwJkRhzMCHKjj6dvnjTCHoZLMc7";
|
@@ -9,9 +9,8 @@ import {
|
|
9
9
|
ASSOCIATED_TOKEN_PROGRAM_ID,
|
10
10
|
TOKEN_PROGRAM_ID,
|
11
11
|
} from "@solana/spl-token";
|
12
|
-
import { SOLAUTO_MANAGER } from "./
|
12
|
+
import { SOLAUTO_MANAGER } from "./generalConstants";
|
13
13
|
import { JUPITER_PROGRAM_ID } from "../jupiter-sdk";
|
14
|
-
import { HNT, JLP, JTO, JUP, PYTH, WETH } from "./tokenConstants";
|
15
14
|
|
16
15
|
export const SOLAUTO_PROD_PROGRAM = new PublicKey(
|
17
16
|
"AutoyKBRaHSBHy9RsmXCZMy6nNFAg5FYijrvZyQcNLV"
|
@@ -22,8 +21,6 @@ export const SOLAUTO_TEST_PROGRAM = new PublicKey(
|
|
22
21
|
|
23
22
|
(globalThis as any).SHOW_LOGS = false;
|
24
23
|
|
25
|
-
export const BASIS_POINTS = 10000;
|
26
|
-
|
27
24
|
export const MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
28
25
|
export const MIN_REPAY_GAP_BPS = 50;
|
29
26
|
export const MIN_BOOST_GAP_BPS = 50;
|
@@ -33,8 +30,6 @@ export const REFERRER_PERCENTAGE = 0.15;
|
|
33
30
|
|
34
31
|
export const PRICES: { [key: string]: { price: number; time: number } } = {};
|
35
32
|
|
36
|
-
export const JITO_BLOCK_ENGINE = "https://mainnet.block-engine.jito.wtf";
|
37
|
-
|
38
33
|
export const JITO_TIP_ACCOUNTS = [
|
39
34
|
"96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5",
|
40
35
|
"HFqU5x63VTqvQss8hp11i4wVV8bD44PvwucfZ2bU7gRe",
|
@@ -59,7 +54,4 @@ export const STANDARD_LUT_ACCOUNTS = [
|
|
59
54
|
SYSVAR_RENT_PUBKEY,
|
60
55
|
SYSVAR_INSTRUCTIONS_PUBKEY,
|
61
56
|
JUPITER_PROGRAM_ID,
|
62
|
-
].map((x) => x.toString());
|
63
|
-
|
64
|
-
// TODO:
|
65
|
-
export const BROKEN_TOKENS = [JUP, JLP, WETH, HNT, JTO, PYTH];
|
57
|
+
].map((x) => x.toString());
|
@@ -1,10 +1,10 @@
|
|
1
|
-
import { FlProviderBase } from "./flProviderBase";
|
2
1
|
import { PublicKey } from "@solana/web3.js";
|
3
|
-
import { FlashLoanDetails, FlashLoanRequirements } from "../../types";
|
4
2
|
import { Signer, TransactionBuilder, Umi } from "@metaplex-foundation/umi";
|
3
|
+
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
4
|
+
import { FlProviderBase } from "./flProviderBase";
|
5
|
+
import { FlashLoanDetails, ProgramEnv } from "../../types";
|
5
6
|
import { TokenType } from "../../generated";
|
6
7
|
import { MarginfiFlProvider } from "./marginfiFlProvider";
|
7
|
-
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
8
8
|
|
9
9
|
export class FlProviderAggregator extends FlProviderBase {
|
10
10
|
private marginfiFlProvider!: MarginfiFlProvider;
|
@@ -14,15 +14,17 @@ export class FlProviderAggregator extends FlProviderBase {
|
|
14
14
|
signer: Signer,
|
15
15
|
authority: PublicKey,
|
16
16
|
supplyMint: PublicKey,
|
17
|
-
debtMint: PublicKey
|
17
|
+
debtMint: PublicKey,
|
18
|
+
programEnv?: ProgramEnv
|
18
19
|
) {
|
19
|
-
super(umi, signer, authority, supplyMint, debtMint);
|
20
|
+
super(umi, signer, authority, supplyMint, debtMint, programEnv);
|
20
21
|
this.marginfiFlProvider = new MarginfiFlProvider(
|
21
22
|
umi,
|
22
23
|
signer,
|
23
24
|
authority,
|
24
25
|
supplyMint,
|
25
|
-
debtMint
|
26
|
+
debtMint,
|
27
|
+
programEnv
|
26
28
|
);
|
27
29
|
}
|
28
30
|
|
@@ -60,7 +62,7 @@ export class FlProviderAggregator extends FlProviderBase {
|
|
60
62
|
}
|
61
63
|
|
62
64
|
flFeeBps(source: TokenType, signerFlashLoan?: boolean): number {
|
63
|
-
return this.flProvider(source).flFeeBps(source);
|
65
|
+
return this.flProvider(source).flFeeBps(source, signerFlashLoan);
|
64
66
|
}
|
65
67
|
|
66
68
|
flashBorrow(
|
@@ -1,10 +1,11 @@
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
1
2
|
import {
|
2
3
|
Signer,
|
3
4
|
transactionBuilder,
|
4
5
|
TransactionBuilder,
|
5
6
|
Umi,
|
6
7
|
} from "@metaplex-foundation/umi";
|
7
|
-
import {
|
8
|
+
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
8
9
|
import {
|
9
10
|
fromBaseUnit,
|
10
11
|
getTokenAccount,
|
@@ -13,8 +14,7 @@ import {
|
|
13
14
|
tokenInfo,
|
14
15
|
} from "../../utils";
|
15
16
|
import { TokenType } from "../../generated";
|
16
|
-
import { FlashLoanDetails } from "../../types";
|
17
|
-
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
17
|
+
import { FlashLoanDetails, ProgramEnv } from "../../types";
|
18
18
|
|
19
19
|
export abstract class FlProviderBase {
|
20
20
|
protected flSigners: Signer[] = [];
|
@@ -24,7 +24,8 @@ export abstract class FlProviderBase {
|
|
24
24
|
protected signer: Signer,
|
25
25
|
protected authority: PublicKey,
|
26
26
|
protected supplyMint: PublicKey,
|
27
|
-
protected debtMint: PublicKey
|
27
|
+
protected debtMint: PublicKey,
|
28
|
+
protected programEnv: ProgramEnv = "Prod"
|
28
29
|
) {}
|
29
30
|
|
30
31
|
abstract initialize(): Promise<void>;
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { PublicKey, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
|
1
2
|
import {
|
2
3
|
AccountMeta,
|
3
4
|
createSignerFromKeypair,
|
@@ -6,6 +7,7 @@ import {
|
|
6
7
|
transactionBuilder,
|
7
8
|
TransactionBuilder,
|
8
9
|
} from "@metaplex-foundation/umi";
|
10
|
+
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
9
11
|
import { MARGINFI_ACCOUNTS } from "../../constants";
|
10
12
|
import {
|
11
13
|
Bank,
|
@@ -19,7 +21,6 @@ import {
|
|
19
21
|
safeFetchAllBank,
|
20
22
|
} from "../../marginfi-sdk";
|
21
23
|
import { FlProviderBase } from "./flProviderBase";
|
22
|
-
import { PublicKey, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
|
23
24
|
import {
|
24
25
|
bytesToI80F48,
|
25
26
|
consoleLog,
|
@@ -34,9 +35,8 @@ import {
|
|
34
35
|
toBps,
|
35
36
|
tokenInfo,
|
36
37
|
} from "../../utils";
|
37
|
-
import { TokenType } from "../../generated";
|
38
|
-
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
39
38
|
import { FlashLoanDetails } from "../../types";
|
39
|
+
import { TokenType } from "../../generated";
|
40
40
|
|
41
41
|
interface IMFIAccount {
|
42
42
|
signer?: Signer;
|
@@ -116,7 +116,6 @@ export class MarginfiFlProvider extends FlProviderBase {
|
|
116
116
|
(x) => x.group.toString() == this.liquidityBank(sources[0]).group
|
117
117
|
);
|
118
118
|
|
119
|
-
// TODO: instead of picking first compatibleMarginfiAccoutn, pick one where we already have it in the marginfi Lut
|
120
119
|
const signer =
|
121
120
|
compatibleMarginfiAccounts.length > 0
|
122
121
|
? undefined
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { QuoteResponse } from "@jup-ag/api";
|
2
|
+
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
2
3
|
import { FlashLoanRequirements } from "../../types";
|
3
4
|
import { SolautoClient } from "../solauto";
|
4
5
|
import { JupSwapManager, SwapParams, SwapInput } from "../swap";
|
@@ -13,7 +14,6 @@ import {
|
|
13
14
|
toBaseUnit,
|
14
15
|
tokenInfo,
|
15
16
|
} from "../../utils";
|
16
|
-
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
17
17
|
|
18
18
|
export class RebalanceSwapManager {
|
19
19
|
public swapParams!: SwapParams;
|
@@ -1,3 +1,6 @@
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
2
|
+
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
3
|
+
import { transactionBuilder } from "@metaplex-foundation/umi";
|
1
4
|
import { SolautoClient } from "../solauto";
|
2
5
|
import {
|
3
6
|
FlashLoanRequirements,
|
@@ -14,8 +17,6 @@ import {
|
|
14
17
|
safeGetPrice,
|
15
18
|
tokenInfo,
|
16
19
|
} from "../../utils";
|
17
|
-
import { getRebalanceValues, RebalanceValues } from "./rebalanceValues";
|
18
|
-
import { SolautoFeesBps } from "./solautoFees";
|
19
20
|
import {
|
20
21
|
PositionTokenState,
|
21
22
|
RebalanceDirection,
|
@@ -25,10 +26,9 @@ import {
|
|
25
26
|
TokenBalanceChangeType,
|
26
27
|
TokenType,
|
27
28
|
} from "../../generated";
|
28
|
-
import {
|
29
|
+
import { getRebalanceValues, RebalanceValues } from "./rebalanceValues";
|
30
|
+
import { SolautoFeesBps } from "./solautoFees";
|
29
31
|
import { RebalanceSwapManager } from "./rebalanceSwapManager";
|
30
|
-
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
31
|
-
import { transactionBuilder } from "@metaplex-foundation/umi";
|
32
32
|
|
33
33
|
export class RebalanceTxBuilder {
|
34
34
|
private values!: RebalanceValues;
|
@@ -3,13 +3,13 @@ import {
|
|
3
3
|
TokenBalanceChange,
|
4
4
|
TokenBalanceChangeType,
|
5
5
|
} from "../../generated";
|
6
|
-
import { SolautoPositionEx } from "../../solautoPosition";
|
7
6
|
import {
|
8
7
|
fromBps,
|
9
8
|
getLiqUtilzationRateBps,
|
10
9
|
maxRepayToBps,
|
11
10
|
toBps,
|
12
11
|
} from "../../utils";
|
12
|
+
import { SolautoPositionEx } from "../../solautoPosition";
|
13
13
|
import { SolautoFeesBps } from "./solautoFees";
|
14
14
|
|
15
15
|
export interface PositionValues {
|
@@ -37,10 +37,9 @@ export class SolautoFeesBps {
|
|
37
37
|
|
38
38
|
let feeBps: number = 0;
|
39
39
|
|
40
|
-
if (
|
41
|
-
|
42
|
-
|
43
|
-
) {
|
40
|
+
if (this.targetLiqUtilizationRateBps !== undefined) {
|
41
|
+
feeBps = 15;
|
42
|
+
} else if (rebalanceDirection === RebalanceDirection.Repay) {
|
44
43
|
feeBps = 25;
|
45
44
|
} else if (this.positionNetWorthUsd <= minSize) {
|
46
45
|
feeBps = maxFeeBps;
|
@@ -1,10 +1,5 @@
|
|
1
1
|
import "rpc-websockets/dist/lib/client";
|
2
|
-
import {
|
3
|
-
AddressLookupTableProgram,
|
4
|
-
PublicKey,
|
5
|
-
RpcResponseAndContext,
|
6
|
-
TokenAmount,
|
7
|
-
} from "@solana/web3.js";
|
2
|
+
import { AddressLookupTableProgram, PublicKey } from "@solana/web3.js";
|
8
3
|
import {
|
9
4
|
TransactionBuilder,
|
10
5
|
isOption,
|
@@ -28,15 +23,13 @@ import {
|
|
28
23
|
import {
|
29
24
|
getSolautoPositionAccount,
|
30
25
|
getTokenAccount,
|
31
|
-
} from "../../utils/accountUtils";
|
32
|
-
import { SOLAUTO_FEES_WALLET } from "../../constants/generalAccounts";
|
33
|
-
import {
|
34
26
|
getWalletSplBalances,
|
35
27
|
getWrappedInstruction,
|
36
28
|
splTokenTransferUmiIx,
|
37
|
-
|
38
|
-
|
39
|
-
import {
|
29
|
+
ContextUpdates,
|
30
|
+
} from "../../utils";
|
31
|
+
import { SOLAUTO_FEES_WALLET, SOLAUTO_LUT } from "../../constants";
|
32
|
+
import { ProgramEnv, RebalanceDetails } from "../../types";
|
40
33
|
import {
|
41
34
|
ReferralStateManager,
|
42
35
|
ReferralStateManagerArgs,
|
@@ -45,8 +38,7 @@ import {
|
|
45
38
|
getOrCreatePositionEx,
|
46
39
|
SolautoPositionEx,
|
47
40
|
} from "../../solautoPosition";
|
48
|
-
import {
|
49
|
-
import { FlProviderAggregator } from "../flashLoans/flProviderAggregator";
|
41
|
+
import { FlProviderAggregator } from "../flashLoans";
|
50
42
|
|
51
43
|
export interface SolautoClientArgs extends ReferralStateManagerArgs {
|
52
44
|
new?: boolean;
|
@@ -59,6 +51,7 @@ export interface SolautoClientArgs extends ReferralStateManagerArgs {
|
|
59
51
|
|
60
52
|
export abstract class SolautoClient extends ReferralStateManager {
|
61
53
|
public lendingPlatform!: LendingPlatform;
|
54
|
+
public lpEnv!: ProgramEnv;
|
62
55
|
|
63
56
|
public authority!: PublicKey;
|
64
57
|
|
@@ -153,7 +146,8 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
153
146
|
this.signer,
|
154
147
|
this.authority,
|
155
148
|
this.pos.supplyMint(),
|
156
|
-
this.pos.debtMint()
|
149
|
+
this.pos.debtMint(),
|
150
|
+
this.lpEnv
|
157
151
|
);
|
158
152
|
await this.flProvider.initialize();
|
159
153
|
this.otherSigners.push(...this.flProvider.otherSigners());
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { PublicKey, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
|
2
2
|
import {
|
3
3
|
Signer,
|
4
4
|
TransactionBuilder,
|
@@ -6,13 +6,12 @@ import {
|
|
6
6
|
PublicKey as UmiPublicKey,
|
7
7
|
createSignerFromKeypair,
|
8
8
|
} from "@metaplex-foundation/umi";
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import { MarginfiAssetAccounts } from "../../types/accounts";
|
9
|
+
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
10
|
+
import { MarginfiAssetAccounts, RebalanceDetails } from "../../types";
|
12
11
|
import {
|
13
12
|
MARGINFI_ACCOUNTS,
|
14
13
|
MARGINFI_ACCOUNTS_LOOKUP_TABLE,
|
15
|
-
} from "../../constants
|
14
|
+
} from "../../constants";
|
16
15
|
import {
|
17
16
|
DCASettingsInpArgs,
|
18
17
|
LendingPlatform,
|
@@ -29,9 +28,13 @@ import {
|
|
29
28
|
marginfiRebalance,
|
30
29
|
marginfiRefreshData,
|
31
30
|
} from "../../generated";
|
32
|
-
import { getTokenAccount } from "../../utils/accountUtils";
|
33
31
|
import {
|
34
|
-
|
32
|
+
getAllMarginfiAccountsByAuthority,
|
33
|
+
marginfiAccountEmpty,
|
34
|
+
getTokenAccount,
|
35
|
+
hasFirstRebalance,
|
36
|
+
} from "../../utils";
|
37
|
+
import {
|
35
38
|
lendingAccountBorrow,
|
36
39
|
lendingAccountDeposit,
|
37
40
|
lendingAccountRepay,
|
@@ -39,12 +42,7 @@ import {
|
|
39
42
|
marginfiAccountInitialize,
|
40
43
|
safeFetchAllMarginfiAccount,
|
41
44
|
} from "../../marginfi-sdk";
|
42
|
-
import {
|
43
|
-
getAllMarginfiAccountsByAuthority,
|
44
|
-
marginfiAccountEmpty,
|
45
|
-
} from "../../utils/marginfiUtils";
|
46
|
-
import { hasFirstRebalance } from "../../utils/solautoUtils";
|
47
|
-
import { RebalanceDetails } from "../../types";
|
45
|
+
import { SolautoClient, SolautoClientArgs } from "./solautoClient";
|
48
46
|
|
49
47
|
export class SolautoMarginfiClient extends SolautoClient {
|
50
48
|
public lendingPlatform = LendingPlatform.Marginfi;
|
@@ -64,6 +62,10 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
64
62
|
async initialize(args: SolautoClientArgs) {
|
65
63
|
await super.initialize(args);
|
66
64
|
|
65
|
+
this.marginfiProgram = toWeb3JsPublicKey(
|
66
|
+
this.umi.programs.get("marginfi").publicKey
|
67
|
+
);
|
68
|
+
|
67
69
|
this.marginfiGroup = await this.pos.lendingPool();
|
68
70
|
|
69
71
|
if (this.selfManaged) {
|
@@ -169,7 +171,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
169
171
|
|
170
172
|
return marginfiOpenPosition(this.umi, {
|
171
173
|
signer: this.signer,
|
172
|
-
marginfiProgram: publicKey(
|
174
|
+
marginfiProgram: publicKey(this.marginfiProgram),
|
173
175
|
signerReferralState: publicKey(this.referralState),
|
174
176
|
referredByState: this.referredByState
|
175
177
|
? publicKey(this.referredByState)
|
@@ -214,7 +216,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
214
216
|
refreshIx(): TransactionBuilder {
|
215
217
|
return marginfiRefreshData(this.umi, {
|
216
218
|
signer: this.signer,
|
217
|
-
marginfiProgram: publicKey(
|
219
|
+
marginfiProgram: publicKey(this.marginfiProgram),
|
218
220
|
marginfiGroup: publicKey(this.marginfiGroup),
|
219
221
|
marginfiAccount: publicKey(this.marginfiAccount),
|
220
222
|
supplyBank: publicKey(this.marginfiSupplyAccounts.bank),
|
@@ -342,7 +344,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
342
344
|
|
343
345
|
return marginfiProtocolInteraction(this.umi, {
|
344
346
|
signer: this.signer,
|
345
|
-
marginfiProgram: publicKey(
|
347
|
+
marginfiProgram: publicKey(this.marginfiProgram),
|
346
348
|
solautoPosition: publicKey(this.pos.publicKey),
|
347
349
|
marginfiGroup: publicKey(this.marginfiGroup),
|
348
350
|
marginfiAccount: publicKey(this.marginfiAccountPk),
|
@@ -393,7 +395,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
393
395
|
|
394
396
|
return marginfiRebalance(this.umi, {
|
395
397
|
signer: this.signer,
|
396
|
-
marginfiProgram: publicKey(
|
398
|
+
marginfiProgram: publicKey(this.marginfiProgram),
|
397
399
|
ixsSysvar: publicKey(SYSVAR_INSTRUCTIONS_PUBKEY),
|
398
400
|
solautoFeesTa: publicKey(
|
399
401
|
data.values.rebalanceDirection === RebalanceDirection.Boost
|
@@ -425,9 +427,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
425
427
|
supplyPriceOracle: publicKey(this.supplyPriceOracle),
|
426
428
|
positionSupplyTa: publicKey(this.positionSupplyTa),
|
427
429
|
authoritySupplyTa: addAuthorityTas
|
428
|
-
? publicKey(
|
429
|
-
getTokenAccount(this.authority, this.pos.supplyMint())
|
430
|
-
)
|
430
|
+
? publicKey(getTokenAccount(this.authority, this.pos.supplyMint()))
|
431
431
|
: undefined,
|
432
432
|
vaultSupplyTa: needSupplyAccounts
|
433
433
|
? publicKey(this.marginfiSupplyAccounts.liquidityVault)
|
@@ -439,9 +439,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
439
439
|
debtPriceOracle: publicKey(this.debtPriceOracle),
|
440
440
|
positionDebtTa: publicKey(this.positionDebtTa),
|
441
441
|
authorityDebtTa: addAuthorityTas
|
442
|
-
? publicKey(
|
443
|
-
getTokenAccount(this.authority, this.pos.debtMint())
|
444
|
-
)
|
442
|
+
? publicKey(getTokenAccount(this.authority, this.pos.debtMint()))
|
445
443
|
: undefined,
|
446
444
|
vaultDebtTa: needDebtAccounts
|
447
445
|
? publicKey(this.marginfiDebtAccounts.liquidityVault)
|
@@ -1,11 +1,12 @@
|
|
1
|
-
import { Signer, signerIdentity, Umi } from "@metaplex-foundation/umi";
|
2
1
|
import { Connection, PublicKey } from "@solana/web3.js";
|
3
|
-
import {
|
4
|
-
import { SOLAUTO_PROD_PROGRAM } from "../../constants";
|
2
|
+
import { Signer, signerIdentity, Umi } from "@metaplex-foundation/umi";
|
5
3
|
import {
|
6
4
|
WalletAdapter,
|
7
5
|
walletAdapterIdentity,
|
8
6
|
} from "@metaplex-foundation/umi-signer-wallet-adapters";
|
7
|
+
import { consoleLog, getSolanaRpcConnection } from "../../utils";
|
8
|
+
import { SOLAUTO_PROD_PROGRAM } from "../../constants";
|
9
|
+
import { ProgramEnv } from "../../types";
|
9
10
|
|
10
11
|
export interface TxHandlerProps {
|
11
12
|
signer?: Signer;
|
@@ -13,13 +14,14 @@ export interface TxHandlerProps {
|
|
13
14
|
rpcUrl: string;
|
14
15
|
showLogs?: boolean;
|
15
16
|
programId?: PublicKey;
|
16
|
-
|
17
|
+
lpEnv?: ProgramEnv;
|
17
18
|
}
|
18
19
|
|
19
20
|
export abstract class TxHandler {
|
20
21
|
public rpcUrl!: string;
|
21
22
|
public showLogs = false;
|
22
|
-
public programId
|
23
|
+
public programId!: PublicKey;
|
24
|
+
public lpEnv!: ProgramEnv;
|
23
25
|
|
24
26
|
public connection!: Connection;
|
25
27
|
public umi!: Umi;
|
@@ -27,15 +29,14 @@ export abstract class TxHandler {
|
|
27
29
|
public otherSigners: Signer[] = [];
|
28
30
|
|
29
31
|
constructor(props: TxHandlerProps) {
|
30
|
-
|
31
|
-
|
32
|
-
}
|
32
|
+
this.programId = props.programId ?? SOLAUTO_PROD_PROGRAM;
|
33
|
+
this.lpEnv = props.lpEnv ?? "Prod";
|
33
34
|
|
34
35
|
this.rpcUrl = props.rpcUrl;
|
35
36
|
const [connection, umi] = getSolanaRpcConnection(
|
36
37
|
this.rpcUrl,
|
37
38
|
this.programId,
|
38
|
-
|
39
|
+
this.lpEnv
|
39
40
|
);
|
40
41
|
this.connection = connection;
|
41
42
|
this.umi = umi;
|
@@ -1,24 +1,25 @@
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
1
2
|
import {
|
2
3
|
Signer,
|
3
4
|
TransactionBuilder,
|
4
5
|
transactionBuilder,
|
5
6
|
} from "@metaplex-foundation/umi";
|
7
|
+
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
6
8
|
import {
|
7
9
|
createJupiterApiClient,
|
8
10
|
QuoteResponse,
|
9
11
|
SwapInstructionsResponse,
|
10
12
|
} from "@jup-ag/api";
|
11
|
-
import { getWrappedInstruction } from "../../utils/solanaUtils";
|
12
|
-
import { fromBps, toBps } from "../../utils/numberUtils";
|
13
|
-
import { getTokenAccount } from "../../utils/accountUtils";
|
14
|
-
import { PublicKey } from "@solana/web3.js";
|
15
13
|
import {
|
16
14
|
consoleLog,
|
17
|
-
jupIxToSolanaIx,
|
18
15
|
retryWithExponentialBackoff,
|
16
|
+
getWrappedInstruction,
|
17
|
+
fromBps,
|
18
|
+
toBps,
|
19
|
+
getTokenAccount,
|
20
|
+
jupIxToSolanaIx,
|
19
21
|
} from "../../utils";
|
20
22
|
import { TransactionItemInputs } from "../../types";
|
21
|
-
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
22
23
|
|
23
24
|
export interface SwapInput {
|
24
25
|
inputMint: PublicKey;
|