@haven-fi/solauto-sdk 1.0.538 → 1.0.539

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.
@@ -1 +1 @@
1
- {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAarE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyC5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO,qBAa/B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,oBAAoB;;;GAc/B"}
1
+ {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAarE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyC5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,qBAwCrD;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO,qBAqB/B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GACzC,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,oBAAoB;;;GAc/B"}
@@ -123,7 +123,14 @@ async function getJupTokenPrices(mints, mayIncludeSpamTokens) {
123
123
  return [];
124
124
  }
125
125
  const data = await (0, jupiterUtils_1.getJupPriceData)(mints, false, mayIncludeSpamTokens);
126
- return Object.values(data).map((x) => x !== null && typeof x === "object" && "price" in x
126
+ const sortedData = {};
127
+ for (const mint of mints) {
128
+ const key = mint.toString();
129
+ if (data.hasOwnProperty(key)) {
130
+ sortedData[key] = data[key];
131
+ }
132
+ }
133
+ return Object.values(sortedData).map((x) => x !== null && typeof x === "object" && "price" in x
127
134
  ? parseFloat(x.price)
128
135
  : 0);
129
136
  }
@@ -7,6 +7,7 @@ export declare function nextAutomationPeriodTimestamp(automation: AutomationSett
7
7
  export declare function eligibleForNextAutomationPeriod(automation: AutomationSettings, currentUnixTime: number): boolean;
8
8
  export declare function getUpdatedValueFromAutomation(currValue: number, targetValue: number, automation: AutomationSettings, currentUnixTimestamp: number): number;
9
9
  export declare function getAdjustedSettingsFromAutomation(settings: SolautoSettingsParameters, currentUnixTime: number): SolautoSettingsParameters;
10
+ export declare function sufficientLiquidityToBoost(positionState: PositionState, positionSettings: SolautoSettingsParameters | undefined, positionDca: DCASettings | undefined, supplyMintPrice: number, debtMintPrice: number): boolean;
10
11
  export declare function eligibleForRebalance(positionState: PositionState, positionSettings: SolautoSettingsParameters | undefined, positionDca: DCASettings | undefined, currentUnixTime: number, supplyMintPrice: number, debtMintPrice: number, bpsDistanceThreshold?: number): RebalanceAction | undefined;
11
12
  export declare function eligibleForRefresh(positionState: PositionState, positionSettings: SolautoSettingsParameters, currentUnixTime: number): boolean;
12
13
  export declare function getSolautoManagedPositions(umi: Umi, authority?: PublicKey, positionTypeFilter?: PositionType): Promise<SolautoPositionDetails[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ exports.nextAutomationPeriodTimestamp = nextAutomationPeriodTimestamp;
6
6
  exports.eligibleForNextAutomationPeriod = eligibleForNextAutomationPeriod;
7
7
  exports.getUpdatedValueFromAutomation = getUpdatedValueFromAutomation;
8
8
  exports.getAdjustedSettingsFromAutomation = getAdjustedSettingsFromAutomation;
9
+ exports.sufficientLiquidityToBoost = sufficientLiquidityToBoost;
9
10
  exports.eligibleForRebalance = eligibleForRebalance;
10
11
  exports.eligibleForRefresh = eligibleForRefresh;
11
12
  exports.getSolautoManagedPositions = getSolautoManagedPositions;
@@ -73,6 +74,22 @@ function getAdjustedSettingsFromAutomation(settings, currentUnixTime) {
73
74
  boostToBps,
74
75
  };
75
76
  }
77
+ function sufficientLiquidityToBoost(positionState, positionSettings, positionDca, supplyMintPrice, debtMintPrice) {
78
+ const limitsUpToDate = positionState.supply.amountCanBeUsed.baseUnit > BigInt(0) ||
79
+ positionState.debt.amountCanBeUsed.baseUnit > BigInt(0);
80
+ if (limitsUpToDate) {
81
+ const values = (0, rebalanceUtils_1.getRebalanceValues)(positionState, positionSettings, positionDca, (0, generalUtils_1.currentUnixSeconds)(), supplyMintPrice, debtMintPrice);
82
+ const debtAvailable = (0, numberUtils_1.debtLiquidityUsdAvailable)(positionState);
83
+ const supplyDepositable = (0, numberUtils_1.supplyLiquidityUsdDepositable)(positionState);
84
+ const sufficientLiquidity = debtAvailable * 0.95 > values.debtAdjustmentUsd &&
85
+ supplyDepositable * 0.95 > values.debtAdjustmentUsd;
86
+ if (!sufficientLiquidity) {
87
+ (0, generalUtils_1.consoleLog)("Insufficient liquidity to further boost");
88
+ }
89
+ return sufficientLiquidity;
90
+ }
91
+ return true;
92
+ }
76
93
  function eligibleForRebalance(positionState, positionSettings, positionDca, currentUnixTime, supplyMintPrice, debtMintPrice, bpsDistanceThreshold = 0) {
77
94
  if (!positionSettings) {
78
95
  return undefined;
@@ -92,20 +109,8 @@ function eligibleForRebalance(positionState, positionSettings, positionDca, curr
92
109
  const repayFrom = positionSettings.repayToBps + positionSettings.repayGap;
93
110
  const boostFrom = boostToBps - positionSettings.boostGap;
94
111
  if (positionState.liqUtilizationRateBps - boostFrom <= bpsDistanceThreshold) {
95
- const limitsUpToDate = positionState.supply.amountCanBeUsed.baseUnit > BigInt(0) ||
96
- positionState.debt.amountCanBeUsed.baseUnit > BigInt(0);
97
- if (limitsUpToDate && positionState.liqUtilizationRateBps < boostFrom) {
98
- const values = (0, rebalanceUtils_1.getRebalanceValues)(positionState, positionSettings, positionDca, (0, generalUtils_1.currentUnixSeconds)(), supplyMintPrice, debtMintPrice);
99
- const debtAvailable = (0, numberUtils_1.debtLiquidityUsdAvailable)(positionState);
100
- const supplyDepositable = (0, numberUtils_1.supplyLiquidityUsdDepositable)(positionState);
101
- const sufficientLiquidity = debtAvailable * 0.95 > values.debtAdjustmentUsd &&
102
- supplyDepositable * 0.95 > values.debtAdjustmentUsd;
103
- if (!sufficientLiquidity) {
104
- (0, generalUtils_1.consoleLog)("Insufficient liquidity to further boost");
105
- }
106
- return sufficientLiquidity ? "boost" : undefined;
107
- }
108
- return "boost";
112
+ const sufficientLiquidity = sufficientLiquidityToBoost(positionState, positionSettings, positionDca, supplyMintPrice, debtMintPrice);
113
+ return sufficientLiquidity ? "boost" : undefined;
109
114
  }
110
115
  else if (repayFrom - positionState.liqUtilizationRateBps <=
111
116
  bpsDistanceThreshold) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.538",
3
+ "version": "1.0.539",
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",
@@ -165,7 +165,15 @@ export async function getJupTokenPrices(
165
165
 
166
166
  const data = await getJupPriceData(mints, false, mayIncludeSpamTokens);
167
167
 
168
- return Object.values(data).map((x) =>
168
+ const sortedData: { [key: string]: any } = {};
169
+ for (const mint of mints) {
170
+ const key = mint.toString();
171
+ if (data.hasOwnProperty(key)) {
172
+ sortedData[key] = data[key];
173
+ }
174
+ }
175
+
176
+ return Object.values(sortedData).map((x) =>
169
177
  x !== null && typeof x === "object" && "price" in x
170
178
  ? parseFloat(x.price as string)
171
179
  : 0
@@ -132,6 +132,42 @@ export function getAdjustedSettingsFromAutomation(
132
132
  };
133
133
  }
134
134
 
135
+ export function sufficientLiquidityToBoost(
136
+ positionState: PositionState,
137
+ positionSettings: SolautoSettingsParameters | undefined,
138
+ positionDca: DCASettings | undefined,
139
+ supplyMintPrice: number,
140
+ debtMintPrice: number
141
+ ) {
142
+ const limitsUpToDate =
143
+ positionState.supply.amountCanBeUsed.baseUnit > BigInt(0) ||
144
+ positionState.debt.amountCanBeUsed.baseUnit > BigInt(0);
145
+
146
+ if (limitsUpToDate) {
147
+ const values = getRebalanceValues(
148
+ positionState!,
149
+ positionSettings,
150
+ positionDca,
151
+ currentUnixSeconds(),
152
+ supplyMintPrice,
153
+ debtMintPrice
154
+ );
155
+
156
+ const debtAvailable = debtLiquidityUsdAvailable(positionState);
157
+ const supplyDepositable = supplyLiquidityUsdDepositable(positionState);
158
+ const sufficientLiquidity =
159
+ debtAvailable * 0.95 > values.debtAdjustmentUsd &&
160
+ supplyDepositable * 0.95 > values.debtAdjustmentUsd;
161
+
162
+ if (!sufficientLiquidity) {
163
+ consoleLog("Insufficient liquidity to further boost");
164
+ }
165
+ return sufficientLiquidity;
166
+ }
167
+
168
+ return true;
169
+ }
170
+
135
171
  export function eligibleForRebalance(
136
172
  positionState: PositionState,
137
173
  positionSettings: SolautoSettingsParameters | undefined,
@@ -171,33 +207,14 @@ export function eligibleForRebalance(
171
207
  const boostFrom = boostToBps - positionSettings.boostGap;
172
208
 
173
209
  if (positionState.liqUtilizationRateBps - boostFrom <= bpsDistanceThreshold) {
174
- const limitsUpToDate =
175
- positionState.supply.amountCanBeUsed.baseUnit > BigInt(0) ||
176
- positionState.debt.amountCanBeUsed.baseUnit > BigInt(0);
177
-
178
- if (limitsUpToDate && positionState.liqUtilizationRateBps < boostFrom) {
179
- const values = getRebalanceValues(
180
- positionState!,
181
- positionSettings,
182
- positionDca,
183
- currentUnixSeconds(),
184
- supplyMintPrice,
185
- debtMintPrice
186
- );
187
-
188
- const debtAvailable = debtLiquidityUsdAvailable(positionState);
189
- const supplyDepositable = supplyLiquidityUsdDepositable(positionState);
190
- const sufficientLiquidity =
191
- debtAvailable * 0.95 > values.debtAdjustmentUsd &&
192
- supplyDepositable * 0.95 > values.debtAdjustmentUsd;
193
-
194
- if (!sufficientLiquidity) {
195
- consoleLog("Insufficient liquidity to further boost");
196
- }
197
- return sufficientLiquidity ? "boost" : undefined;
198
- }
199
-
200
- return "boost";
210
+ const sufficientLiquidity = sufficientLiquidityToBoost(
211
+ positionState,
212
+ positionSettings,
213
+ positionDca,
214
+ supplyMintPrice,
215
+ debtMintPrice
216
+ );
217
+ return sufficientLiquidity ? "boost" : undefined;
201
218
  } else if (
202
219
  repayFrom - positionState.liqUtilizationRateBps <=
203
220
  bpsDistanceThreshold
@@ -65,7 +65,7 @@ describe("Solauto Marginfi tests", async () => {
65
65
  await client.initialize({
66
66
  signer,
67
67
  positionId,
68
- authority: new PublicKey("EBhRj7jbF2EVE21i19JSuCX1BAbnZFYhoKW64HnaZ3kf"),
68
+ authority: new PublicKey("FKYQs7KgRvaKQHxXwb8HKfoBcFdSxLL3JvHWpPdVQ16v"),
69
69
  // new: true,
70
70
  // marginfiAccount: new PublicKey(
71
71
  // ""