@haven-fi/solauto-sdk 1.0.835 → 1.0.837
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/switchboardConstants.d.ts.map +1 -1
- package/dist/constants/switchboardConstants.js +2 -25
- package/dist/externalSdks/marginfi/types/oracleSetup.d.ts +22 -1
- package/dist/externalSdks/marginfi/types/oracleSetup.d.ts.map +1 -1
- package/dist/externalSdks/marginfi/types/oracleSetup.js +21 -0
- package/dist/services/flashLoans/marginfiFlProvider.d.ts.map +1 -1
- package/dist/services/flashLoans/marginfiFlProvider.js +5 -8
- package/dist/services/solauto/solautoMarginfiClient.d.ts +3 -0
- package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/services/solauto/solautoMarginfiClient.js +22 -12
- package/dist/services/transactions/manager/transactionsManager.d.ts.map +1 -1
- package/dist/services/transactions/manager/transactionsManager.js +2 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.js +4 -2
- package/dist/utils/marginfi/data.d.ts.map +1 -1
- package/dist/utils/marginfi/data.js +9 -15
- package/dist/utils/marginfi/general.d.ts +5 -0
- package/dist/utils/marginfi/general.d.ts.map +1 -1
- package/dist/utils/marginfi/general.js +36 -8
- package/dist/utils/marginfi/index.d.ts +1 -0
- package/dist/utils/marginfi/index.d.ts.map +1 -1
- package/dist/utils/marginfi/index.js +1 -0
- package/dist/utils/marginfi/prices.d.ts +14 -0
- package/dist/utils/marginfi/prices.d.ts.map +1 -0
- package/dist/utils/marginfi/prices.js +119 -0
- package/dist/utils/switchboardUtils.d.ts +5 -3
- package/dist/utils/switchboardUtils.d.ts.map +1 -1
- package/dist/utils/switchboardUtils.js +35 -12
- package/local/txSandbox.ts +3 -3
- package/package.json +1 -1
- package/src/constants/switchboardConstants.ts +2 -27
- package/src/externalSdks/marginfi/types/oracleSetup.ts +21 -0
- package/src/services/flashLoans/marginfiFlProvider.ts +10 -11
- package/src/services/solauto/solautoMarginfiClient.ts +34 -12
- package/src/services/transactions/manager/transactionsManager.ts +4 -1
- package/src/solautoPosition/marginfiSolautoPositionEx.ts +14 -3
- package/src/utils/marginfi/data.ts +16 -16
- package/src/utils/marginfi/general.ts +46 -12
- package/src/utils/marginfi/index.ts +2 -1
- package/src/utils/marginfi/prices.ts +165 -0
- package/src/utils/switchboardUtils.ts +55 -17
- package/tests/fixtures/README.md +17 -0
- package/tests/fixtures/marginfiOracles.json +82 -0
- package/tests/unit/marginfiOracles.ts +333 -0
- package/tests/unit/transactionsManager.ts +44 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchboardConstants.d.ts","sourceRoot":"","sources":["../../src/constants/switchboardConstants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"switchboardConstants.d.ts","sourceRoot":"","sources":["../../src/constants/switchboardConstants.ts"],"names":[],"mappings":"AAEA,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,eAAO,MAAM,0BAA0B,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAqBxE,CAAC"}
|
|
@@ -34,34 +34,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.SWITCHBOARD_PRICE_FEED_IDS = void 0;
|
|
37
|
-
const spl_token_1 = require("@solana/spl-token");
|
|
38
37
|
const tokens = __importStar(require("./tokenConstants"));
|
|
39
38
|
// https://beta.ondemand.switchboard.xyz/solana/mainnet
|
|
39
|
+
// SOL, JitoSOL, JTO, LST, hSOL and JupSOL banks have migrated to Pyth.
|
|
40
|
+
// Marginfi refreshes must still select the feed from the bank's live configuration.
|
|
40
41
|
exports.SWITCHBOARD_PRICE_FEED_IDS = {
|
|
41
|
-
[spl_token_1.NATIVE_MINT.toString()]: {
|
|
42
|
-
feedId: "4Hmd6PdjVA9auCoScE12iaBogfwS4ZXQ6VZoBeqanwWW",
|
|
43
|
-
feedHash: "0x19089ab8a78c2d6e1b0b17ed50db7d99d7a05260160dfdf727746f656e879539",
|
|
44
|
-
},
|
|
45
|
-
[tokens.JUP_SOL]: {
|
|
46
|
-
feedId: "BRCWKZ1PevwTFzBL2MLZM5hMwCNMWE8NYuS6zFPaXZ6y",
|
|
47
|
-
feedHash: "0xd126e3a968e310748ad925d7d728f3e779121b0c26b7d1a3d061cc2da3093005",
|
|
48
|
-
},
|
|
49
|
-
[tokens.JITO_SOL]: {
|
|
50
|
-
feedId: "5htZ4vPKPjAEg8EJv6JHcaCetMM4XehZo8znQvrp6Ur3",
|
|
51
|
-
feedHash: "0x44f5a7676baf4c6e5eb26fdde2695e7e3e0971071b76ddc622fa71528092ca25"
|
|
52
|
-
},
|
|
53
|
-
[tokens.LST]: {
|
|
54
|
-
feedId: "BWK8Wnybb7rPteNMqJs9uWoqdfYApNym6WgE59BwLe1v",
|
|
55
|
-
feedHash: "0x74e140c452fe29cced80898a51961ed1410c1fe0efbdc970fe5aac986427419e"
|
|
56
|
-
},
|
|
57
|
-
[tokens.JTO]: {
|
|
58
|
-
feedId: "V9o7SWeCFpGpKbWwVQD9x5RnpUEMh8sUAwqi1XnCReu",
|
|
59
|
-
feedHash: "0x1ac1e88ed90c78e2514aa346ba1c90807d12524089920348f29b725832f4e070"
|
|
60
|
-
},
|
|
61
|
-
[tokens.H_SOL]: {
|
|
62
|
-
feedId: "3zCUYzDhuyZREWgngzJfUt2UzQ5SzKCUK5AdwiB2HYmU",
|
|
63
|
-
feedHash: "0x1b8b079fe96e1749f6418405e91407790689623dee8dc123ae26eb833c9d9bd5",
|
|
64
|
-
},
|
|
65
42
|
[tokens.POPCAT]: {
|
|
66
43
|
feedId: "FTcFqwCjAgv2VMaowQ9XSBcesVzFzZkaju25nKio6bki",
|
|
67
44
|
feedHash: "0xeb4f9a43024f8f33786b7291404510af8e94a66e1acb44953a3137878ee7033f",
|
|
@@ -12,7 +12,28 @@ export declare enum OracleSetup {
|
|
|
12
12
|
SwitchboardLegacy = 2,
|
|
13
13
|
PythPushOracle = 3,
|
|
14
14
|
SwitchboardPull = 4,
|
|
15
|
-
StakedWithPythPush = 5
|
|
15
|
+
StakedWithPythPush = 5,
|
|
16
|
+
KaminoPythPush = 6,
|
|
17
|
+
KaminoSwitchboardPull = 7,
|
|
18
|
+
Fixed = 8,
|
|
19
|
+
DriftPythPull = 9,
|
|
20
|
+
DriftSwitchboardPull = 10,
|
|
21
|
+
SolendPythPull = 11,
|
|
22
|
+
SolendSwitchboardPull = 12,
|
|
23
|
+
FixedKamino = 13,
|
|
24
|
+
FixedDrift = 14,
|
|
25
|
+
JuplendPythPull = 15,
|
|
26
|
+
JuplendSwitchboardPull = 16,
|
|
27
|
+
FixedJuplend = 17,
|
|
28
|
+
Scope = 18,
|
|
29
|
+
PythMSOL = 19,
|
|
30
|
+
KaminoMSOL = 20,
|
|
31
|
+
JuplendMSOL = 21,
|
|
32
|
+
PythLST = 22,
|
|
33
|
+
KaminoLST = 23,
|
|
34
|
+
JuplendLST = 24,
|
|
35
|
+
PTPyth = 25,
|
|
36
|
+
PTFixed = 26
|
|
16
37
|
}
|
|
17
38
|
export type OracleSetupArgs = OracleSetup;
|
|
18
39
|
export declare function getOracleSetupSerializer(): Serializer<OracleSetupArgs, OracleSetup>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracleSetup.d.ts","sourceRoot":"","sources":["../../../../src/externalSdks/marginfi/types/oracleSetup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAc,MAAM,sCAAsC,CAAC;AAE9E,oBAAY,WAAW;IACrB,IAAI,IAAA;IACJ,UAAU,IAAA;IACV,iBAAiB,IAAA;IACjB,cAAc,IAAA;IACd,eAAe,IAAA;IACf,kBAAkB,IAAA;
|
|
1
|
+
{"version":3,"file":"oracleSetup.d.ts","sourceRoot":"","sources":["../../../../src/externalSdks/marginfi/types/oracleSetup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAc,MAAM,sCAAsC,CAAC;AAE9E,oBAAY,WAAW;IACrB,IAAI,IAAA;IACJ,UAAU,IAAA;IACV,iBAAiB,IAAA;IACjB,cAAc,IAAA;IACd,eAAe,IAAA;IACf,kBAAkB,IAAA;IAClB,cAAc,IAAA;IACd,qBAAqB,IAAA;IACrB,KAAK,IAAA;IACL,aAAa,IAAA;IACb,oBAAoB,KAAA;IACpB,cAAc,KAAA;IACd,qBAAqB,KAAA;IACrB,WAAW,KAAA;IACX,UAAU,KAAA;IACV,eAAe,KAAA;IACf,sBAAsB,KAAA;IACtB,YAAY,KAAA;IACZ,KAAK,KAAA;IACL,QAAQ,KAAA;IACR,UAAU,KAAA;IACV,WAAW,KAAA;IACX,OAAO,KAAA;IACP,SAAS,KAAA;IACT,UAAU,KAAA;IACV,MAAM,KAAA;IACN,OAAO,KAAA;CACR;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAE1C,wBAAgB,wBAAwB,IAAI,UAAU,CACpD,eAAe,EACf,WAAW,CACZ,CAIA"}
|
|
@@ -18,6 +18,27 @@ var OracleSetup;
|
|
|
18
18
|
OracleSetup[OracleSetup["PythPushOracle"] = 3] = "PythPushOracle";
|
|
19
19
|
OracleSetup[OracleSetup["SwitchboardPull"] = 4] = "SwitchboardPull";
|
|
20
20
|
OracleSetup[OracleSetup["StakedWithPythPush"] = 5] = "StakedWithPythPush";
|
|
21
|
+
OracleSetup[OracleSetup["KaminoPythPush"] = 6] = "KaminoPythPush";
|
|
22
|
+
OracleSetup[OracleSetup["KaminoSwitchboardPull"] = 7] = "KaminoSwitchboardPull";
|
|
23
|
+
OracleSetup[OracleSetup["Fixed"] = 8] = "Fixed";
|
|
24
|
+
OracleSetup[OracleSetup["DriftPythPull"] = 9] = "DriftPythPull";
|
|
25
|
+
OracleSetup[OracleSetup["DriftSwitchboardPull"] = 10] = "DriftSwitchboardPull";
|
|
26
|
+
OracleSetup[OracleSetup["SolendPythPull"] = 11] = "SolendPythPull";
|
|
27
|
+
OracleSetup[OracleSetup["SolendSwitchboardPull"] = 12] = "SolendSwitchboardPull";
|
|
28
|
+
OracleSetup[OracleSetup["FixedKamino"] = 13] = "FixedKamino";
|
|
29
|
+
OracleSetup[OracleSetup["FixedDrift"] = 14] = "FixedDrift";
|
|
30
|
+
OracleSetup[OracleSetup["JuplendPythPull"] = 15] = "JuplendPythPull";
|
|
31
|
+
OracleSetup[OracleSetup["JuplendSwitchboardPull"] = 16] = "JuplendSwitchboardPull";
|
|
32
|
+
OracleSetup[OracleSetup["FixedJuplend"] = 17] = "FixedJuplend";
|
|
33
|
+
OracleSetup[OracleSetup["Scope"] = 18] = "Scope";
|
|
34
|
+
OracleSetup[OracleSetup["PythMSOL"] = 19] = "PythMSOL";
|
|
35
|
+
OracleSetup[OracleSetup["KaminoMSOL"] = 20] = "KaminoMSOL";
|
|
36
|
+
OracleSetup[OracleSetup["JuplendMSOL"] = 21] = "JuplendMSOL";
|
|
37
|
+
OracleSetup[OracleSetup["PythLST"] = 22] = "PythLST";
|
|
38
|
+
OracleSetup[OracleSetup["KaminoLST"] = 23] = "KaminoLST";
|
|
39
|
+
OracleSetup[OracleSetup["JuplendLST"] = 24] = "JuplendLST";
|
|
40
|
+
OracleSetup[OracleSetup["PTPyth"] = 25] = "PTPyth";
|
|
41
|
+
OracleSetup[OracleSetup["PTFixed"] = 26] = "PTFixed";
|
|
21
42
|
})(OracleSetup || (exports.OracleSetup = OracleSetup = {}));
|
|
22
43
|
function getOracleSetupSerializer() {
|
|
23
44
|
return (0, serializers_1.scalarEnum)(OracleSetup, {
|
|
@@ -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;AAmBlD,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;IAEvC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,uBAAuB,CAAiB;IAChD,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,wBAAwB,CAAiB;IACjD,OAAO,CAAC,sBAAsB,CAAiB;IAEzC,UAAU;YAiBF,iBAAiB;
|
|
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;AAmBlD,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;IAEvC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,uBAAuB,CAAiB;IAChD,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,wBAAwB,CAAiB;IACjD,OAAO,CAAC,sBAAsB,CAAiB;IAEzC,UAAU;YAiBF,iBAAiB;YA+DjB,sBAAsB;IAsD9B,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyC3D,gBAAgB,IAAI,SAAS,EAAE;IAY/B,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS;IAI7C,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,kBAAkB;IAM1B,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;IAsDrB,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB;IAiD3D,YAAY,CACV,eAAe,EAAE,SAAS,EAC1B,IAAI,EAAE,SAAS,EACf,aAAa,EAAE,SAAS;CAW3B"}
|
|
@@ -59,14 +59,11 @@ class MarginfiFlProvider extends flProviderBase_1.FlProviderBase {
|
|
|
59
59
|
data: this.debtBankLiquiditySource,
|
|
60
60
|
}),
|
|
61
61
|
]);
|
|
62
|
-
this.supplyBankHealthAccounts =
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
(0, utils_1.getAccountMeta)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.debtBankLiquiditySource.publicKey)),
|
|
68
|
-
(0, utils_1.getAccountMeta)(debtPriceOracle),
|
|
69
|
-
];
|
|
62
|
+
[this.supplyBankHealthAccounts, this.debtBankHealthAccounts] =
|
|
63
|
+
await Promise.all([
|
|
64
|
+
(0, utils_1.getMarginfiBankHealthAccounts)(this.umi, this.supplyBankLiquiditySource, supplyPriceOracle),
|
|
65
|
+
(0, utils_1.getMarginfiBankHealthAccounts)(this.umi, this.debtBankLiquiditySource, debtPriceOracle),
|
|
66
|
+
]);
|
|
70
67
|
}
|
|
71
68
|
async setIntermediaryAccount(sources) {
|
|
72
69
|
const compatibleMarginfiAccounts = this.existingMarginfiAccounts.filter((x) => x.group.toString() == this.liquidityBank(sources[0]).group);
|
|
@@ -15,6 +15,9 @@ export declare class SolautoMarginfiClient extends SolautoClient {
|
|
|
15
15
|
marginfiDebtAccounts: MarginfiAssetAccounts;
|
|
16
16
|
supplyPriceOracle: PublicKey;
|
|
17
17
|
debtPriceOracle: PublicKey;
|
|
18
|
+
private supplyBankHealthAccounts;
|
|
19
|
+
private debtBankHealthAccounts;
|
|
20
|
+
private auxiliaryOracleAccounts;
|
|
18
21
|
initialize(args: SolautoClientArgs): Promise<void>;
|
|
19
22
|
defaultLookupTables(): string[];
|
|
20
23
|
lutAccountsToAdd(): 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,EAIlB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAuB,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,eAAe,EAEf,SAAS,EAET,aAAa,EACb,iBAAiB,EAEjB,gCAAgC,EAOjC,MAAM,iBAAiB,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,EAIlB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAuB,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,eAAe,EAEf,SAAS,EAET,aAAa,EACb,iBAAiB,EAEjB,gCAAgC,EAOjC,MAAM,iBAAiB,CAAC;AAuBzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAMnE,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,4BAA4B,EAAG,WAAW,EAAE,CAAC;IAC7C,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;IACnC,OAAO,CAAC,wBAAwB,CAAiB;IACjD,OAAO,CAAC,sBAAsB,CAAiB;IAC/C,OAAO,CAAC,uBAAuB,CAAqB;IAE9C,UAAU,CAAC,IAAI,EAAE,iBAAiB;IA8FxC,mBAAmB,IAAI,MAAM,EAAE;IAO/B,gBAAgB,IAAI,SAAS,EAAE;IAU/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,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,kBAAkB;IAepD,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUlE,OAAO,CAAC,6BAA6B;IA2FrC,OAAO,CAAC,oCAAoC;IA0D5C,WAAW,CACT,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CA4EtB"}
|
|
@@ -16,6 +16,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
16
16
|
constructor() {
|
|
17
17
|
super(...arguments);
|
|
18
18
|
this.lendingPlatform = generated_1.LendingPlatform.Marginfi;
|
|
19
|
+
this.auxiliaryOracleAccounts = [];
|
|
19
20
|
}
|
|
20
21
|
async initialize(args) {
|
|
21
22
|
await super.initialize(args);
|
|
@@ -58,6 +59,17 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
58
59
|
this.mfiAccounts.bankAccounts[this.marginfiGroup.toString()][this.pos.debtMint.toString()];
|
|
59
60
|
[this.supplyPriceOracle, this.debtPriceOracle] =
|
|
60
61
|
await this.pos.priceOracles();
|
|
62
|
+
const banks = await (0, marginfi_1.fetchAllBank)(this.umi, [
|
|
63
|
+
(0, umi_1.publicKey)(this.marginfiSupplyAccounts.bank),
|
|
64
|
+
(0, umi_1.publicKey)(this.marginfiDebtAccounts.bank),
|
|
65
|
+
]);
|
|
66
|
+
[this.supplyBankHealthAccounts, this.debtBankHealthAccounts] =
|
|
67
|
+
await Promise.all([
|
|
68
|
+
(0, utils_1.getMarginfiBankHealthAccounts)(this.umi, banks[0], this.supplyPriceOracle),
|
|
69
|
+
(0, utils_1.getMarginfiBankHealthAccounts)(this.umi, banks[1], this.debtPriceOracle),
|
|
70
|
+
]);
|
|
71
|
+
this.auxiliaryOracleAccounts = Array.from(new Set(banks.flatMap(utils_1.getMarginfiAuxiliaryOracleAccounts)
|
|
72
|
+
.map((key) => key.toString()))).map((key) => (0, utils_1.getAccountMeta)(new web3_js_1.PublicKey(key)));
|
|
61
73
|
this.log("Marginfi account:", this.marginfiAccountPk.toString());
|
|
62
74
|
this.log("Supply price oracle:", this.supplyPriceOracle.toString());
|
|
63
75
|
this.log("Debt price oracle:", this.debtPriceOracle.toString());
|
|
@@ -69,7 +81,11 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
69
81
|
];
|
|
70
82
|
}
|
|
71
83
|
lutAccountsToAdd() {
|
|
72
|
-
return [
|
|
84
|
+
return [
|
|
85
|
+
...super.lutAccountsToAdd(),
|
|
86
|
+
this.marginfiAccountPk,
|
|
87
|
+
...this.auxiliaryOracleAccounts.map((account) => (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(account.pubkey)),
|
|
88
|
+
];
|
|
73
89
|
}
|
|
74
90
|
marginfiAccountInitialize(marginfiAccount) {
|
|
75
91
|
return (0, marginfi_1.marginfiAccountInitialize)(this.umi, {
|
|
@@ -142,7 +158,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
142
158
|
debtPriceOracle: (0, umi_1.publicKey)(this.debtPriceOracle),
|
|
143
159
|
solautoPosition: (0, umi_1.publicKey)(this.pos.publicKey),
|
|
144
160
|
priceType: priceType ?? generated_1.PriceType.Realtime,
|
|
145
|
-
});
|
|
161
|
+
}).addRemainingAccounts(this.auxiliaryOracleAccounts);
|
|
146
162
|
}
|
|
147
163
|
protocolInteractionIx(args) {
|
|
148
164
|
let tx = super.protocolInteractionIx(args);
|
|
@@ -159,10 +175,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
159
175
|
if (!this.healthCheckRemainingAccounts
|
|
160
176
|
.map((x) => x.pubkey.toString())
|
|
161
177
|
.includes(this.marginfiSupplyAccounts.bank)) {
|
|
162
|
-
this.healthCheckRemainingAccounts.push(...
|
|
163
|
-
(0, utils_1.getAccountMeta)(new web3_js_1.PublicKey(this.marginfiSupplyAccounts.bank)),
|
|
164
|
-
(0, utils_1.getAccountMeta)(this.supplyPriceOracle),
|
|
165
|
-
]);
|
|
178
|
+
this.healthCheckRemainingAccounts.push(...this.supplyBankHealthAccounts);
|
|
166
179
|
}
|
|
167
180
|
return (0, marginfi_1.lendingAccountDeposit)(this.umi, {
|
|
168
181
|
signer: this.signer,
|
|
@@ -178,10 +191,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
178
191
|
case "Borrow": {
|
|
179
192
|
const remainingAccounts = this.healthCheckRemainingAccounts;
|
|
180
193
|
if (!remainingAccounts.find((x) => x.pubkey.toString() === this.marginfiDebtAccounts.bank.toString())) {
|
|
181
|
-
remainingAccounts.push(...
|
|
182
|
-
(0, utils_1.getAccountMeta)(new web3_js_1.PublicKey(this.marginfiDebtAccounts.bank)),
|
|
183
|
-
(0, utils_1.getAccountMeta)(this.debtPriceOracle),
|
|
184
|
-
]);
|
|
194
|
+
remainingAccounts.push(...this.debtBankHealthAccounts);
|
|
185
195
|
}
|
|
186
196
|
return (0, marginfi_1.lendingAccountBorrow)(this.umi, {
|
|
187
197
|
amount: args.fields[0],
|
|
@@ -265,7 +275,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
265
275
|
vaultDebtTa,
|
|
266
276
|
debtVaultAuthority,
|
|
267
277
|
solautoAction: args,
|
|
268
|
-
});
|
|
278
|
+
}).addRemainingAccounts(this.auxiliaryOracleAccounts);
|
|
269
279
|
}
|
|
270
280
|
rebalanceIx(rebalanceStep, data) {
|
|
271
281
|
const preSwapRebalance = rebalanceStep === generated_1.RebalanceStep.PreSwap;
|
|
@@ -322,7 +332,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
322
332
|
flashLoanFeeBps: data.flashLoan?.flFeeBps && isFirstRebalance
|
|
323
333
|
? data.flashLoan.flFeeBps
|
|
324
334
|
: null,
|
|
325
|
-
});
|
|
335
|
+
}).addRemainingAccounts(this.auxiliaryOracleAccounts);
|
|
326
336
|
}
|
|
327
337
|
}
|
|
328
338
|
exports.SolautoMarginfiClient = SolautoMarginfiClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/transactionsManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,aAAa,EAKd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAEL,YAAY,EACZ,eAAe,EAEhB,MAAM,UAAU,CAAC;AAGlB,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAED,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,0BAA0B,GAAG,wBAAwB,EAAE,CAAC;AAEpE,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,SAAS;IAC1D,SAAS,EAAE,CAAC,CAAC;IACb,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAChE,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,qBAAa,mBAAmB,CAAC,CAAC,SAAS,SAAS;IAClD,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IACvB,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAC1E,SAAS,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IACzC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACjD,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACxC,SAAS,CAAC,QAAQ,EAAE,0BAA0B,CAAM;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;gBAEhC,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAoB9B,uBAAuB;IAwDrC,OAAO,CAAC,YAAY;YAiCN,aAAa;IAwB3B,SAAS,CAAC,4BAA4B,CACpC,SAAS,EAAE,KAAK,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM;IAcpB,OAAO,CAAC,mBAAmB;IAkBd,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;IAgCtC,OAAO,CAAC,mBAAmB;YA0Bb,eAAe;YAkDf,6BAA6B;YA8D7B,kCAAkC;YAUlC,cAAc;YA0Ed,qBAAqB;
|
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/transactionsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -309,7 +309,8 @@ class TransactionsManager {
|
|
|
309
309
|
const refreshedSets = await this.refreshItemSets(itemSets, attemptNum, prevError, currentIndex);
|
|
310
310
|
itemSet = refreshedSets ? refreshedSets[0] : undefined;
|
|
311
311
|
}
|
|
312
|
-
if (!itemSet ||
|
|
312
|
+
if (!itemSet ||
|
|
313
|
+
!this.shouldProceedToSend(itemSets.slice(currentIndex), attemptNum)) {
|
|
313
314
|
return;
|
|
314
315
|
}
|
|
315
316
|
const tx = await itemSet.getSingleTransaction();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginfiSolautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/marginfiSolautoPositionEx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAA+B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"marginfiSolautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/marginfiSolautoPositionEx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAA+B,MAAM,0BAA0B,CAAC;AAiB7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,eAAe,kBAA4B;IAC3C,eAAe,YAAiB;IAEzB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAQ;IAC/B,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAQ;IAEpC,WAAW,CACT,SAAS,CAAC,EAAE,SAAS,EACrB,WAAW,CAAC,EAAE,OAAO,GACpB,MAAM,GAAG,SAAS;IAgBrB,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAgB3E,OAAO,CAAC,eAAe;IAMjB,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAW3B,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IASpC,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa3D,OAAO,CAAC,6BAA6B;IAwBrC,gCAAgC,CAAC,KAAK,EAAE,IAAI,EAAE;IAK9C,4BAA4B,CAAC,KAAK,EAAE,IAAI,EAAE;IAQ1C,IAAI,eAAe,cAElB;IAED,IAAI,aAAa,cAEhB;IAED,IAAI,wBAAwB,IAAI,MAAM,CAKrC;IAED,IAAI,qBAAqB,IAAI,MAAM,CAUlC;IAEK,oBAAoB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CA2BjE"}
|
|
@@ -18,10 +18,12 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
|
18
18
|
}
|
|
19
19
|
supplyPrice(priceType, withoutBias) {
|
|
20
20
|
return (this._supplyPrice ??
|
|
21
|
+
(0, utils_1.safeGetMarginfiBankPrice)(this.supplyBank, priceType, !withoutBias ? marginfi_1.PriceBias.Low : undefined) ??
|
|
21
22
|
(0, utils_1.safeGetPrice)(this.supplyMint, priceType, !withoutBias ? marginfi_1.PriceBias.Low : undefined));
|
|
22
23
|
}
|
|
23
24
|
debtPrice(priceType, withoutBias) {
|
|
24
25
|
return (this._debtPrice ??
|
|
26
|
+
(0, utils_1.safeGetMarginfiBankPrice)(this.debtBank, priceType, !withoutBias ? marginfi_1.PriceBias.High : undefined) ??
|
|
25
27
|
(0, utils_1.safeGetPrice)(this.debtMint, priceType, !withoutBias ? marginfi_1.PriceBias.High : undefined));
|
|
26
28
|
}
|
|
27
29
|
getBankAccounts(mint) {
|
|
@@ -47,7 +49,7 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
|
47
49
|
}
|
|
48
50
|
async maxLtvAndLiqThresholdBps() {
|
|
49
51
|
const [supplyBank, debtBank] = await this.getBanks();
|
|
50
|
-
const
|
|
52
|
+
const supplyPrice = await (0, utils_1.getMarginfiBankPrice)(this.umi, supplyBank);
|
|
51
53
|
const [maxLtvBps, liqThresholdBps] = (0, utils_1.calcMarginfiMaxLtvAndLiqThresholdBps)(supplyBank, debtBank, supplyPrice);
|
|
52
54
|
return [maxLtvBps, liqThresholdBps];
|
|
53
55
|
}
|
|
@@ -58,7 +60,7 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
|
58
60
|
return {
|
|
59
61
|
baseUnit: baseUnit,
|
|
60
62
|
baseAmountUsdValue: (0, utils_1.toRoundedUsdValue)((0, utils_1.fromBaseUnit)(baseUnit, (0, utils_1.tokenInfo)(mint).decimals) *
|
|
61
|
-
((0, utils_1.safeGetPrice)(mint) ?? 0)),
|
|
63
|
+
((0, utils_1.safeGetMarginfiBankPrice)(bank ?? null) ?? (0, utils_1.safeGetPrice)(mint) ?? 0)),
|
|
62
64
|
};
|
|
63
65
|
}
|
|
64
66
|
updateSupplyLiquidityDepositable(banks) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAsB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO/E,OAAO,EACL,IAAI,EAGJ,eAAe,EAIhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAgBjD,wBAAsB,mCAAmC,CACvD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,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,
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAsB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO/E,OAAO,EACL,IAAI,EAGJ,eAAe,EAIhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAgBjD,wBAAsB,mCAAmC,CACvD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,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,CA2C3B;AAED,wBAAsB,mCAAmC,CACvD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,eAAe,EAAE,CAAC,CA6B5B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,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,CAyDA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,kBAAkB,EAAE,OAAO,UAqB5B;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,KAAK,EAAE,OAAO,UAgBf;AAwDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAwBhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE;IAAE,EAAE,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,EAChE,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,cAAc,CAAC,EAAE,cAAc,EAC/B,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CACN;IACE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,SAAS,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;CACtB,GACD,SAAS,CACZ,CAwLA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE"}
|
|
@@ -13,10 +13,10 @@ const umi_1 = require("@metaplex-foundation/umi");
|
|
|
13
13
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
|
14
14
|
const constants_1 = require("../../constants");
|
|
15
15
|
const marginfi_1 = require("../../externalSdks/marginfi");
|
|
16
|
-
const priceUtils_1 = require("../priceUtils");
|
|
17
16
|
const generalUtils_1 = require("../generalUtils");
|
|
18
17
|
const numberUtils_1 = require("../numberUtils");
|
|
19
18
|
const general_1 = require("./general");
|
|
19
|
+
const prices_1 = require("./prices");
|
|
20
20
|
async function getMarginfiMaxLtvAndLiqThresholdBps(umi, marginfiGroup, supply, debt, supplyPrice) {
|
|
21
21
|
if (!supply.bank && !(0, generalUtils_1.validPubkey)(supply.mint)) {
|
|
22
22
|
return [0, 0];
|
|
@@ -29,10 +29,7 @@ async function getMarginfiMaxLtvAndLiqThresholdBps(umi, marginfiGroup, supply, d
|
|
|
29
29
|
debt.bank = await (0, marginfi_1.safeFetchBank)(umi, (0, umi_1.publicKey)(bankAccounts[marginfiGroup.toString()][debt.mint.toString()].bank), { commitment: "confirmed" });
|
|
30
30
|
}
|
|
31
31
|
if (!supplyPrice) {
|
|
32
|
-
|
|
33
|
-
(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supply.bank.mint),
|
|
34
|
-
]);
|
|
35
|
-
supplyPrice = price;
|
|
32
|
+
supplyPrice = await (0, prices_1.getMarginfiBankPrice)(umi, supply.bank);
|
|
36
33
|
}
|
|
37
34
|
if (!debt.bank || debt.bank === null) {
|
|
38
35
|
return [0, 0];
|
|
@@ -138,13 +135,13 @@ function getBankLiquidityUsedBaseUnit(bank, asset) {
|
|
|
138
135
|
}
|
|
139
136
|
return BigInt(Math.floor(amountUsed));
|
|
140
137
|
}
|
|
141
|
-
async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment, priceType) {
|
|
138
|
+
async function getTokenUsage(umi, bank, isAsset, shares, amountUsedAdjustment, priceType) {
|
|
142
139
|
let amountUsed = 0;
|
|
143
140
|
let amountCanBeUsed = BigInt(0);
|
|
144
141
|
let marketPrice = 0;
|
|
145
142
|
let originationFee = 0;
|
|
146
143
|
if (bank !== null) {
|
|
147
|
-
|
|
144
|
+
marketPrice = await (0, prices_1.getMarginfiBankPrice)(umi, bank, priceType);
|
|
148
145
|
const [assetShareValue, liabilityShareValue] = getUpToDateShareValues(bank);
|
|
149
146
|
const shareValue = isAsset ? assetShareValue : liabilityShareValue;
|
|
150
147
|
amountUsed = shares * shareValue + Number(amountUsedAdjustment ?? 0);
|
|
@@ -202,9 +199,6 @@ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup
|
|
|
202
199
|
let debtBank = await getBank(umi, debt, marginfiGroup);
|
|
203
200
|
let supplyUsage = undefined;
|
|
204
201
|
let debtUsage = undefined;
|
|
205
|
-
if (supply.mint && debt.mint) {
|
|
206
|
-
await (0, priceUtils_1.fetchTokenPrices)([supply.mint, debt.mint]);
|
|
207
|
-
}
|
|
208
202
|
if (marginfiAccount !== null &&
|
|
209
203
|
marginfiAccount.lendingAccount.balances.filter((x) => x.active).length > 0) {
|
|
210
204
|
const supplyBalances = marginfiAccount.lendingAccount.balances.filter((balance) => balance.active && (0, numberUtils_1.bytesToI80F48)(balance.assetShares.value) > 0);
|
|
@@ -222,7 +216,7 @@ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup
|
|
|
222
216
|
if (!supply.mint) {
|
|
223
217
|
supply.mint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.mint);
|
|
224
218
|
}
|
|
225
|
-
supplyUsage = await getTokenUsage(supplyBank, true, (0, numberUtils_1.bytesToI80F48)(supplyBalances[0].assetShares.value), contextUpdates?.supplyAdjustment, priceType);
|
|
219
|
+
supplyUsage = await getTokenUsage(umi, supplyBank, true, (0, numberUtils_1.bytesToI80F48)(supplyBalances[0].assetShares.value), contextUpdates?.supplyAdjustment, priceType);
|
|
226
220
|
}
|
|
227
221
|
if (debtBalances.length > 0) {
|
|
228
222
|
if (debtBank === null) {
|
|
@@ -233,14 +227,14 @@ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup
|
|
|
233
227
|
if (!debt.mint) {
|
|
234
228
|
debt.mint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(debtBank.mint);
|
|
235
229
|
}
|
|
236
|
-
debtUsage = await getTokenUsage(debtBank, false, (0, numberUtils_1.bytesToI80F48)(debtBalances[0].liabilityShares.value), contextUpdates?.debtAdjustment, priceType);
|
|
230
|
+
debtUsage = await getTokenUsage(umi, debtBank, false, (0, numberUtils_1.bytesToI80F48)(debtBalances[0].liabilityShares.value), contextUpdates?.debtAdjustment, priceType);
|
|
237
231
|
}
|
|
238
232
|
}
|
|
239
233
|
if (supplyBank === null) {
|
|
240
234
|
return undefined;
|
|
241
235
|
}
|
|
242
236
|
if (!supplyUsage) {
|
|
243
|
-
supplyUsage = await getTokenUsage(supplyBank, true, 0, contextUpdates?.supplyAdjustment);
|
|
237
|
+
supplyUsage = await getTokenUsage(umi, supplyBank, true, 0, contextUpdates?.supplyAdjustment, priceType);
|
|
244
238
|
}
|
|
245
239
|
if (debtBank === null) {
|
|
246
240
|
return undefined;
|
|
@@ -257,12 +251,12 @@ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup
|
|
|
257
251
|
return undefined;
|
|
258
252
|
}
|
|
259
253
|
if (!debtUsage) {
|
|
260
|
-
debtUsage = await getTokenUsage(debtBank, false, 0, contextUpdates?.debtAdjustment);
|
|
254
|
+
debtUsage = await getTokenUsage(umi, debtBank, false, 0, contextUpdates?.debtAdjustment, priceType);
|
|
261
255
|
}
|
|
262
256
|
if (!marginfiGroup) {
|
|
263
257
|
marginfiGroup = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.group);
|
|
264
258
|
}
|
|
265
|
-
const supplyPrice = (0,
|
|
259
|
+
const supplyPrice = (0, numberUtils_1.fromBaseUnit)(supplyUsage.baseAmountMarketPriceUsd, constants_1.USD_DECIMALS);
|
|
266
260
|
let [maxLtvBps, liqThresholdBps] = await getMarginfiMaxLtvAndLiqThresholdBps(umi, marginfiGroup, {
|
|
267
261
|
mint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.mint),
|
|
268
262
|
bank: supplyBank,
|
|
@@ -16,6 +16,11 @@ export declare function getMarginfiPriceOracle(umi: Umi, bank: {
|
|
|
16
16
|
pk?: PublicKey;
|
|
17
17
|
data?: Bank;
|
|
18
18
|
}): Promise<PublicKey>;
|
|
19
|
+
export type MarginfiHealthAccountMeta = AccountMeta & {
|
|
20
|
+
oracleAccountCount?: number;
|
|
21
|
+
};
|
|
22
|
+
export declare function getMarginfiAuxiliaryOracleAccounts(bank: Bank): PublicKey[];
|
|
23
|
+
export declare function getMarginfiBankHealthAccounts(umi: Umi, bank: Bank, priceOracle?: PublicKey): Promise<MarginfiHealthAccountMeta[]>;
|
|
19
24
|
interface AllMarginfiAssetAccounts extends MarginfiAssetAccounts {
|
|
20
25
|
mint: PublicKey;
|
|
21
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAKhF,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAEL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,EACP,IAAI,EAIJ,eAAe,EAGhB,MAAM,6BAA6B,CAAC;AASrC,wBAAgB,4BAA4B,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,CActE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,UAAU,OASxE;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,uBAAuB,GACvC,OAAO,CAAC,SAAS,EAAE,CAAC,CA8BtB;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS;;;;;GAanE;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE;IAAE,EAAE,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,sBAiBtC;AAED,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAyB1B;AAED,wBAAsB,0CAA0C,CAC9D,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAKhF,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAEL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,OAAO,EACP,IAAI,EAIJ,eAAe,EAGhB,MAAM,6BAA6B,CAAC;AASrC,wBAAgB,4BAA4B,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,CActE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,UAAU,OASxE;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,uBAAuB,GACvC,OAAO,CAAC,SAAS,EAAE,CAAC,CA8BtB;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS;;;;;GAanE;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE;IAAE,EAAE,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,sBAiBtC;AAGD,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,CAS1E;AAED,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,WAAW,CAAC,EAAE,SAAS,GACtB,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAYtC;AAED,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAyB1B;AAED,wBAAsB,0CAA0C,CAC9D,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,CAMxB;AAED,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAyB3E"}
|
|
@@ -5,6 +5,8 @@ exports.umiWithMarginfiProgram = umiWithMarginfiProgram;
|
|
|
5
5
|
exports.getAllBankRelatedAccounts = getAllBankRelatedAccounts;
|
|
6
6
|
exports.fetchBankAddresses = fetchBankAddresses;
|
|
7
7
|
exports.getMarginfiPriceOracle = getMarginfiPriceOracle;
|
|
8
|
+
exports.getMarginfiAuxiliaryOracleAccounts = getMarginfiAuxiliaryOracleAccounts;
|
|
9
|
+
exports.getMarginfiBankHealthAccounts = getMarginfiBankHealthAccounts;
|
|
8
10
|
exports.findMarginfiAccounts = findMarginfiAccounts;
|
|
9
11
|
exports.getRemainingAccountsForMarginfiHealthCheck = getRemainingAccountsForMarginfiHealthCheck;
|
|
10
12
|
exports.calcMarginfiMaxLtvAndLiqThresholdBps = calcMarginfiMaxLtvAndLiqThresholdBps;
|
|
@@ -84,6 +86,29 @@ async function getMarginfiPriceOracle(umi, bank) {
|
|
|
84
86
|
: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.data.config.oracleKeys[0]);
|
|
85
87
|
return priceOracle;
|
|
86
88
|
}
|
|
89
|
+
function getMarginfiAuxiliaryOracleAccounts(bank) {
|
|
90
|
+
if (bank.config.oracleSetup !== marginfi_1.OracleSetup.PythLST) {
|
|
91
|
+
return [];
|
|
92
|
+
}
|
|
93
|
+
const pool = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.config.oracleKeys[1]);
|
|
94
|
+
if (!(0, generalUtils_1.validPubkey)(pool)) {
|
|
95
|
+
throw new Error(`Missing PythLST stake pool for bank ${bank.publicKey}`);
|
|
96
|
+
}
|
|
97
|
+
return [pool];
|
|
98
|
+
}
|
|
99
|
+
async function getMarginfiBankHealthAccounts(umi, bank, priceOracle) {
|
|
100
|
+
const oracles = [
|
|
101
|
+
priceOracle ?? (await getMarginfiPriceOracle(umi, { data: bank })),
|
|
102
|
+
...getMarginfiAuxiliaryOracleAccounts(bank),
|
|
103
|
+
];
|
|
104
|
+
return [
|
|
105
|
+
{
|
|
106
|
+
...(0, solanaUtils_1.getAccountMeta)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.publicKey)),
|
|
107
|
+
oracleAccountCount: oracles.length,
|
|
108
|
+
},
|
|
109
|
+
...oracles.map((oracle) => (0, solanaUtils_1.getAccountMeta)(oracle)),
|
|
110
|
+
];
|
|
111
|
+
}
|
|
87
112
|
function findMarginfiAccounts(bank) {
|
|
88
113
|
const search = (bankAccounts) => {
|
|
89
114
|
for (const group in bankAccounts) {
|
|
@@ -110,13 +135,8 @@ async function getRemainingAccountsForMarginfiHealthCheck(umi, balance) {
|
|
|
110
135
|
if (!balance.active) {
|
|
111
136
|
return [];
|
|
112
137
|
}
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
});
|
|
116
|
-
return [
|
|
117
|
-
(0, solanaUtils_1.getAccountMeta)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(balance.bankPk)),
|
|
118
|
-
(0, solanaUtils_1.getAccountMeta)(priceOracle),
|
|
119
|
-
];
|
|
138
|
+
const bank = await (0, marginfi_1.fetchBank)(umi, balance.bankPk);
|
|
139
|
+
return getMarginfiBankHealthAccounts(umi, bank);
|
|
120
140
|
}
|
|
121
141
|
function calcMarginfiMaxLtvAndLiqThresholdBps(supplyBank, debtBank, supplyPrice) {
|
|
122
142
|
let maxLtv = (0, numberUtils_1.bytesToI80F48)(supplyBank.config.assetWeightInit.value) /
|
|
@@ -139,7 +159,15 @@ function marginfiAccountEmpty(marginfiAccount) {
|
|
|
139
159
|
(0, numberUtils_1.bytesToI80F48)(x.liabilityShares.value) > 0.000001)) === undefined);
|
|
140
160
|
}
|
|
141
161
|
function composeRemainingAccounts(accs) {
|
|
142
|
-
const banksAndOracles =
|
|
162
|
+
const banksAndOracles = [];
|
|
163
|
+
for (let i = 0; i < accs.length;) {
|
|
164
|
+
const count = 1 + (accs[i].oracleAccountCount ?? 1);
|
|
165
|
+
if (!Number.isInteger(count) || count < 2 || i + count > accs.length) {
|
|
166
|
+
throw new Error("Incomplete Marginfi bank oracle accounts");
|
|
167
|
+
}
|
|
168
|
+
banksAndOracles.push(accs.slice(i, i + count));
|
|
169
|
+
i += count;
|
|
170
|
+
}
|
|
143
171
|
return banksAndOracles
|
|
144
172
|
.sort((a, b) => {
|
|
145
173
|
const aBytes = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(a[0].pubkey).toBuffer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
|
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./data"), exports);
|
|
18
18
|
__exportStar(require("./general"), exports);
|
|
19
|
+
__exportStar(require("./prices"), exports);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RpcAccount, Umi } from "@metaplex-foundation/umi";
|
|
2
|
+
import { Bank, PriceBias } from "../../externalSdks/marginfi";
|
|
3
|
+
import { PriceType } from "../../generated";
|
|
4
|
+
interface BankPrice {
|
|
5
|
+
realtimePrice: number;
|
|
6
|
+
emaPrice: number;
|
|
7
|
+
confInterval: number;
|
|
8
|
+
emaConfInterval: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function getPythLstPriceData(bank: Bank, oracle: RpcAccount, stakePool: RpcAccount, clock: RpcAccount): BankPrice;
|
|
11
|
+
export declare function safeGetMarginfiBankPrice(bank: Bank | null, type?: PriceType, bias?: PriceBias): number | undefined;
|
|
12
|
+
export declare function getMarginfiBankPrice(umi: Umi, bank: Bank, type?: PriceType, bias?: PriceBias): Promise<number>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=prices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/prices.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EACV,GAAG,EAEJ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,IAAI,EAAe,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,UAAU,SAAS;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAeD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,UAAU,GAChB,SAAS,CAsDX;AAiBD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,IAAI,CAAC,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE,SAAS,sBAIjB;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC,CAkCjB"}
|