@haven-fi/solauto-sdk 1.0.474 → 1.0.476

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, {
@@ -255,7 +255,7 @@ class TransactionsManager {
255
255
  }
256
256
  async updateLut(tx, newLut) {
257
257
  const updateLutTxName = `${newLut ? "create" : "update"} lookup table`;
258
- await (0, generalUtils_1.retryWithExponentialBackoff)(async (attemptNum, prevError) => await this.sendTransaction(tx, updateLutTxName, attemptNum, this.getUpdatedPriorityFeeSetting(prevError, attemptNum), "skip-simulation"), 3, 150, this.errorsToThrow);
258
+ await (0, generalUtils_1.retryWithExponentialBackoff)(async (attemptNum, prevError) => await this.sendTransaction(tx, updateLutTxName, attemptNum, this.getUpdatedPriorityFeeSetting(prevError, attemptNum), "skip-simulation"), this.signableRetries, 150, this.errorsToThrow);
259
259
  }
260
260
  async clientSend(transactions) {
261
261
  const items = [...transactions];
@@ -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.476",
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;
@@ -406,7 +406,7 @@ export class TransactionsManager {
406
406
  this.getUpdatedPriorityFeeSetting(prevError, attemptNum),
407
407
  "skip-simulation"
408
408
  ),
409
- 3,
409
+ this.signableRetries,
410
410
  150,
411
411
  this.errorsToThrow
412
412
  );
@@ -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
  }