@haven-fi/solauto-sdk 1.0.474 → 1.0.475

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.
@@ -11,7 +11,8 @@ export declare enum OracleSetup {
11
11
  PythLegacy = 1,
12
12
  SwitchboardLegacy = 2,
13
13
  PythPushOracle = 3,
14
- SwitchboardPull = 4
14
+ SwitchboardPull = 4,
15
+ StakedWithPythPush = 5
15
16
  }
16
17
  export type OracleSetupArgs = OracleSetup;
17
18
  export declare function getOracleSetupSerializer(): Serializer<OracleSetupArgs, OracleSetup>;
@@ -1 +1 @@
1
- {"version":3,"file":"oracleSetup.d.ts","sourceRoot":"","sources":["../../../src/marginfi-sdk/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;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAE1C,wBAAgB,wBAAwB,IAAI,UAAU,CACpD,eAAe,EACf,WAAW,CACZ,CAIA"}
1
+ {"version":3,"file":"oracleSetup.d.ts","sourceRoot":"","sources":["../../../src/marginfi-sdk/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;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAE1C,wBAAgB,wBAAwB,IAAI,UAAU,CACpD,eAAe,EACf,WAAW,CACZ,CAIA"}
@@ -17,6 +17,7 @@ var OracleSetup;
17
17
  OracleSetup[OracleSetup["SwitchboardLegacy"] = 2] = "SwitchboardLegacy";
18
18
  OracleSetup[OracleSetup["PythPushOracle"] = 3] = "PythPushOracle";
19
19
  OracleSetup[OracleSetup["SwitchboardPull"] = 4] = "SwitchboardPull";
20
+ OracleSetup[OracleSetup["StakedWithPythPush"] = 5] = "StakedWithPythPush";
20
21
  })(OracleSetup || (exports.OracleSetup = OracleSetup = {}));
