@haven-fi/solauto-sdk 1.0.70 → 1.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clients/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +7 -9
- package/dist/constants/marginfiAccounts.d.ts.map +1 -1
- package/dist/constants/marginfiAccounts.js +14 -4
- package/dist/constants/pythConstants.d.ts +2 -0
- package/dist/constants/pythConstants.d.ts.map +1 -1
- package/dist/constants/pythConstants.js +2 -0
- package/dist/constants/tokenConstants.d.ts +10 -4
- package/dist/constants/tokenConstants.d.ts.map +1 -1
- package/dist/constants/tokenConstants.js +21 -8
- package/dist/types/accounts.d.ts +0 -1
- package/dist/types/accounts.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.d.ts +1 -4
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +9 -15
- package/dist/utils/solauto/generalUtils.js +2 -2
- package/local/updateMarginfiLUT.ts +1 -1
- package/package.json +1 -1
- package/src/clients/solautoMarginfiClient.ts +10 -15
- package/src/constants/marginfiAccounts.ts +15 -5
- package/src/constants/pythConstants.ts +4 -2
- package/src/constants/tokenConstants.ts +26 -8
- package/src/types/accounts.ts +0 -1
- package/src/utils/marginfiUtils.ts +13 -23
- package/src/utils/solauto/generalUtils.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AASnE,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,WAAW,CAAkB;IAE9B,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,EAAE,MAAM,CAAa;IAC3C,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;IAG7C,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAuC1C,8BAA8B;IA0CpC,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAU/B,yBAAyB,IAAI,kBAAkB;IAS/C,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA8C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUhE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,wBAAwB,EACvC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB;IA2DrB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IA6ElE,iCAAiC,IAAI,kBAAkB;IASjD,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CAiBlE"}
|
|
@@ -40,12 +40,9 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
40
40
|
this.marginfiGroup = marginfiAccountData
|
|
41
41
|
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(marginfiAccountData.group)
|
|
42
42
|
: args.marginfiGroup ?? new web3_js_1.PublicKey(marginfiAccounts_1.DEFAULT_MARGINFI_GROUP);
|
|
43
|
-
this.marginfiSupplyAccounts =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this.marginfiDebtAccounts = (0, marginfiUtils_1.findMarginfiAccounts)({
|
|
47
|
-
mint: this.debtMint.toString(),
|
|
48
|
-
});
|
|
43
|
+
this.marginfiSupplyAccounts =
|
|
44
|
+
marginfiAccounts_1.MARGINFI_ACCOUNTS[this.supplyMint.toString()];
|
|
45
|
+
this.marginfiDebtAccounts = marginfiAccounts_1.MARGINFI_ACCOUNTS[this.debtMint.toString()];
|
|
49
46
|
if (!this.initialized) {
|
|
50
47
|
await this.setIntermediaryMarginfiDetails();
|
|
51
48
|
}
|
|
@@ -78,7 +75,9 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
78
75
|
return [
|
|
79
76
|
...super.lutAccountsToAdd(),
|
|
80
77
|
this.marginfiAccountPk,
|
|
81
|
-
...(this.signer.publicKey.toString() === this.authority.toString()
|
|
78
|
+
...(this.signer.publicKey.toString() === this.authority.toString()
|
|
79
|
+
? [this.intermediaryMarginfiAccountPk]
|
|
80
|
+
: []),
|
|
82
81
|
];
|
|
83
82
|
}
|
|
84
83
|
marginfiAccountInitialize() {
|
|
@@ -344,8 +343,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
344
343
|
isWritable: false,
|
|
345
344
|
},
|
|
346
345
|
{
|
|
347
|
-
pubkey: (0, umi_1.publicKey)((0, marginfiUtils_1.findMarginfiAccounts)(
|
|
348
|
-
.priceOracle),
|
|
346
|
+
pubkey: (0, umi_1.publicKey)((0, marginfiUtils_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.bankPk)).priceOracle),
|
|
349
347
|
isSigner: false,
|
|
350
348
|
isWritable: false,
|
|
351
349
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginfiAccounts.d.ts","sourceRoot":"","sources":["../../src/constants/marginfiAccounts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,sBAAsB,iDAAiD,CAAC;AAErF,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"marginfiAccounts.d.ts","sourceRoot":"","sources":["../../src/constants/marginfiAccounts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,sBAAsB,iDAAiD,CAAC;AAErF,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAA;CAyBrE,CAAC;AAEF,eAAO,MAAM,8BAA8B,iDAAiD,CAAC"}
|
|
@@ -5,19 +5,29 @@ const spl_token_1 = require("@solana/spl-token");
|
|
|
5
5
|
const tokenConstants_1 = require("./tokenConstants");
|
|
6
6
|
exports.DEFAULT_MARGINFI_GROUP = "4qp6Fx6tnZkY5Wropq9wUYgtFxXKwE6viZxFHg3rdAG8";
|
|
7
7
|
exports.MARGINFI_ACCOUNTS = {
|
|
8
|
-
|
|
9
|
-
mint: spl_token_1.NATIVE_MINT.toString(),
|
|
8
|
+
[spl_token_1.NATIVE_MINT.toString()]: {
|
|
10
9
|
bank: "CCKtUs6Cgwo4aaQUmBPmyoApH2gUDErxNZCAntD6LYGh",
|
|
11
10
|
liquidityVault: "2eicbpitfJXDwqCuFAmPgDP7t2oUotnAzbGzRKLMgSLe",
|
|
12
11
|
vaultAuthority: "DD3AeAssFvjqTvRTrRAtpfjkBF8FpVKnFuwnMLN9haXD",
|
|
13
12
|
priceOracle: "7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE"
|
|
14
13
|
},
|
|
15
|
-
|
|
16
|
-
mint: tokenConstants_1.USDC_MINT,
|
|
14
|
+
[tokenConstants_1.USDC_MINT]: {
|
|
17
15
|
bank: "2s37akK2eyBbp8DZgCm7RtsaEz8eJP3Nxd4urLHQv7yB",
|
|
18
16
|
liquidityVault: "7jaiZR5Sk8hdYN9MxTpczTcwbWpb5WEoxSANuUwveuat",
|
|
19
17
|
vaultAuthority: "3uxNepDbmkDNq6JhRja5Z8QwbTrfmkKP8AKZV5chYDGG",
|
|
20
18
|
priceOracle: "Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX"
|
|
19
|
+
},
|
|
20
|
+
[tokenConstants_1.B_SOL]: {
|
|
21
|
+
bank: "6hS9i46WyTq1KXcoa2Chas2Txh9TJAVr6n1t3tnrE23K",
|
|
22
|
+
liquidityVault: "2WMipeKDB2CENxbzdmnVrRbsxCA2LY6kCtBe6AAqDP9p",
|
|
23
|
+
vaultAuthority: "8RcZHucpVHkHWRRdMhJZsxBK9mqKSYnMKGqtF84U8YEo",
|
|
24
|
+
priceOracle: "5cN76Xm2Dtx9MnrQqBDeZZRsWruTTcw37UruznAdSvvE",
|
|
25
|
+
},
|
|
26
|
+
[tokenConstants_1.JUP]: {
|
|
27
|
+
bank: "Guu5uBc8k1WK1U2ihGosNaCy57LSgCkpWAabtzQqrQf8",
|
|
28
|
+
liquidityVault: "4w49W4fNDn778wsBa6TNq9hvebZKU17ymsptrEZ8zrsm",
|
|
29
|
+
vaultAuthority: "2MBwwAhL3c73Jy7HkWd9ofzh1bU39JBabrZCFQR2tUof",
|
|
30
|
+
priceOracle: "7dbob1psH1iZBS7qPsm3Kwbf5DzSXK8Jyg31CTgTnxH5",
|
|
21
31
|
}
|
|
22
32
|
};
|
|
23
33
|
exports.MARGINFI_ACCOUNTS_LOOKUP_TABLE = "GAjmWmBPcH5Gxbiykasydj6RsCEaCLyHEvK6kHdFigc6";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare const PYTH_PRICE_FEED_IDS: {
|
|
2
2
|
[x: string]: string;
|
|
3
3
|
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v: string;
|
|
4
|
+
bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1: string;
|
|
5
|
+
JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN: string;
|
|
4
6
|
};
|
|
5
7
|
//# sourceMappingURL=pythConstants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pythConstants.d.ts","sourceRoot":"","sources":["../../src/constants/pythConstants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"pythConstants.d.ts","sourceRoot":"","sources":["../../src/constants/pythConstants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB;;;;;CAO/B,CAAC"}
|
|
@@ -7,4 +7,6 @@ const tokenConstants_1 = require("./tokenConstants");
|
|
|
7
7
|
exports.PYTH_PRICE_FEED_IDS = {
|
|
8
8
|
[spl_token_1.NATIVE_MINT.toString()]: "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
|
9
9
|
[tokenConstants_1.USDC_MINT]: "0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
10
|
+
[tokenConstants_1.B_SOL]: "0x89875379e70f8fbadc17aef315adf3a8d5d160b811435537e03c97e8aac97d9c",
|
|
11
|
+
[tokenConstants_1.JUP]: "0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996",
|
|
10
12
|
};
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
export declare const USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
2
|
+
export declare const B_SOL = "bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1";
|
|
3
|
+
export declare const JUP = "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN";
|
|
2
4
|
export declare const ALL_SUPPORTED_TOKENS: string[];
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
interface TokenInfo {
|
|
6
|
+
decimals: number;
|
|
7
|
+
isStableCoin?: boolean;
|
|
8
|
+
isLST?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const TOKEN_INFO: {
|
|
11
|
+
[key: string]: TokenInfo;
|
|
6
12
|
};
|
|
7
|
-
export
|
|
13
|
+
export {};
|
|
8
14
|
//# sourceMappingURL=tokenConstants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenConstants.d.ts","sourceRoot":"","sources":["../../src/constants/tokenConstants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"tokenConstants.d.ts","sourceRoot":"","sources":["../../src/constants/tokenConstants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,iDAAiD,CAAC;AACxE,eAAO,MAAM,KAAK,gDAAgD,CAAC;AACnE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AAGjE,eAAO,MAAM,oBAAoB,UAKhC,CAAC;AAEF,UAAU,SAAS;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAelD,CAAC"}
|
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TOKEN_INFO = exports.ALL_SUPPORTED_TOKENS = exports.JUP = exports.B_SOL = exports.USDC_MINT = void 0;
|
|
4
4
|
const spl_token_1 = require("@solana/spl-token");
|
|
5
|
-
// When adding token ensure a price feed is provided in pythConstants.ts & the token is
|
|
5
|
+
// When adding token ensure a price feed is provided in pythConstants.ts & the token is in TOKEN_INFO
|
|
6
6
|
exports.USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
7
|
+
exports.B_SOL = "bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1";
|
|
8
|
+
exports.JUP = "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN";
|
|
7
9
|
exports.ALL_SUPPORTED_TOKENS = [
|
|
8
10
|
spl_token_1.NATIVE_MINT.toString(),
|
|
9
11
|
exports.USDC_MINT,
|
|
12
|
+
exports.B_SOL,
|
|
13
|
+
exports.JUP,
|
|
10
14
|
];
|
|
11
|
-
exports.
|
|
12
|
-
[spl_token_1.NATIVE_MINT.toString()]:
|
|
13
|
-
|
|
15
|
+
exports.TOKEN_INFO = {
|
|
16
|
+
[spl_token_1.NATIVE_MINT.toString()]: {
|
|
17
|
+
decimals: 9,
|
|
18
|
+
},
|
|
19
|
+
[exports.USDC_MINT]: {
|
|
20
|
+
decimals: 6,
|
|
21
|
+
isStableCoin: true
|
|
22
|
+
},
|
|
23
|
+
[exports.B_SOL]: {
|
|
24
|
+
decimals: 9,
|
|
25
|
+
isLST: true
|
|
26
|
+
},
|
|
27
|
+
[exports.JUP]: {
|
|
28
|
+
decimals: 6
|
|
29
|
+
}
|
|
14
30
|
};
|
|
15
|
-
exports.STABLECOINS = [
|
|
16
|
-
exports.USDC_MINT
|
|
17
|
-
];
|
package/dist/types/accounts.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/types/accounts.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/types/accounts.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -4,10 +4,7 @@ import { Bank } from "../marginfi-sdk";
|
|
|
4
4
|
import { MarginfiAssetAccounts } from "../types/accounts";
|
|
5
5
|
import { PositionState } from "../generated";
|
|
6
6
|
import { LivePositionUpdates } from "./solauto/generalUtils";
|
|
7
|
-
export declare function findMarginfiAccounts(
|
|
8
|
-
mint?: string;
|
|
9
|
-
bank?: string;
|
|
10
|
-
}): MarginfiAssetAccounts;
|
|
7
|
+
export declare function findMarginfiAccounts(bank: PublicKey): MarginfiAssetAccounts;
|
|
11
8
|
export declare function getMaxLtvAndLiqThreshold(umi: Umi, supply: {
|
|
12
9
|
mint: PublicKey;
|
|
13
10
|
bank?: Bank | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAKL,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,wBAAgB,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAKL,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,qBAAqB,CAU3E;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2D3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CA6CA;AAgED,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,iBAAiB,EAAE,SAAS,EAC5B,UAAU,CAAC,EAAE,SAAS,EACtB,QAAQ,CAAC,EAAE,SAAS,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA+IpC;AA+DD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0B3B"}
|
|
@@ -15,28 +15,22 @@ const solautoConstants_1 = require("../constants/solautoConstants");
|
|
|
15
15
|
const marginfiAccounts_1 = require("../constants/marginfiAccounts");
|
|
16
16
|
const generalAccounts_1 = require("../constants/generalAccounts");
|
|
17
17
|
const solanaUtils_1 = require("./solanaUtils");
|
|
18
|
-
function findMarginfiAccounts(
|
|
18
|
+
function findMarginfiAccounts(bank) {
|
|
19
19
|
for (const key in marginfiAccounts_1.MARGINFI_ACCOUNTS) {
|
|
20
20
|
const account = marginfiAccounts_1.MARGINFI_ACCOUNTS[key];
|
|
21
|
-
if (
|
|
22
|
-
return account;
|
|
23
|
-
}
|
|
24
|
-
if (bank && account.bank.toString().toLowerCase() === bank.toLowerCase()) {
|
|
21
|
+
if (account.bank.toString().toLowerCase() === bank.toString().toLowerCase()) {
|
|
25
22
|
return account;
|
|
26
23
|
}
|
|
27
24
|
}
|
|
28
|
-
throw new Error(`Marginfi accounts not found by the
|
|
25
|
+
throw new Error(`Marginfi accounts not found by the bank: ${bank}`);
|
|
29
26
|
}
|
|
30
27
|
async function getMaxLtvAndLiqThreshold(umi, supply, debt, supplyPrice) {
|
|
31
28
|
if (!supply.bank || supply.bank === null) {
|
|
32
|
-
supply.bank = await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(
|
|
33
|
-
mint: supply.mint.toString(),
|
|
34
|
-
}).bank));
|
|
29
|
+
supply.bank = await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(marginfiAccounts_1.MARGINFI_ACCOUNTS[supply.mint.toString()].bank));
|
|
35
30
|
}
|
|
36
|
-
if ((!debt.bank || debt.bank === null) &&
|
|
37
|
-
debt.
|
|
38
|
-
|
|
39
|
-
}).bank));
|
|
31
|
+
if ((!debt.bank || debt.bank === null) &&
|
|
32
|
+
!debt.mint.equals(web3_js_1.PublicKey.default)) {
|
|
33
|
+
debt.bank = await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(marginfiAccounts_1.MARGINFI_ACCOUNTS[debt.mint.toString()].bank));
|
|
40
34
|
}
|
|
41
35
|
if (!supplyPrice) {
|
|
42
36
|
const [price] = await (0, generalUtils_1.getTokenPrices)([
|
|
@@ -141,10 +135,10 @@ async function getTokenUsage(umi, bank, isAsset, shares, amountUsedAdjustment) {
|
|
|
141
135
|
async function getMarginfiAccountPositionState(umi, marginfiAccountPk, supplyMint, debtMint, livePositionUpdates) {
|
|
142
136
|
let marginfiAccount = await (0, marginfi_sdk_1.safeFetchMarginfiAccount)(umi, (0, umi_1.publicKey)(marginfiAccountPk));
|
|
143
137
|
let supplyBank = supplyMint && supplyMint !== web3_js_1.PublicKey.default
|
|
144
|
-
? await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(
|
|
138
|
+
? await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(marginfiAccounts_1.MARGINFI_ACCOUNTS[supplyMint.toString()].bank))
|
|
145
139
|
: null;
|
|
146
140
|
let debtBank = debtMint && debtMint !== web3_js_1.PublicKey.default
|
|
147
|
-
? await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(
|
|
141
|
+
? await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(marginfiAccounts_1.MARGINFI_ACCOUNTS[debtMint.toString()].bank))
|
|
148
142
|
: null;
|
|
149
143
|
let supplyUsage = undefined;
|
|
150
144
|
let debtUsage = undefined;
|
|
@@ -235,8 +235,8 @@ async function positionStateWithLatestPrices(state, supplyPrice, debtPrice) {
|
|
|
235
235
|
};
|
|
236
236
|
}
|
|
237
237
|
function createFakePositionState(supply, debt, maxLtvBps, liqThresholdBps) {
|
|
238
|
-
const supplyDecimals = constants_1.
|
|
239
|
-
const debtDecimals = constants_1.
|
|
238
|
+
const supplyDecimals = constants_1.TOKEN_INFO[supply.mint.toString()].decimals;
|
|
239
|
+
const debtDecimals = constants_1.TOKEN_INFO[debt.mint.toString()].decimals;
|
|
240
240
|
const supplyUsd = supply.amountUsed * supply.price;
|
|
241
241
|
const debtUsd = debt.amountUsed * debt.price;
|
|
242
242
|
return {
|
package/package.json
CHANGED
|
@@ -16,6 +16,7 @@ import { SolautoClient, SolautoClientArgs } from "./solautoClient";
|
|
|
16
16
|
import { MarginfiAssetAccounts } from "../types/accounts";
|
|
17
17
|
import {
|
|
18
18
|
DEFAULT_MARGINFI_GROUP,
|
|
19
|
+
MARGINFI_ACCOUNTS,
|
|
19
20
|
MARGINFI_ACCOUNTS_LOOKUP_TABLE,
|
|
20
21
|
} from "../constants/marginfiAccounts";
|
|
21
22
|
import {
|
|
@@ -108,12 +109,9 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
108
109
|
? toWeb3JsPublicKey(marginfiAccountData.group)
|
|
109
110
|
: args.marginfiGroup ?? new PublicKey(DEFAULT_MARGINFI_GROUP);
|
|
110
111
|
|
|
111
|
-
this.marginfiSupplyAccounts =
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
this.marginfiDebtAccounts = findMarginfiAccounts({
|
|
115
|
-
mint: this.debtMint.toString(),
|
|
116
|
-
})!;
|
|
112
|
+
this.marginfiSupplyAccounts =
|
|
113
|
+
MARGINFI_ACCOUNTS[this.supplyMint.toString()]!;
|
|
114
|
+
this.marginfiDebtAccounts = MARGINFI_ACCOUNTS[this.debtMint.toString()]!;
|
|
117
115
|
|
|
118
116
|
if (!this.initialized) {
|
|
119
117
|
await this.setIntermediaryMarginfiDetails();
|
|
@@ -171,7 +169,9 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
171
169
|
return [
|
|
172
170
|
...super.lutAccountsToAdd(),
|
|
173
171
|
this.marginfiAccountPk,
|
|
174
|
-
...(this.signer.publicKey.toString() === this.authority.toString()
|
|
172
|
+
...(this.signer.publicKey.toString() === this.authority.toString()
|
|
173
|
+
? [this.intermediaryMarginfiAccountPk]
|
|
174
|
+
: []),
|
|
175
175
|
];
|
|
176
176
|
}
|
|
177
177
|
|
|
@@ -358,17 +358,13 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
358
358
|
: this.positionDebtTa
|
|
359
359
|
);
|
|
360
360
|
vaultDebtTa = publicKey(this.marginfiDebtAccounts.liquidityVault);
|
|
361
|
-
debtVaultAuthority = publicKey(
|
|
362
|
-
this.marginfiDebtAccounts.vaultAuthority
|
|
363
|
-
);
|
|
361
|
+
debtVaultAuthority = publicKey(this.marginfiDebtAccounts.vaultAuthority);
|
|
364
362
|
}
|
|
365
363
|
|
|
366
364
|
let supplyPriceOracle: UmiPublicKey | undefined = undefined;
|
|
367
365
|
let debtPriceOracle: UmiPublicKey | undefined = undefined;
|
|
368
366
|
if (args.__kind === "Withdraw" || args.__kind === "Borrow") {
|
|
369
|
-
supplyPriceOracle = publicKey(
|
|
370
|
-
this.marginfiSupplyAccounts.priceOracle
|
|
371
|
-
);
|
|
367
|
+
supplyPriceOracle = publicKey(this.marginfiSupplyAccounts.priceOracle);
|
|
372
368
|
debtPriceOracle = publicKey(this.marginfiDebtAccounts.priceOracle);
|
|
373
369
|
}
|
|
374
370
|
|
|
@@ -512,8 +508,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
512
508
|
},
|
|
513
509
|
{
|
|
514
510
|
pubkey: publicKey(
|
|
515
|
-
findMarginfiAccounts(
|
|
516
|
-
.priceOracle
|
|
511
|
+
findMarginfiAccounts(toWeb3JsPublicKey(x.bankPk)).priceOracle
|
|
517
512
|
),
|
|
518
513
|
isSigner: false,
|
|
519
514
|
isWritable: false,
|
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
import { NATIVE_MINT } from "@solana/spl-token";
|
|
2
|
-
import { USDC_MINT } from "./tokenConstants";
|
|
2
|
+
import { B_SOL, JUP, USDC_MINT } from "./tokenConstants";
|
|
3
3
|
import { MarginfiAssetAccounts } from "../types/accounts";
|
|
4
4
|
|
|
5
5
|
export const DEFAULT_MARGINFI_GROUP = "4qp6Fx6tnZkY5Wropq9wUYgtFxXKwE6viZxFHg3rdAG8";
|
|
6
6
|
|
|
7
7
|
export const MARGINFI_ACCOUNTS: { [key: string]: MarginfiAssetAccounts } = {
|
|
8
|
-
|
|
9
|
-
mint: NATIVE_MINT.toString(),
|
|
8
|
+
[NATIVE_MINT.toString()]: {
|
|
10
9
|
bank: "CCKtUs6Cgwo4aaQUmBPmyoApH2gUDErxNZCAntD6LYGh",
|
|
11
10
|
liquidityVault: "2eicbpitfJXDwqCuFAmPgDP7t2oUotnAzbGzRKLMgSLe",
|
|
12
11
|
vaultAuthority: "DD3AeAssFvjqTvRTrRAtpfjkBF8FpVKnFuwnMLN9haXD",
|
|
13
12
|
priceOracle: "7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE"
|
|
14
13
|
},
|
|
15
|
-
|
|
16
|
-
mint: USDC_MINT,
|
|
14
|
+
[USDC_MINT]: {
|
|
17
15
|
bank: "2s37akK2eyBbp8DZgCm7RtsaEz8eJP3Nxd4urLHQv7yB",
|
|
18
16
|
liquidityVault: "7jaiZR5Sk8hdYN9MxTpczTcwbWpb5WEoxSANuUwveuat",
|
|
19
17
|
vaultAuthority: "3uxNepDbmkDNq6JhRja5Z8QwbTrfmkKP8AKZV5chYDGG",
|
|
20
18
|
priceOracle: "Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX"
|
|
19
|
+
},
|
|
20
|
+
[B_SOL]: {
|
|
21
|
+
bank: "6hS9i46WyTq1KXcoa2Chas2Txh9TJAVr6n1t3tnrE23K",
|
|
22
|
+
liquidityVault: "2WMipeKDB2CENxbzdmnVrRbsxCA2LY6kCtBe6AAqDP9p",
|
|
23
|
+
vaultAuthority: "8RcZHucpVHkHWRRdMhJZsxBK9mqKSYnMKGqtF84U8YEo",
|
|
24
|
+
priceOracle: "5cN76Xm2Dtx9MnrQqBDeZZRsWruTTcw37UruznAdSvvE",
|
|
25
|
+
},
|
|
26
|
+
[JUP]: {
|
|
27
|
+
bank: "Guu5uBc8k1WK1U2ihGosNaCy57LSgCkpWAabtzQqrQf8",
|
|
28
|
+
liquidityVault: "4w49W4fNDn778wsBa6TNq9hvebZKU17ymsptrEZ8zrsm",
|
|
29
|
+
vaultAuthority: "2MBwwAhL3c73Jy7HkWd9ofzh1bU39JBabrZCFQR2tUof",
|
|
30
|
+
priceOracle: "7dbob1psH1iZBS7qPsm3Kwbf5DzSXK8Jyg31CTgTnxH5",
|
|
21
31
|
}
|
|
22
32
|
};
|
|
23
33
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NATIVE_MINT } from "@solana/spl-token";
|
|
2
|
-
import { USDC_MINT } from "./tokenConstants";
|
|
2
|
+
import { B_SOL, JUP, USDC_MINT } from "./tokenConstants";
|
|
3
3
|
|
|
4
4
|
// https://pyth.network/developers/price-feed-ids#solana-stable
|
|
5
5
|
export const PYTH_PRICE_FEED_IDS = {
|
|
@@ -7,4 +7,6 @@ export const PYTH_PRICE_FEED_IDS = {
|
|
|
7
7
|
"0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
|
8
8
|
[USDC_MINT]:
|
|
9
9
|
"0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
10
|
-
|
|
10
|
+
[B_SOL]: "0x89875379e70f8fbadc17aef315adf3a8d5d160b811435537e03c97e8aac97d9c",
|
|
11
|
+
[JUP]: "0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996",
|
|
12
|
+
};
|
|
@@ -1,19 +1,37 @@
|
|
|
1
1
|
import { NATIVE_MINT } from "@solana/spl-token";
|
|
2
2
|
|
|
3
|
-
// When adding token ensure a price feed is provided in pythConstants.ts & the token is
|
|
3
|
+
// When adding token ensure a price feed is provided in pythConstants.ts & the token is in TOKEN_INFO
|
|
4
4
|
export const USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
5
|
+
export const B_SOL = "bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1";
|
|
6
|
+
export const JUP = "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN";
|
|
5
7
|
|
|
6
8
|
|
|
7
9
|
export const ALL_SUPPORTED_TOKENS = [
|
|
8
10
|
NATIVE_MINT.toString(),
|
|
9
11
|
USDC_MINT,
|
|
12
|
+
B_SOL,
|
|
13
|
+
JUP,
|
|
10
14
|
];
|
|
11
15
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
interface TokenInfo {
|
|
17
|
+
decimals: number;
|
|
18
|
+
isStableCoin?: boolean;
|
|
19
|
+
isLST?: boolean;
|
|
20
|
+
}
|
|
16
21
|
|
|
17
|
-
export const
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
export const TOKEN_INFO: { [key: string]: TokenInfo } = {
|
|
23
|
+
[NATIVE_MINT.toString()]: {
|
|
24
|
+
decimals: 9,
|
|
25
|
+
},
|
|
26
|
+
[USDC_MINT]: {
|
|
27
|
+
decimals: 6,
|
|
28
|
+
isStableCoin: true
|
|
29
|
+
},
|
|
30
|
+
[B_SOL]: {
|
|
31
|
+
decimals: 9,
|
|
32
|
+
isLST: true
|
|
33
|
+
},
|
|
34
|
+
[JUP]: {
|
|
35
|
+
decimals: 6
|
|
36
|
+
}
|
|
37
|
+
};
|
package/src/types/accounts.ts
CHANGED
|
@@ -23,23 +23,16 @@ import { USD_DECIMALS } from "../constants/generalAccounts";
|
|
|
23
23
|
import { LivePositionUpdates } from "./solauto/generalUtils";
|
|
24
24
|
import { currentUnixSecondsSolana } from "./solanaUtils";
|
|
25
25
|
|
|
26
|
-
export function findMarginfiAccounts({
|
|
27
|
-
mint,
|
|
28
|
-
bank,
|
|
29
|
-
}: {
|
|
30
|
-
mint?: string;
|
|
31
|
-
bank?: string;
|
|
32
|
-
}): MarginfiAssetAccounts {
|
|
26
|
+
export function findMarginfiAccounts(bank: PublicKey): MarginfiAssetAccounts {
|
|
33
27
|
for (const key in MARGINFI_ACCOUNTS) {
|
|
34
28
|
const account = MARGINFI_ACCOUNTS[key];
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (bank && account.bank.toString().toLowerCase() === bank.toLowerCase()) {
|
|
29
|
+
if (
|
|
30
|
+
account.bank.toString().toLowerCase() === bank.toString().toLowerCase()
|
|
31
|
+
) {
|
|
39
32
|
return account;
|
|
40
33
|
}
|
|
41
34
|
}
|
|
42
|
-
throw new Error(`Marginfi accounts not found by the
|
|
35
|
+
throw new Error(`Marginfi accounts not found by the bank: ${bank}`);
|
|
43
36
|
}
|
|
44
37
|
|
|
45
38
|
export async function getMaxLtvAndLiqThreshold(
|
|
@@ -57,21 +50,18 @@ export async function getMaxLtvAndLiqThreshold(
|
|
|
57
50
|
if (!supply.bank || supply.bank === null) {
|
|
58
51
|
supply.bank = await safeFetchBank(
|
|
59
52
|
umi,
|
|
60
|
-
publicKey(
|
|
61
|
-
findMarginfiAccounts({
|
|
62
|
-
mint: supply.mint.toString(),
|
|
63
|
-
}).bank
|
|
64
|
-
)
|
|
53
|
+
publicKey(MARGINFI_ACCOUNTS[supply.mint.toString()].bank)
|
|
65
54
|
);
|
|
66
55
|
}
|
|
67
56
|
|
|
68
|
-
if (
|
|
57
|
+
if (
|
|
58
|
+
(!debt.bank || debt.bank === null) &&
|
|
59
|
+
!debt.mint.equals(PublicKey.default)
|
|
60
|
+
) {
|
|
69
61
|
debt.bank = await safeFetchBank(
|
|
70
62
|
umi,
|
|
71
63
|
publicKey(
|
|
72
|
-
|
|
73
|
-
mint: debt.mint.toString(),
|
|
74
|
-
}).bank
|
|
64
|
+
MARGINFI_ACCOUNTS[debt.mint.toString()].bank
|
|
75
65
|
)
|
|
76
66
|
);
|
|
77
67
|
}
|
|
@@ -248,14 +238,14 @@ export async function getMarginfiAccountPositionState(
|
|
|
248
238
|
supplyMint && supplyMint !== PublicKey.default
|
|
249
239
|
? await safeFetchBank(
|
|
250
240
|
umi,
|
|
251
|
-
publicKey(
|
|
241
|
+
publicKey(MARGINFI_ACCOUNTS[supplyMint.toString()].bank)
|
|
252
242
|
)
|
|
253
243
|
: null;
|
|
254
244
|
let debtBank: Bank | null =
|
|
255
245
|
debtMint && debtMint !== PublicKey.default
|
|
256
246
|
? await safeFetchBank(
|
|
257
247
|
umi,
|
|
258
|
-
publicKey(
|
|
248
|
+
publicKey(MARGINFI_ACCOUNTS[debtMint.toString()].bank)
|
|
259
249
|
)
|
|
260
250
|
: null;
|
|
261
251
|
|
|
@@ -23,7 +23,7 @@ import { getReferralState } from "../accountUtils";
|
|
|
23
23
|
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
|
24
24
|
import {
|
|
25
25
|
ALL_SUPPORTED_TOKENS,
|
|
26
|
-
|
|
26
|
+
TOKEN_INFO,
|
|
27
27
|
USD_DECIMALS,
|
|
28
28
|
} from "../../constants";
|
|
29
29
|
import {
|
|
@@ -368,8 +368,8 @@ export function createFakePositionState(
|
|
|
368
368
|
maxLtvBps: number,
|
|
369
369
|
liqThresholdBps: number
|
|
370
370
|
): PositionState {
|
|
371
|
-
const supplyDecimals =
|
|
372
|
-
const debtDecimals =
|
|
371
|
+
const supplyDecimals = TOKEN_INFO[supply.mint.toString()].decimals;
|
|
372
|
+
const debtDecimals = TOKEN_INFO[debt.mint.toString()].decimals;
|
|
373
373
|
|
|
374
374
|
const supplyUsd = supply.amountUsed * supply.price;
|
|
375
375
|
const debtUsd = debt.amountUsed * debt.price;
|