@haven-fi/solauto-sdk 1.0.625 → 1.0.627
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/README.md +115 -0
- package/dist/constants/marginfiAccounts.d.ts +10 -6
- package/dist/constants/marginfiAccounts.d.ts.map +1 -1
- package/dist/constants/marginfiAccounts.js +61 -37
- package/dist/constants/pythConstants.d.ts +4 -0
- package/dist/constants/pythConstants.d.ts.map +1 -1
- package/dist/constants/pythConstants.js +5 -1
- package/dist/services/flashLoans/marginfiFlProvider.d.ts.map +1 -1
- package/dist/services/flashLoans/marginfiFlProvider.js +9 -9
- package/dist/services/solauto/solautoClient.d.ts.map +1 -1
- package/dist/services/solauto/solautoClient.js +6 -6
- package/dist/services/solauto/solautoMarginfiClient.d.ts +2 -1
- package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/services/solauto/solautoMarginfiClient.js +15 -17
- package/dist/services/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/services/transactions/transactionUtils.js +3 -2
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts +5 -0
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.js +20 -6
- package/dist/solautoPosition/solautoPositionEx.d.ts +5 -1
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/solautoPositionEx.js +11 -4
- package/dist/solautoPosition/utils.js +1 -1
- package/dist/types/accounts.d.ts +0 -1
- package/dist/types/accounts.d.ts.map +1 -1
- package/dist/utils/generalUtils.d.ts +1 -0
- package/dist/utils/generalUtils.d.ts.map +1 -1
- package/dist/utils/generalUtils.js +10 -0
- 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/marginfiUtils.d.ts +13 -3
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +78 -20
- package/dist/utils/pythUtils.d.ts +21 -0
- package/dist/utils/pythUtils.d.ts.map +1 -0
- package/dist/utils/pythUtils.js +67 -0
- package/dist/utils/solautoUtils.js +1 -1
- package/local/txSandbox.ts +3 -3
- package/local/updateMarginfiLUT.ts +17 -26
- package/package.json +1 -1
- package/src/constants/marginfiAccounts.ts +80 -37
- package/src/constants/pythConstants.ts +8 -0
- package/src/services/flashLoans/marginfiFlProvider.ts +13 -11
- package/src/services/solauto/solautoClient.ts +7 -6
- package/src/services/solauto/solautoMarginfiClient.ts +18 -26
- package/src/services/transactions/transactionUtils.ts +1 -1
- package/src/solautoPosition/marginfiSolautoPositionEx.ts +28 -9
- package/src/solautoPosition/solautoPositionEx.ts +18 -5
- package/src/solautoPosition/utils.ts +1 -1
- package/src/types/accounts.ts +0 -1
- package/src/utils/generalUtils.ts +12 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/marginfiUtils.ts +123 -30
- package/src/utils/pythUtils.ts +84 -0
- package/src/utils/solautoUtils.ts +1 -1
- package/tests/unit/accounts.ts +7 -13
- package/tests/unit/lookupTables.ts +27 -48
package/README.md
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
## Solauto Typescript SDK
|
2
|
+
|
3
|
+
Solauto is a program on the Solana blockchain that lets you manage leveraged longs & shorts on auto-pilot to maximize your gains and eliminate the risk of liquidation. The typescript SDK is made for interacting with the Solauto program. This SDK provides tools for managing, & reading Solauto state data, as well as executing transactions.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
```bash
|
8
|
+
npm install @haven-fi/solauto-sdk
|
9
|
+
# or
|
10
|
+
yarn add @haven-fi/solauto-sdk
|
11
|
+
# or
|
12
|
+
pnpm add @haven-fi/solauto-sdk
|
13
|
+
```
|
14
|
+
|
15
|
+
## Basic Usage
|
16
|
+
|
17
|
+
```typescript
|
18
|
+
import { PublicKey } from "@solana/web3.js";
|
19
|
+
import {
|
20
|
+
getClient,
|
21
|
+
LendingPlatform,
|
22
|
+
USDC,
|
23
|
+
SolautoSettingsParametersInpArgs,
|
24
|
+
maxBoostToBps,
|
25
|
+
maxRepayToBps,
|
26
|
+
fetchTokenPrices,
|
27
|
+
TransactionItem,
|
28
|
+
solautoAction,
|
29
|
+
RebalanceTxBuilder,
|
30
|
+
TransactionsManager,
|
31
|
+
} from "@haven-fi/solauto-sdk";
|
32
|
+
|
33
|
+
// Initialize the client
|
34
|
+
const client = getClient(LendingPlatform.MARGINFI, {
|
35
|
+
signer: yourSigner,
|
36
|
+
rpcUrl: "[YOUR_RPC_URL]",
|
37
|
+
});
|
38
|
+
|
39
|
+
const supplyMint = new PublicKey(NATIVE_MINT);
|
40
|
+
const debtMint = new PublicKey(USDC);
|
41
|
+
|
42
|
+
// Initialize a new position
|
43
|
+
await client.initialize({
|
44
|
+
positionId: 1,
|
45
|
+
new: true,
|
46
|
+
supplyMint,
|
47
|
+
debtMint,
|
48
|
+
});
|
49
|
+
|
50
|
+
// Open a position with custom settings
|
51
|
+
const [maxLtvBps, liqThresholdBps] =
|
52
|
+
await client.pos.maxLtvAndLiqThresholdBps();
|
53
|
+
const settings: SolautoSettingsParametersInpArgs = {
|
54
|
+
boostToBps: maxBoostToBps(maxLtvBps, liqThresholdBps),
|
55
|
+
boostGap: 50,
|
56
|
+
repayToBps: maxRepayToBps(maxLtvBps, liqThresholdBps),
|
57
|
+
repayGap: 50,
|
58
|
+
};
|
59
|
+
|
60
|
+
const [supplyPrice, debtPrice] = await fetchTokenPrices([supplyMint, debtMint]);
|
61
|
+
|
62
|
+
const transactionItems: TransactionItem[] = [];
|
63
|
+
|
64
|
+
transactionItems.push(
|
65
|
+
new TransactionItem(async () => {
|
66
|
+
return {
|
67
|
+
tx: client.openPositionIx(settings),
|
68
|
+
};
|
69
|
+
}, "open position")
|
70
|
+
);
|
71
|
+
|
72
|
+
const debtUsd = withFlashLoan ? 60 : 10;
|
73
|
+
transactionItems.push(
|
74
|
+
new TransactionItem(async () => {
|
75
|
+
return {
|
76
|
+
tx: client.protocolInteractionIx(
|
77
|
+
solautoAction("Borrow", [
|
78
|
+
toBaseUnit(debtUsd / debtPrice, client.pos.debtMintInfo().decimals),
|
79
|
+
])
|
80
|
+
),
|
81
|
+
};
|
82
|
+
}, "borrow")
|
83
|
+
);
|
84
|
+
|
85
|
+
transactionItems.push(
|
86
|
+
new TransactionItem(
|
87
|
+
async (attemptNum) =>
|
88
|
+
await new RebalanceTxBuilder(client, 0).buildRebalanceTx(attemptNum),
|
89
|
+
"rebalance"
|
90
|
+
)
|
91
|
+
);
|
92
|
+
|
93
|
+
transactionItems.push(
|
94
|
+
new TransactionItem(
|
95
|
+
async () => ({
|
96
|
+
tx: client.protocolInteractionIx(
|
97
|
+
solautoAction("Withdraw", [{ __kind: "All" }])
|
98
|
+
),
|
99
|
+
}),
|
100
|
+
"withdraw"
|
101
|
+
)
|
102
|
+
);
|
103
|
+
|
104
|
+
transactionItems.push(
|
105
|
+
new TransactionItem(
|
106
|
+
async () => ({
|
107
|
+
tx: client.closePositionIx(),
|
108
|
+
}),
|
109
|
+
"close position"
|
110
|
+
)
|
111
|
+
);
|
112
|
+
|
113
|
+
const txManager = new TransactionsManager(client);
|
114
|
+
const statuses = await txManager.clientSend(transactionItems);
|
115
|
+
```
|
@@ -1,13 +1,17 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
2
|
import { MarginfiAssetAccounts } from "../types/accounts";
|
3
|
-
|
4
|
-
export
|
5
|
-
export declare const DEFAULT_MARGINFI_GROUP = "4qp6Fx6tnZkY5Wropq9wUYgtFxXKwE6viZxFHg3rdAG8";
|
6
|
-
export declare const MARGINFI_ACCOUNTS: {
|
3
|
+
import { ProgramEnv } from "../types";
|
4
|
+
export type MarginfiBankAccountsMap = {
|
7
5
|
[group: string]: {
|
8
6
|
[token: string]: MarginfiAssetAccounts;
|
9
7
|
};
|
10
8
|
};
|
11
|
-
export
|
12
|
-
|
9
|
+
export interface MarginfiProgramAccounts {
|
10
|
+
program: PublicKey;
|
11
|
+
defaultGroup: PublicKey;
|
12
|
+
lookupTable: PublicKey;
|
13
|
+
bankAccounts: MarginfiBankAccountsMap;
|
14
|
+
}
|
15
|
+
export declare function getMarginfiAccounts(programEnv?: ProgramEnv, marginfiGroup?: PublicKey): MarginfiProgramAccounts;
|
16
|
+
export declare function isMarginfiProgram(programId: PublicKey): boolean;
|
13
17
|
//# sourceMappingURL=marginfiAccounts.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marginfiAccounts.d.ts","sourceRoot":"","sources":["../../src/constants/marginfiAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"marginfiAccounts.d.ts","sourceRoot":"","sources":["../../src/constants/marginfiAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAetC,MAAM,MAAM,uBAAuB,GAAG;IACpC,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;CAC7D,CAAC;AAgLF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,SAAS,CAAC;IACnB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,SAAS,CAAC;IACvB,YAAY,EAAE,uBAAuB,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,SAAS,GACxB,uBAAuB,CA4BzB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,WAKrD"}
|
@@ -23,130 +23,130 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
23
|
return result;
|
24
24
|
};
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
-
exports.
|
26
|
+
exports.getMarginfiAccounts = getMarginfiAccounts;
|
27
|
+
exports.isMarginfiProgram = isMarginfiProgram;
|
27
28
|
const web3_js_1 = require("@solana/web3.js");
|
28
29
|
const spl_token_1 = require("@solana/spl-token");
|
29
30
|
const tokens = __importStar(require("./tokenConstants"));
|
30
|
-
const
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
const
|
35
|
-
|
36
|
-
|
31
|
+
const MARGINFI_PROD_PROGRAM = new web3_js_1.PublicKey("MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA");
|
32
|
+
const MARGINFI_STAGING_PROGRAM = new web3_js_1.PublicKey("stag8sTKds2h4KzjUw3zKTsxbqvT4XKHdaR9X9E6Rct");
|
33
|
+
const PROD_DEFAULT_MARGINFI_GROUP = "4qp6Fx6tnZkY5Wropq9wUYgtFxXKwE6viZxFHg3rdAG8";
|
34
|
+
const STAGING_DEFAULT_MARGINFI_GROUP = "FCPfpHA69EbS8f9KKSreTRkXbzFpunsKuYf5qNmnJjpo";
|
35
|
+
const MARGINFI_STAGING_ACCOUNTS = {
|
36
|
+
[STAGING_DEFAULT_MARGINFI_GROUP]: {
|
37
|
+
[spl_token_1.NATIVE_MINT.toString()]: {
|
38
|
+
bank: "3evdJSa25nsUiZzEUzd92UNa13TPRJrje1dRyiQP5Lhp",
|
39
|
+
liquidityVault: "FVXESa7wCd1tf3o9LGroBc3Ym8Gpcq1HdsLek6oo7Ykv",
|
40
|
+
vaultAuthority: "DuYk1WGq8UsjW5ThLtaehFLrnJeupTjtF7TaPzja9LBQ",
|
41
|
+
},
|
42
|
+
[tokens.USDC]: {
|
43
|
+
bank: "Ek5JSFJFD8QgXM6rPDCzf31XhDp1q3xezaWYSkJWqbqc",
|
44
|
+
liquidityVault: "6n7xXMni5WJKUMb4Vm5Zis6UaUtGF5xEGmagZNVWWoKB",
|
45
|
+
vaultAuthority: "9mXNyA5yS4WSTpYUa5gi3yBrSJWWM7XNPNDWRzWGjdVe",
|
46
|
+
},
|
47
|
+
[tokens.USDT]: {
|
48
|
+
bank: "4WFCsVXwfnQvZG52VvPwae7CtL13PUFVWdjkw5YCRBo6",
|
49
|
+
liquidityVault: "BFSyniKfXU9rHqUvHLKeZMivQsAKWTE7HZ1fW6vZcvJp",
|
50
|
+
vaultAuthority: "Fgxe3SUMzcNuLtT9Xkv8QhhWXCmu4VxynzUMwCF4HvJd",
|
51
|
+
},
|
52
|
+
},
|
53
|
+
};
|
54
|
+
const MARGINFI_PROD_ACCOUNTS = {
|
55
|
+
[PROD_DEFAULT_MARGINFI_GROUP.toString()]: {
|
37
56
|
[spl_token_1.NATIVE_MINT.toString()]: {
|
38
57
|
bank: "CCKtUs6Cgwo4aaQUmBPmyoApH2gUDErxNZCAntD6LYGh",
|
39
58
|
liquidityVault: "2eicbpitfJXDwqCuFAmPgDP7t2oUotnAzbGzRKLMgSLe",
|
40
59
|
vaultAuthority: "DD3AeAssFvjqTvRTrRAtpfjkBF8FpVKnFuwnMLN9haXD",
|
41
|
-
priceOracle: "7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE",
|
42
60
|
},
|
43
61
|
[tokens.B_SOL]: {
|
44
62
|
bank: "6hS9i46WyTq1KXcoa2Chas2Txh9TJAVr6n1t3tnrE23K",
|
45
63
|
liquidityVault: "2WMipeKDB2CENxbzdmnVrRbsxCA2LY6kCtBe6AAqDP9p",
|
46
64
|
vaultAuthority: "8RcZHucpVHkHWRRdMhJZsxBK9mqKSYnMKGqtF84U8YEo",
|
47
|
-
priceOracle: "5cN76Xm2Dtx9MnrQqBDeZZRsWruTTcw37UruznAdSvvE",
|
48
65
|
},
|
49
66
|
[tokens.M_SOL]: {
|
50
67
|
bank: "22DcjMZrMwC5Bpa5AGBsmjc5V9VuQrXG6N9ZtdUNyYGE",
|
51
68
|
liquidityVault: "B6HqNn83a2bLqo4i5ygjLHJgD11ePtQksUyx4MjD55DV",
|
52
69
|
vaultAuthority: "6YxGd65JbXzgFGWjE44jsyVeCnZp7Bb1wfL9jDia1n8w",
|
53
|
-
priceOracle: "5CKzb9j4ChgLUt8Gfm5CNGLN6khXKiqMbnGAW4cgXgxK",
|
54
70
|
},
|
55
71
|
[tokens.JITO_SOL]: {
|
56
72
|
bank: "Bohoc1ikHLD7xKJuzTyiTyCwzaL5N7ggJQu75A8mKYM8",
|
57
73
|
liquidityVault: "38VGtXd2pDPq9FMh1z6AVjcHCoHgvWyMhdNyamDTeeks",
|
58
74
|
vaultAuthority: "7Ng54qf7BrCcZLqXmKA9WSR7SVRn4q6RX1YpLksBQ21A",
|
59
|
-
priceOracle: "AxaxyeDT8JnWERSaTKvFXvPKkEdxnamKSqpWbsSjYg1g",
|
60
75
|
},
|
61
76
|
[tokens.LST]: {
|
62
77
|
bank: "DMoqjmsuoru986HgfjqrKEvPv8YBufvBGADHUonkadC5",
|
63
78
|
liquidityVault: "DMQUXpb6K5L8osgV4x3NeEPUoJCf2VBgnA8FQusDjSou",
|
64
79
|
vaultAuthority: "6PWVauGLhBFHUJspsnBVZHr56ZnbvmhSD2gS7czBHGpE",
|
65
|
-
priceOracle: "7aT9A5knp62jVvnEW33xaWopaPHa3Y7ggULyYiUsDhu8",
|
66
80
|
},
|
67
81
|
[tokens.INF]: {
|
68
82
|
bank: "AwLRW3aPMMftXEjgWhTkYwM9CGBHdtKecvahCJZBwAqY",
|
69
83
|
liquidityVault: "HQ1CGcqRshMhuonTGTnnmgw9ffcXxizGdZ6F6PKffWWi",
|
70
84
|
vaultAuthority: "AEZb1XH5bfLwqk3hBKDuLfWyJKdLTgDPCkgn64BJKcvV",
|
71
|
-
priceOracle: "Ceg5oePJv1a6RR541qKeQaTepvERA3i8SvyueX9tT8Sq",
|
72
85
|
},
|
73
86
|
[tokens.H_SOL]: {
|
74
87
|
bank: "GJCi1uj3kYPZ64puA5sLUiCQfFapxT2xnREzrbDzFkYY",
|
75
88
|
liquidityVault: "8M97jkdr4rJtPnQ4yQ9stD6qVwaUvjrBdDPDbHJnPJLf",
|
76
89
|
vaultAuthority: "8x7mgTn5RvHR8Tn3CJqexSuQwrs6MLEy8csuXCDVvvpt",
|
77
|
-
priceOracle: switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS[tokens.H_SOL.toString()].feedId,
|
78
90
|
},
|
79
91
|
[tokens.JUP_SOL]: {
|
80
92
|
bank: "8LaUZadNqtzuCG7iCvZd7d5cbquuYfv19KjAg6GPuuCb",
|
81
93
|
liquidityVault: "B1zjqKPoYp9bTMhzFADaAvjyGb49FMitLpi6P3Pa3YR6",
|
82
94
|
vaultAuthority: "93Qqsge2jHVsWLd8vas4cWghrsZJooMUr5JKN5DtcfMX",
|
83
|
-
priceOracle: switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS[tokens.JUP_SOL.toString()].feedId,
|
84
95
|
},
|
85
96
|
[tokens.JUP]: {
|
86
97
|
bank: "Guu5uBc8k1WK1U2ihGosNaCy57LSgCkpWAabtzQqrQf8",
|
87
98
|
liquidityVault: "4w49W4fNDn778wsBa6TNq9hvebZKU17ymsptrEZ8zrsm",
|
88
99
|
vaultAuthority: "2MBwwAhL3c73Jy7HkWd9ofzh1bU39JBabrZCFQR2tUof",
|
89
|
-
priceOracle: "7dbob1psH1iZBS7qPsm3Kwbf5DzSXK8Jyg31CTgTnxH5",
|
90
100
|
},
|
91
101
|
[tokens.JTO]: {
|
92
102
|
bank: "EdB7YADw4XUt6wErT8kHGCUok4mnTpWGzPUU9rWDebzb",
|
93
103
|
liquidityVault: "3bY1DEkXodGmPMG5f7ABA12228MBG5JdAAKf5cgkB6G1",
|
94
104
|
vaultAuthority: "H2b4f2fGSKFortxwzrMZBnYVfr2yrKVUakg4Md9be3Wv",
|
95
|
-
priceOracle: "7ajR2zA4MGMMTqRAVjghTKqPPn4kbrj3pYkAVRVwTGzP",
|
96
105
|
},
|
97
106
|
[tokens.JLP]: {
|
98
107
|
bank: "Amtw3n7GZe5SWmyhMhaFhDTi39zbTkLeWErBsmZXwpDa",
|
99
108
|
liquidityVault: "9xfyL8gxbV77VvhdgFmacHyLEG4h7d2eDWkSMfhXUPQ",
|
100
109
|
vaultAuthority: "F4RSGd4BRXscCqAVG3rFLiPVpo7v6j1drVqnvSM3rBKH",
|
101
|
-
priceOracle: "2TTGSRSezqFzeLUH8JwRUbtN66XLLaymfYsWRTMjfiMw",
|
102
110
|
},
|
103
111
|
[tokens.WBTC]: {
|
104
112
|
bank: "BKsfDJCMbYep6gr9pq8PsmJbb5XGLHbAJzUV8vmorz7a",
|
105
113
|
liquidityVault: "CMNdnjfaDQZo3VMoX31wZQBnSGu5FMmb1CnBaU4tApZk",
|
106
114
|
vaultAuthority: "7P2TQHYgVJkXv1VPaREsL5Pi1gnNjVif5aF3pJewZ9kj",
|
107
|
-
priceOracle: "4cSM2e6rvbGQUFiJbqytoVMi5GgghSMr8LwVrT9VPSPo",
|
108
115
|
},
|
109
116
|
[tokens.WETH]: {
|
110
117
|
bank: "BkUyfXjbBBALcfZvw76WAFRvYQ21xxMWWeoPtJrUqG3z",
|
111
118
|
liquidityVault: "AxPJtiTEDksJWvCqNHCziK4uUcabqfmwW41dqtZrPFkp",
|
112
119
|
vaultAuthority: "ELXogWuyXrFyUG1vevffVbEhVxdFrHf2GCJTtRGKBWdM",
|
113
|
-
priceOracle: "42amVS4KgzR9rA28tkVYqVXjq9Qa8dcZQMbH5EYFX6XC",
|
114
120
|
},
|
115
121
|
[tokens.HNT]: {
|
116
122
|
bank: "JBcir4DPRPYVUpks9hkS1jtHMXejfeBo4xJGv3AYYHg6",
|
117
123
|
liquidityVault: "E8Q7u5e9L9Uykx16em75ERT9wfbBPtkNL8gsRjoP8GB9",
|
118
124
|
vaultAuthority: "AjsyrYpgaH275DBSnvNWdGK33hVycSFuXN87FKnX6fVY",
|
119
|
-
priceOracle: "4DdmDswskDxXGpwHrXUfn2CNUm9rt21ac79GHNTN3J33",
|
120
125
|
},
|
121
126
|
[tokens.PYTH]: {
|
122
127
|
bank: "E4td8i8PT2BZkMygzW4MGHCv2KPPs57dvz5W2ZXf9Twu",
|
123
128
|
liquidityVault: "DUrAkkaMAckzes7so9T5frXm9YFFgjAAm3MMwHwTfVJq",
|
124
129
|
vaultAuthority: "9b5KdVnbbfEQ2qhLeFjWvcAx2VWe9XHx7ZgayZyL9a6C",
|
125
|
-
priceOracle: "8vjchtMuJNY4oFQdTi8yCe6mhCaNBFaUbktT482TpLPS",
|
126
130
|
},
|
127
131
|
[tokens.USDC]: {
|
128
132
|
bank: "2s37akK2eyBbp8DZgCm7RtsaEz8eJP3Nxd4urLHQv7yB",
|
129
133
|
liquidityVault: "7jaiZR5Sk8hdYN9MxTpczTcwbWpb5WEoxSANuUwveuat",
|
130
134
|
vaultAuthority: "3uxNepDbmkDNq6JhRja5Z8QwbTrfmkKP8AKZV5chYDGG",
|
131
|
-
priceOracle: USDC_PRICE_ORACLE,
|
132
135
|
},
|
133
136
|
[tokens.USDT]: {
|
134
137
|
bank: "HmpMfL8942u22htC4EMiWgLX931g3sacXFR6KjuLgKLV",
|
135
138
|
liquidityVault: "77t6Fi9qj4s4z22K1toufHtstM8rEy7Y3ytxik7mcsTy",
|
136
139
|
vaultAuthority: "9r6z6KgkEytHCdQWNxvDQH98PsfU98f1m5PCg47mY2XE",
|
137
|
-
priceOracle: "HT2PLQBcG5EiCcNSaMHAjSgd9F98ecpATbk4Sk5oYuM",
|
138
140
|
},
|
139
141
|
[tokens.BONK]: {
|
140
142
|
bank: "DeyH7QxWvnbbaVB4zFrf4hoq7Q8z1ZT14co42BGwGtfM",
|
141
143
|
liquidityVault: "7FdQsXmCW3N5JQbknj3F9Yqq73er9VZJjGhEEMS8Ct2A",
|
142
144
|
vaultAuthority: "26kcZkdjJc94PdhqiLiEaGiLCYgAVVUfpDaZyK4cqih3",
|
143
|
-
priceOracle: "DBE3N8uNjhKPRHfANdwGvCZghWXyLPdqdSbEW2XFwBiX",
|
144
145
|
},
|
145
146
|
[tokens.WIF]: {
|
146
147
|
bank: "9dpu8KL5ABYiD3WP2Cnajzg1XaotcJvZspv29Y1Y3tn1",
|
147
148
|
liquidityVault: "4kT3EXc5dDVndUU9mV6EH3Jh3CSEvpcCZjuMkwqrtxUy",
|
148
149
|
vaultAuthority: "9gNrvvZ9RuTyRWooiEEypwcXU6kyXW8yWuhXU8tWUH5L",
|
149
|
-
priceOracle: "6B23K3tkb51vLZA14jcEQVCA1pfHptzEHFA93V5dYwbT",
|
150
150
|
},
|
151
151
|
},
|
152
152
|
["DQ2jqDJw9uzTwttf6h6r217BQ7kws3jZbJXDkfbCJa1q"]: {
|
@@ -154,13 +154,11 @@ exports.MARGINFI_ACCOUNTS = {
|
|
154
154
|
bank: "845oEvt1oduoBj5zQxTr21cWWaUVnRjGerJuW3yMo2nn",
|
155
155
|
liquidityVault: "At6R64ip51zay4dT6k1WnVGETSMcaiY5vggD5DVTgxri",
|
156
156
|
vaultAuthority: "dNraDCWb5usDSoW4kD1Mi2E9WsNu6EABcQZqnrDfjNb",
|
157
|
-
priceOracle: switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS[tokens.POPCAT.toString()].feedId,
|
158
157
|
},
|
159
158
|
[tokens.USDC]: {
|
160
159
|
bank: "EXrnNVfLagt3j4hCHSD9WqK75o6dkZBtjpnrSrSC78MA",
|
161
160
|
liquidityVault: "D9HSUYz3Rg2cTH65dUPaQS1MYxofNTeLecsAjiBgVPur",
|
162
161
|
vaultAuthority: "5ivKgJnxQ9CewJcKYSPQUiQFdfJki6YS87FqohnMSsFM",
|
163
|
-
priceOracle: USDC_PRICE_ORACLE,
|
164
162
|
},
|
165
163
|
},
|
166
164
|
["EpzY5EYF1A5eFDRfjtsPXSYMPmEx1FXKaXPnouTMF4dm"]: {
|
@@ -168,13 +166,11 @@ exports.MARGINFI_ACCOUNTS = {
|
|
168
166
|
bank: "3J5rKmCi7JXG6qmiobFJyAidVTnnNAMGj4jomfBxKGRM",
|
169
167
|
liquidityVault: "863K9YPVT3xbUGFZevrQJLqMux3UdRkwNQ6usAp4hJyy",
|
170
168
|
vaultAuthority: "Qsv2rnNRdv59AwRU3YmGPMCTdKT41CDAKyYAr4srCJR",
|
171
|
-
priceOracle: switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS[tokens.RETARDIO.toString()].feedId,
|
172
169
|
},
|
173
170
|
[tokens.USDC]: {
|
174
171
|
bank: "6cgYhBFWCc5sNHxkvSRhd5H9AdAHR41zKwuF37HmLry5",
|
175
172
|
liquidityVault: "7orVfNL5ZjqvdSaDgYLgBk4i5B3AnwFXNqqAvJbx6DFy",
|
176
173
|
vaultAuthority: "G4Azxk4PYtNRmDZkJppYo3rNAinkZXzYpQPG5dVDh4Nj",
|
177
|
-
priceOracle: USDC_PRICE_ORACLE,
|
178
174
|
},
|
179
175
|
},
|
180
176
|
["G1rt3EpQ43K3bY457rhukQGRAo2QxydFAGRKqnjKzyr5"]: {
|
@@ -182,13 +178,11 @@ exports.MARGINFI_ACCOUNTS = {
|
|
182
178
|
bank: "Dj3PndQ3j1vuga5ApiFWWAfQ4h3wBtgS2SeLZBT2LD4g",
|
183
179
|
liquidityVault: "BRcRMDVPBQzXNXWtSS6bNotcGxhVsxfiAt1qf8nFVUpx",
|
184
180
|
vaultAuthority: "36SgFh1qBRyj1PEhsn7Kg9Sfwbrn7rHP7kvTM5o5n6AL",
|
185
|
-
priceOracle: switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS[tokens.BILLY.toString()].feedId,
|
186
181
|
},
|
187
182
|
[tokens.USDC]: {
|
188
183
|
bank: "A7vBgCowCYeja7GTc3pyqUBdC9Gkue2gWaMjGZW38meM",
|
189
184
|
liquidityVault: "DBGhZ8TJTG2Pacdva27zY9etaro24o1tTA3LToSjYHbx",
|
190
185
|
vaultAuthority: "Cg6BCqkGny7A2AXCV8rikhHXM82wqqfzmdsTobEeTQkH",
|
191
|
-
priceOracle: USDC_PRICE_ORACLE,
|
192
186
|
},
|
193
187
|
},
|
194
188
|
["DESG67cExEcw7d6MmENLEzaocR8pLrhfiw9VrNtGWUKD"]: {
|
@@ -196,15 +190,45 @@ exports.MARGINFI_ACCOUNTS = {
|
|
196
190
|
bank: "Br3yzg2WSb81RaFWK9UsKtq8fD5viwooZG34mKqQWxdM",
|
197
191
|
liquidityVault: "J45Je52qv2rDBuCQWPwp3bjRhf3bGzRWhKZtGDuLooCX",
|
198
192
|
vaultAuthority: "CKDsAKjNruDSz4tmUairh8PDGD1Rqh9WMTLWERYnnZrH",
|
199
|
-
priceOracle: switchboardConstants_1.SWITCHBOARD_PRICE_FEED_IDS[tokens.HMTR.toString()].feedId,
|
200
193
|
},
|
201
194
|
[tokens.USDC]: {
|
202
195
|
bank: "9yNnhJ8c1vGbu3DMf6eeeUi6TDJ2ddGgaRA88rL2R3rP",
|
203
196
|
liquidityVault: "4U1UBjXrPrW7JuQ894JbLUBqcb5LFfK9rfkWFwT7EdQ9",
|
204
197
|
vaultAuthority: "CY74V1r48kuuHA6APD3AaU2oPV1mBqe9srikrQQSHNR6",
|
205
|
-
priceOracle: USDC_PRICE_ORACLE,
|
206
198
|
},
|
207
199
|
},
|
208
200
|
};
|
209
|
-
|
210
|
-
|
201
|
+
const MARGINFI_PROD_ACCOUNTS_LOOKUP_TABLE = "GAjmWmBPcH5Gxbiykasydj6RsCEaCLyHEvK6kHdFigc6";
|
202
|
+
const MARGINFI_STAGING_ACCOUNTS_LOOKUP_TABLE = "EoEVYjz3MnsX6fKyxrwJkRhzMCHKjj6dvnjTCHoZLMc7";
|
203
|
+
function getMarginfiAccounts(programEnv, marginfiGroup) {
|
204
|
+
if (programEnv === undefined) {
|
205
|
+
if (Boolean(marginfiGroup)) {
|
206
|
+
programEnv = Object.keys(MARGINFI_PROD_ACCOUNTS).includes(marginfiGroup.toString())
|
207
|
+
? "Prod"
|
208
|
+
: "Staging";
|
209
|
+
}
|
210
|
+
else {
|
211
|
+
programEnv = "Prod";
|
212
|
+
}
|
213
|
+
}
|
214
|
+
if (programEnv === "Prod") {
|
215
|
+
return {
|
216
|
+
program: MARGINFI_PROD_PROGRAM,
|
217
|
+
defaultGroup: new web3_js_1.PublicKey(PROD_DEFAULT_MARGINFI_GROUP),
|
218
|
+
lookupTable: new web3_js_1.PublicKey(MARGINFI_PROD_ACCOUNTS_LOOKUP_TABLE),
|
219
|
+
bankAccounts: MARGINFI_PROD_ACCOUNTS,
|
220
|
+
};
|
221
|
+
}
|
222
|
+
else {
|
223
|
+
return {
|
224
|
+
program: MARGINFI_STAGING_PROGRAM,
|
225
|
+
defaultGroup: new web3_js_1.PublicKey(STAGING_DEFAULT_MARGINFI_GROUP),
|
226
|
+
lookupTable: new web3_js_1.PublicKey(MARGINFI_STAGING_ACCOUNTS_LOOKUP_TABLE),
|
227
|
+
bankAccounts: MARGINFI_STAGING_ACCOUNTS,
|
228
|
+
};
|
229
|
+
}
|
230
|
+
}
|
231
|
+
function isMarginfiProgram(programId) {
|
232
|
+
return (programId.equals(MARGINFI_PROD_PROGRAM) ||
|
233
|
+
programId.equals(MARGINFI_STAGING_PROGRAM));
|
234
|
+
}
|
@@ -1,3 +1,7 @@
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
2
|
+
export declare const PYTH_PUSH_PROGRAM: PublicKey;
|
3
|
+
export declare const PYTH_SPONSORED_SHARD_ID = 0;
|
4
|
+
export declare const MARGINFI_SPONSORED_SHARD_ID = 3301;
|
1
5
|
export declare const PYTH_PRICE_FEED_IDS: {
|
2
6
|
[x: string]: string;
|
3
7
|
bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pythConstants.d.ts","sourceRoot":"","sources":["../../src/constants/pythConstants.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"pythConstants.d.ts","sourceRoot":"","sources":["../../src/constants/pythConstants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,iBAAiB,WAE7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAGhD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;CAmC/B,CAAC"}
|
@@ -23,9 +23,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
23
|
return result;
|
24
24
|
};
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
-
exports.PYTH_PRICE_FEED_IDS = void 0;
|
26
|
+
exports.PYTH_PRICE_FEED_IDS = exports.MARGINFI_SPONSORED_SHARD_ID = exports.PYTH_SPONSORED_SHARD_ID = exports.PYTH_PUSH_PROGRAM = void 0;
|
27
27
|
const spl_token_1 = require("@solana/spl-token");
|
28
28
|
const tokens = __importStar(require("./tokenConstants"));
|
29
|
+
const web3_js_1 = require("@solana/web3.js");
|
30
|
+
exports.PYTH_PUSH_PROGRAM = new web3_js_1.PublicKey("pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT");
|
31
|
+
exports.PYTH_SPONSORED_SHARD_ID = 0;
|
32
|
+
exports.MARGINFI_SPONSORED_SHARD_ID = 3301;
|
29
33
|
// https://pyth.network/developers/price-feed-ids#solana-stable
|
30
34
|
exports.PYTH_PRICE_FEED_IDS = {
|
31
35
|
[spl_token_1.NATIVE_MINT.toString()]: "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marginfiFlProvider.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/marginfiFlProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAML,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAclC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"marginfiFlProvider.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/marginfiFlProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAML,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAclC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgBlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,OAAO,CAAC,wBAAwB,CAAqB;IACrD,OAAO,CAAC,yBAAyB,CAAQ;IACzC,OAAO,CAAC,uBAAuB,CAAQ;IACvC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,eAAe,CAAe;IAEhC,UAAU;YAiBF,iBAAiB;IA6C/B,OAAO,CAAC,sBAAsB;IA0CxB,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyC3D,gBAAgB,IAAI,SAAS,EAAE;IAY/B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,WAAW;IAMnB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAI7C,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IAc9D,WAAW,CACT,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;IAoCrB,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB;IA0E3D,YAAY,CACV,eAAe,EAAE,SAAS,EAC1B,IAAI,EAAE,SAAS,EACf,aAAa,EAAE,SAAS;CAW3B"}
|
@@ -23,15 +23,16 @@ class MarginfiFlProvider extends flProviderBase_1.FlProviderBase {
|
|
23
23
|
}
|
24
24
|
}
|
25
25
|
async setAvailableBanks() {
|
26
|
+
const bankAccounts = (0, constants_1.getMarginfiAccounts)(this.programEnv).bankAccounts;
|
26
27
|
const availableBanks = [];
|
27
28
|
const checkIfUsable = (group, mint) => {
|
28
|
-
if (Object.keys(
|
29
|
-
availableBanks.push(
|
29
|
+
if (Object.keys(bankAccounts[group]).includes(mint)) {
|
30
|
+
availableBanks.push(bankAccounts[group][mint].bank);
|
30
31
|
}
|
31
32
|
};
|
32
|
-
for (const group of Object.keys(
|
33
|
-
checkIfUsable(group, this.supplyMint);
|
34
|
-
checkIfUsable(group, this.debtMint);
|
33
|
+
for (const group of Object.keys(bankAccounts)) {
|
34
|
+
checkIfUsable(group, this.supplyMint.toString());
|
35
|
+
checkIfUsable(group, this.debtMint.toString());
|
35
36
|
}
|
36
37
|
const banks = await (0, marginfi_sdk_1.safeFetchAllBank)(this.umi, availableBanks.map((x) => (0, umi_1.publicKey)(x)));
|
37
38
|
if (!(0, utils_1.safeGetPrice)(this.supplyMint) || !(0, utils_1.safeGetPrice)(this.debtMint)) {
|
@@ -179,10 +180,9 @@ class MarginfiFlProvider extends flProviderBase_1.FlProviderBase {
|
|
179
180
|
if (x.bankPk.toString() === bank.publicKey.toString()) {
|
180
181
|
flBankHadPrevBalance = true;
|
181
182
|
}
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
const priceOracle = (0, umi_1.publicKey)((0, utils_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.bankPk)).priceOracle);
|
183
|
+
const priceOracle = (0, umi_1.publicKey)(await (0, utils_1.getMarginfiPriceOracle)(this.umi, {
|
184
|
+
pk: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.bankPk),
|
185
|
+
}));
|
186
186
|
remainingAccounts.push(...[
|
187
187
|
{
|
188
188
|
pubkey: x.bankPk,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gCAAgC,EAEhC,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAML,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,EAAG,eAAe,CAAC;IAClC,KAAK,EAAG,UAAU,CAAC;IAEnB,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,OAAO,CAAC;IACtB,GAAG,EAAG,iBAAiB,CAAC;IAExB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,cAAc,EAAG,SAAS,CAAC;IAE3B,cAAc,EAAG,SAAS,CAAC;IAC3B,YAAY,EAAG,SAAS,CAAC;IAEzB,mBAAmB,EAAG,SAAS,CAAC;IAChC,iBAAiB,EAAG,SAAS,CAAC;IAE9B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAEhC,UAAU,EAAG,oBAAoB,CAAC;IAClC,cAAc,EAAE,cAAc,CAAwB;IAE7D,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAqB;IAExC,UAAU,CAAC,IAAI,EAAE,iBAAiB;
|
1
|
+
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gCAAgC,EAEhC,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAML,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,EAAG,eAAe,CAAC;IAClC,KAAK,EAAG,UAAU,CAAC;IAEnB,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,OAAO,CAAC;IACtB,GAAG,EAAG,iBAAiB,CAAC;IAExB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,cAAc,EAAG,SAAS,CAAC;IAE3B,cAAc,EAAG,SAAS,CAAC;IAC3B,YAAY,EAAG,SAAS,CAAC;IAEzB,mBAAmB,EAAG,SAAS,CAAC;IAChC,iBAAiB,EAAG,SAAS,CAAC;IAE9B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAEhC,UAAU,EAAG,oBAAoB,CAAC;IAClC,cAAc,EAAE,cAAc,CAAwB;IAE7D,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAqB;IAExC,UAAU,CAAC,IAAI,EAAE,iBAAiB;IAoFxC,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAO3C,gBAAgB,IAAI,SAAS,GAAG,SAAS;IAOnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAkB1C,mBAAmB,IAAI,MAAM,EAAE;IAS/B,gBAAgB,IAAI,SAAS,EAAE;IAgBzB,iCAAiC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAUzD,iBAAiB,IAAI,OAAO,CAC9B;QACE,EAAE,EAAE,kBAAkB,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC;QACb,aAAa,EAAE,SAAS,EAAE,CAAC;KAC5B,GACD,SAAS,CACZ;IAgEK,cAAc,IAAI,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAgBF,cAAc,CACZ,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IA0BrB,gBAAgB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IAsDlE,QAAQ,CAAC,eAAe,IAAI,kBAAkB;IAE9C,WAAW,IAAI,kBAAkB;IAgCjC,QAAQ,CAAC,SAAS,IAAI,kBAAkB;IAExC,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAsFlE,QAAQ,CAAC,WAAW,CAClB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CACtB"}
|
@@ -31,6 +31,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
31
31
|
lendingPool: args.lendingPool,
|
32
32
|
lpUserAccount: args.lpUserAccount,
|
33
33
|
lendingPlatform: this.lendingPlatform,
|
34
|
+
lpEnv: this.lpEnv,
|
34
35
|
}, this.contextUpdates);
|
35
36
|
this.positionSupplyTa = (0, utils_1.getTokenAccount)(this.pos.publicKey, this.pos.supplyMint());
|
36
37
|
this.signerSupplyTa = (0, utils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.pos.supplyMint());
|
@@ -94,12 +95,8 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
94
95
|
return [
|
95
96
|
this.authority,
|
96
97
|
...(this.authorityLutAddress ? [this.authorityLutAddress] : []),
|
97
|
-
|
98
|
-
|
99
|
-
: []),
|
100
|
-
...((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey).equals(this.authority)
|
101
|
-
? [this.signerDebtTa]
|
102
|
-
: []),
|
98
|
+
this.signerSupplyTa,
|
99
|
+
this.signerDebtTa,
|
103
100
|
this.pos.publicKey,
|
104
101
|
this.positionSupplyTa,
|
105
102
|
this.positionDebtTa,
|
@@ -119,6 +116,9 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
119
116
|
return lookupTable?.value?.state.addresses ?? [];
|
120
117
|
}
|
121
118
|
async updateLookupTable() {
|
119
|
+
if (!(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey).equals(this.authority)) {
|
120
|
+
return undefined;
|
121
|
+
}
|
122
122
|
const existingLutAccounts = await this.fetchExistingAuthorityLutAccounts();
|
123
123
|
if (this.lutAccountsToAdd().every((element) => existingLutAccounts
|
124
124
|
.map((x) => x.toString().toLowerCase())
|
@@ -1,11 +1,12 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
2
|
import { Signer, TransactionBuilder } from "@metaplex-foundation/umi";
|
3
3
|
import { MarginfiAssetAccounts, RebalanceDetails } from "../../types";
|
4
|
+
import { MarginfiProgramAccounts } from "../../constants";
|
4
5
|
import { DCASettingsInpArgs, LendingPlatform, RebalanceStep, SolautoActionArgs, SolautoSettingsParametersInpArgs } from "../../generated";
|
5
6
|
import { SolautoClient, SolautoClientArgs } from "./solautoClient";
|
6
7
|
export declare class SolautoMarginfiClient extends SolautoClient {
|
7
8
|
lendingPlatform: LendingPlatform;
|
8
|
-
|
9
|
+
mfiAccounts: MarginfiProgramAccounts;
|
9
10
|
marginfiAccount: PublicKey | Signer;
|
10
11
|
marginfiAccountPk: PublicKey;
|
11
12
|
marginfiGroup: PublicKey;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoMarginfiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,MAAM,EACN,kBAAkB,EAInB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoMarginfiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,MAAM,EACN,kBAAkB,EAInB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAuB,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,eAAe,EAGf,aAAa,EACb,iBAAiB,EAEjB,gCAAgC,EAOjC,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEnE,qBAAa,qBAAsB,SAAQ,aAAa;IAC/C,eAAe,kBAA4B;IAE3C,WAAW,EAAG,uBAAuB,CAAC;IAEtC,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAE7B,UAAU,CAAC,IAAI,EAAE,iBAAiB;IAiExC,mBAAmB,IAAI,MAAM,EAAE;IAO/B,gBAAgB,IAAI,SAAS,EAAE;IAI/B,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB;IAStE,cAAc,CACZ,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA0C9B,eAAe,IAAI,kBAAkB;IAYrC,SAAS,IAAI,kBAAkB;IAc/B,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUlE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,WAAW,CACT,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CAiGtB"}
|
@@ -16,7 +16,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
16
16
|
}
|
17
17
|
async initialize(args) {
|
18
18
|
await super.initialize(args);
|
19
|
-
this.
|
19
|
+
this.mfiAccounts = (0, constants_1.getMarginfiAccounts)(this.lpEnv);
|
20
20
|
this.marginfiGroup = await this.pos.lendingPool();
|
21
21
|
if (this.selfManaged) {
|
22
22
|
this.marginfiAccount =
|
@@ -46,22 +46,20 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
46
46
|
this.otherSigners.push(this.marginfiAccount);
|
47
47
|
}
|
48
48
|
this.marginfiSupplyAccounts =
|
49
|
-
|
49
|
+
this.mfiAccounts.bankAccounts[this.marginfiGroup.toString()][this.pos.supplyMint().toString()];
|
50
50
|
this.marginfiDebtAccounts =
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
// publicKey(this.marginfiSupplyAccounts.bank),
|
55
|
-
// publicKey(this.marginfiDebtAccounts.bank),
|
56
|
-
// ]);
|
57
|
-
// this.supplyPriceOracle = toWeb3JsPublicKey(supplyBank.config.oracleKeys[0]);
|
58
|
-
// this.debtPriceOracle = toWeb3JsPublicKey(debtBank.config.oracleKeys[0]);
|
59
|
-
this.supplyPriceOracle = new web3_js_1.PublicKey(this.marginfiSupplyAccounts.priceOracle);
|
60
|
-
this.debtPriceOracle = new web3_js_1.PublicKey(this.marginfiDebtAccounts.priceOracle);
|
51
|
+
this.mfiAccounts.bankAccounts[this.marginfiGroup.toString()][this.pos.debtMint().toString()];
|
52
|
+
[this.supplyPriceOracle, this.debtPriceOracle] =
|
53
|
+
await this.pos.priceOracles();
|
61
54
|
this.log("Marginfi account:", this.marginfiAccountPk.toString());
|
55
|
+
this.log("Supply price oracle:", this.supplyPriceOracle.toString());
|
56
|
+
this.log("Debt price oracle:", this.debtPriceOracle.toString());
|
62
57
|
}
|
63
58
|
defaultLookupTables() {
|
64
|
-
return [
|
59
|
+
return [
|
60
|
+
this.mfiAccounts.lookupTable.toString(),
|
61
|
+
...super.defaultLookupTables(),
|
62
|
+
];
|
65
63
|
}
|
66
64
|
lutAccountsToAdd() {
|
67
65
|
return [...super.lutAccountsToAdd(), this.marginfiAccountPk];
|
@@ -86,7 +84,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
86
84
|
}
|
87
85
|
return (0, generated_1.marginfiOpenPosition)(this.umi, {
|
88
86
|
signer: this.signer,
|
89
|
-
marginfiProgram: (0, umi_1.publicKey)(this.
|
87
|
+
marginfiProgram: (0, umi_1.publicKey)(this.mfiAccounts.program),
|
90
88
|
signerReferralState: (0, umi_1.publicKey)(this.referralState),
|
91
89
|
referredByState: this.referredByState
|
92
90
|
? (0, umi_1.publicKey)(this.referredByState)
|
@@ -128,7 +126,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
128
126
|
refreshIx() {
|
129
127
|
return (0, generated_1.marginfiRefreshData)(this.umi, {
|
130
128
|
signer: this.signer,
|
131
|
-
marginfiProgram: (0, umi_1.publicKey)(this.
|
129
|
+
marginfiProgram: (0, umi_1.publicKey)(this.mfiAccounts.program),
|
132
130
|
marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
|
133
131
|
marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccount),
|
134
132
|
supplyBank: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.bank),
|
@@ -228,7 +226,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
228
226
|
}
|
229
227
|
return (0, generated_1.marginfiProtocolInteraction)(this.umi, {
|
230
228
|
signer: this.signer,
|
231
|
-
marginfiProgram: (0, umi_1.publicKey)(this.
|
229
|
+
marginfiProgram: (0, umi_1.publicKey)(this.mfiAccounts.program),
|
232
230
|
solautoPosition: (0, umi_1.publicKey)(this.pos.publicKey),
|
233
231
|
marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
|
234
232
|
marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccountPk),
|
@@ -262,7 +260,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
262
260
|
const addAuthorityTas = this.selfManaged || data.values.tokenBalanceChange !== undefined;
|
263
261
|
return (0, generated_1.marginfiRebalance)(this.umi, {
|
264
262
|
signer: this.signer,
|
265
|
-
marginfiProgram: (0, umi_1.publicKey)(this.
|
263
|
+
marginfiProgram: (0, umi_1.publicKey)(this.mfiAccounts.program),
|
266
264
|
ixsSysvar: (0, umi_1.publicKey)(web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY),
|
267
265
|
solautoFeesTa: (0, umi_1.publicKey)(data.values.rebalanceDirection === generated_1.RebalanceDirection.Boost
|
268
266
|
? this.solautoFeesSupplyTa
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAgBlC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAgBlC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA2BjE,OAAO,EAAE,qBAAqB,EAAyB,MAAM,aAAa,CAAC;AAwL3E,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAyF7B;AA6LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAuC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EA8G/B"}
|