21
22
  function getOracleSetupSerializer() {
22
23
  return (0, serializers_1.scalarEnum)(OracleSetup, {
@@ -1 +1 @@
1
- {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,gCAAgC,CACpD,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,CA4C3B;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,CAmEA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,kBAAkB,EAAE,OAAO,UAqB5B;AAmDD,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;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CACN;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACxE,SAAS,CACZ,CA8LA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
1
+ {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,gCAAgC,CACpD,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,CA4C3B;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,CAmEA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,kBAAkB,EAAE,OAAO,UAqB5B;AAmDD,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;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CACN;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACxE,SAAS,CACZ,CAgMA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
@@ -237,7 +237,9 @@ async function getMarginfiAccountPositionState(umi, protocolAccount, marginfiGro
237
237
  if (supplyMint === undefined ||
238
238
  debtMint === undefined ||
239
239
  (!supplyMint.isStableCoin && !debtMint.isStableCoin) ||
240
- (supplyMint.isStableCoin && debtMint.isStableCoin)) {
240
+ (supplyMint.isStableCoin && debtMint.isStableCoin) ||
241
+ supplyBank.config.oracleSetup === marginfi_sdk_1.OracleSetup.StakedWithPythPush ||
242
+ debtBank.config.oracleSetup === marginfi_sdk_1.OracleSetup.StakedWithPythPush) {
241
243
  return undefined;
242
244
  }
243
245
  if (!debtUsage) {
@@ -15,12 +15,14 @@ import {
15
15
  SOLAUTO_PROD_PROGRAM,
16
16
  TOKEN_INFO,
17
17
  USD_DECIMALS,
18
+ WBTC,
19
+ WETH,
18
20
  } from "../src";
19
21
  import { PublicKey } from "@solana/web3.js";
20
- import { NATIVE_MINT } from "@solana/spl-token";
21
22
  import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
22
23
  import path from "path";
23
24
  import { config } from "dotenv";
25
+ import { NATIVE_MINT } from "@solana/spl-token";
24
26
 
25
27
  config({ path: path.join(__dirname, ".env") });
26
28
 
@@ -36,7 +38,13 @@ export function tokenInfo(mint?: PublicKey) {
36
38
  return TOKEN_INFO[mint ? mint.toString() : PublicKey.default.toString()];
37
39
  }
38
40
 
39
- type StrategyType = "Long" | "Short";
41
+ type StrategyType = "Long" | "Ratio" | "Short";
42
+
43
+ const MAJORS_PRIO = {
44
+ [WBTC.toString()]: 0,
45
+ [WETH.toString()]: 1,
46
+ [NATIVE_MINT.toString()]: 2,
47
+ };
40
48
 
41
49
  function solautoStrategyName(supplyMint?: PublicKey, debtMint?: PublicKey) {
42
50
  const supplyInfo = tokenInfo(supplyMint);
@@ -47,11 +55,18 @@ function solautoStrategyName(supplyMint?: PublicKey, debtMint?: PublicKey) {
47
55
  );
48
56
 
49
57
  if (strat === "Long") {
50
- return debtInfo.isStableCoin
51
- ? `${supplyInfo.ticker} Long`
52
- : supplyInfo.ticker
53
- ? `${supplyInfo.ticker}/${debtInfo.ticker} Long`
54
- : "";
58
+ return `${supplyInfo.ticker} Long`;
59
+ } else if (strat === "Ratio") {
60
+ if (
61
+ (supplyInfo.isLST && debtMint?.equals(NATIVE_MINT)) ||
62
+ (supplyMint &&
63
+ debtMint &&
64
+ MAJORS_PRIO[supplyMint!.toString()] > MAJORS_PRIO[debtMint!.toString()])
65
+ ) {
66
+ return `${supplyInfo.ticker}/${debtInfo.ticker} Long`;
67
+ } else {
68
+ return `${debtInfo.ticker}/${supplyInfo.ticker} Short`;
69
+ }
55
70
  } else {
56
71
  return `${debtInfo.ticker} Short`;
57
72
  }
@@ -64,15 +79,12 @@ function strategyType(
64
79
  const supplyInfo = tokenInfo(supplyMint);
65
80
  const debtInfo = tokenInfo(debtMint);
66
81
 
67
- if (supplyInfo.isLST && debtMint.equals(NATIVE_MINT)) {
68
- // Yield
69
- throw new Error("Not yet supported");
82
+ if (!supplyInfo.isStableCoin && !debtInfo.isStableCoin) {
83
+ return "Ratio";
70
84
  } else if (debtInfo.isStableCoin) {
71
85
  return "Long";
72
- } else if (supplyInfo.isStableCoin) {
73
- return "Short";
74
86
  } else {
75
- return "Long";
87
+ return "Short";
76
88
  }
77
89
  }
78
90
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.474",
3
+ "version": "1.0.475",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "Typescript SDK for the Solauto program on the Solana blockchain",
@@ -14,6 +14,7 @@ export enum OracleSetup {
14
14
  SwitchboardLegacy,
15
15
  PythPushOracle,
16
16
  SwitchboardPull,
17
+ StakedWithPythPush,
17
18
  }
18
19
 
19
20
  export type OracleSetupArgs = OracleSetup;
@@ -6,6 +6,7 @@ import {
6
6
  getMarginfiAccountSize,
7
7
  MARGINFI_PROGRAM_ID,
8
8
  MarginfiAccount,
9
+ OracleSetup,
9
10
  safeFetchBank,
10
11
  safeFetchMarginfiAccount,
11
12
  } from "../marginfi-sdk";
@@ -435,7 +436,9 @@ export async function getMarginfiAccountPositionState(
435
436
  supplyMint === undefined ||
436
437
  debtMint === undefined ||
437
438
  (!supplyMint.isStableCoin && !debtMint.isStableCoin) ||
438
- (supplyMint.isStableCoin && debtMint.isStableCoin)
439
+ (supplyMint.isStableCoin && debtMint.isStableCoin) ||
440
+ supplyBank.config.oracleSetup === OracleSetup.StakedWithPythPush ||
441
+ debtBank.config.oracleSetup === OracleSetup.StakedWithPythPush
439
442
  ) {
440
443
  return undefined;
441
444
  }