@haven-fi/solauto-sdk 1.0.635 → 1.0.637

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.
@@ -16,6 +16,7 @@ export declare class RebalanceTxBuilder {
16
16
  private getFlashLoanDetails;
17
17
  private setRebalanceType;
18
18
  private realtimeUsdToEmaUsd;
19
+ private getInitialRebalanceValues;
19
20
  private setRebalanceDetails;
20
21
  private refreshBeforeRebalance;
21
22
  private assembleTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA0BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IARtC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAiC;gBAGxC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAyCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,mBAAmB;YAOb,mBAAmB;YA4CnB,sBAAsB;YAyBtB,mBAAmB;IAkEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
1
+ {"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA0BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IARtC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAiC;gBAGxC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAyCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,yBAAyB;YA4BnB,mBAAmB;YAwBnB,sBAAsB;YAyBtB,mBAAmB;IAkEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
@@ -118,19 +118,26 @@ class RebalanceTxBuilder {
118
118
  return ((realtimeAmountUsd / (0, utils_1.safeGetPrice)(mint, generated_1.PriceType.Realtime)) *
119
119
  (0, utils_1.safeGetPrice)(mint, generated_1.PriceType.Ema));
120
120
  }
121
- async setRebalanceDetails(attemptNum) {
121
+ getInitialRebalanceValues() {
122
122
  let rebalanceValues = this.getRebalanceValues();
123
123
  if (!rebalanceValues) {
124
- return false;
124
+ return undefined;
125
125
  }
126
126
  const postRebalanceEmaUtilRateBps = (0, utils_1.getLiqUtilzationRateBps)(this.realtimeUsdToEmaUsd(rebalanceValues.endResult.supplyUsd, this.client.pos.supplyMint), this.realtimeUsdToEmaUsd(rebalanceValues.endResult.debtUsd, this.client.pos.debtMint), this.client.pos.state.liqThresholdBps);
127
127
  if (postRebalanceEmaUtilRateBps > this.client.pos.maxBoostToBps) {
128
128
  this.priceType = generated_1.PriceType.Ema;
129
129
  rebalanceValues = this.getRebalanceValues();
130
130
  if (!rebalanceValues) {
131
- return false;
131
+ return undefined;
132
132
  }
133
133
  }
134
+ return rebalanceValues;
135
+ }
136
+ async setRebalanceDetails(attemptNum) {
137
+ const rebalanceValues = this.getInitialRebalanceValues();
138
+ if (!rebalanceValues) {
139
+ return false;
140
+ }
134
141
  this.values = rebalanceValues;
135
142
  this.flRequirements = await this.flashLoanRequirements(attemptNum);
136
143
  if (this.flRequirements?.flFeeBps) {
@@ -32,6 +32,8 @@ export declare abstract class SolautoPositionEx {
32
32
  protected lpEnv: ProgramEnv;
33
33
  lpUserAccount?: PublicKey;
34
34
  private readonly firstState;
35
+ protected _supplyPrice?: number;
36
+ protected _debtPrice?: number;
35
37
  constructor(args: PositionExArgs);
36
38
  abstract lendingPool(): Promise<PublicKey>;
37
39
  get exists(): boolean;
@@ -61,8 +63,10 @@ export declare abstract class SolautoPositionEx {
61
63
  get netWorthUsd(): number;
62
64
  get totalSupply(): number;
63
65
  supplyUsd(priceType?: PriceType): number;
66
+ protected supplyPrice(priceType?: PriceType): number | undefined;
64
67
  get totalDebt(): number;
65
68
  debtUsd(priceType?: PriceType): number;
69
+ protected debtPrice(priceType?: PriceType): number | undefined;
66
70
  get supplyLiquidityDepositable(): number;
67
71
  get supplyLiquidityUsdDepositable(): number;
68
72
  get supplyLiquidityUsdAvailable(): number;
@@ -78,9 +82,11 @@ export declare abstract class SolautoPositionEx {
78
82
  abstract refreshPositionState(priceType?: PriceType): Promise<void>;
79
83
  utilizationRateBpsDrift(priceType?: PriceType): Promise<number>;
80
84
  updateSupply(newSupplyUsd: number, supplyPrice?: number): void;
85
+ updateSupplyPrice(price: number): void;
81
86
  updateDebt(newDebtUsd: number, debtPrice?: number): void;
87
+ updateDebtPrice(price: number): void;
82
88
  updateNetWorth(supplyPrice?: number): void;
83
- updateLiqUtilizationRate(priceType?: PriceType): void;
89
+ updateLiqUtilizationRate(supplyUsd?: number, debtUsd?: number, priceType?: PriceType): void;
84
90
  updateWithLatestPrices(data?: {
85
91
  priceType?: PriceType;
86
92
  supplyPrice?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
@@ -105,20 +105,26 @@ class SolautoPositionEx {
105
105
  return (0, utils_1.calcTotalSupply)(this.state);
106
106
  }
107
107
  supplyUsd(priceType) {
108
- const supplyPrice = (0, utils_1.safeGetPrice)(this.supplyMint, priceType);
108
+ const supplyPrice = this.supplyPrice(priceType);
109
109
  return supplyPrice
110
110
  ? (0, utils_1.calcTotalSupply)(this.state) * supplyPrice
111
111
  : (0, utils_1.calcSupplyUsd)(this.state);
112
112
  }
113
+ supplyPrice(priceType) {
114
+ return this._supplyPrice ?? (0, utils_1.safeGetPrice)(this.supplyMint, priceType);
115
+ }
113
116
  get totalDebt() {
114
117
  return (0, utils_1.calcTotalDebt)(this.state);
115
118
  }
116
119
  debtUsd(priceType) {
117
- const debtPrice = (0, utils_1.safeGetPrice)(this.debtMint, priceType);
120
+ const debtPrice = this.debtPrice(priceType);
118
121
  return debtPrice
119
122
  ? (0, utils_1.calcTotalDebt)(this.state) * debtPrice
120
123
  : (0, utils_1.calcDebtUsd)(this.state);
121
124
  }
125
+ debtPrice(priceType) {
126
+ return this._debtPrice ?? (0, utils_1.safeGetPrice)(this.debtMint, priceType);
127
+ }
122
128
  get supplyLiquidityDepositable() {
123
129
  return (0, utils_1.supplyLiquidityDepositable)(this.state);
124
130
  }
@@ -126,7 +132,7 @@ class SolautoPositionEx {
126
132
  return (0, utils_1.supplyLiquidityUsdDepositable)(this.state);
127
133
  }
128
134
  get supplyLiquidityUsdAvailable() {
129
- return this.supplyLiquidityAvailable * ((0, utils_1.safeGetPrice)(this.supplyMint) ?? 0);
135
+ return this.supplyLiquidityAvailable * (this.supplyPrice() ?? 0);
130
136
  }
131
137
  get debtLiquidityAvailable() {
132
138
  return (0, utils_1.debtLiquidityAvailable)(this.state);
@@ -179,8 +185,8 @@ class SolautoPositionEx {
179
185
  return true;
180
186
  }
181
187
  async utilizationRateBpsDrift(priceType) {
182
- const supplyPrice = (0, utils_1.safeGetPrice)(this.supplyMint, priceType) ?? 0;
183
- const debtPrice = (0, utils_1.safeGetPrice)(this.debtMint, priceType) ?? 0;
188
+ const supplyPrice = this.supplyPrice(priceType) ?? 0;
189
+ const debtPrice = this.debtPrice(priceType) ?? 0;
184
190
  const oldState = await (0, utils_1.positionStateWithLatestPrices)(this.firstState, supplyPrice, debtPrice);
185
191
  const newState = await (0, utils_1.positionStateWithLatestPrices)(this.state, supplyPrice, debtPrice);
186
192
  return newState.liqUtilizationRateBps - oldState.liqUtilizationRateBps;
@@ -188,12 +194,18 @@ class SolautoPositionEx {
188
194
  updateSupply(newSupplyUsd, supplyPrice) {
189
195
  this._data.state.supply.amountUsed.baseAmountUsdValue =
190
196
  (0, utils_1.toRoundedUsdValue)(newSupplyUsd);
191
- this._data.state.supply.amountUsed.baseUnit = (0, utils_1.toBaseUnit)(newSupplyUsd / (supplyPrice ?? (0, utils_1.safeGetPrice)(this.supplyMint) ?? 0), this.supplyMintInfo.decimals);
197
+ this._data.state.supply.amountUsed.baseUnit = (0, utils_1.toBaseUnit)(newSupplyUsd / (supplyPrice ?? this.supplyPrice() ?? 0), this.supplyMintInfo.decimals);
198
+ }
199
+ updateSupplyPrice(price) {
200
+ this._supplyPrice = price;
192
201
  }
193
202
  updateDebt(newDebtUsd, debtPrice) {
194
203
  this._data.state.debt.amountUsed.baseAmountUsdValue =
195
204
  (0, utils_1.toRoundedUsdValue)(newDebtUsd);
196
- this._data.state.debt.amountUsed.baseUnit = (0, utils_1.toBaseUnit)(newDebtUsd / (debtPrice ?? (0, utils_1.safeGetPrice)(this.debtMint) ?? 0), this.debtMintInfo.decimals);
205
+ this._data.state.debt.amountUsed.baseUnit = (0, utils_1.toBaseUnit)(newDebtUsd / (debtPrice ?? this.debtPrice() ?? 0), this.debtMintInfo.decimals);
206
+ }
207
+ updateDebtPrice(price) {
208
+ this._debtPrice = price;
197
209
  }
198
210
  updateNetWorth(supplyPrice) {
199
211
  const netWorthUsd = this.supplyUsd() - this.debtUsd();
@@ -201,8 +213,8 @@ class SolautoPositionEx {
201
213
  (0, utils_1.toRoundedUsdValue)(netWorthUsd);
202
214
  this._data.state.netWorth.baseUnit = (0, utils_1.toBaseUnit)(netWorthUsd / (supplyPrice ?? (0, utils_1.safeGetPrice)(this.supplyMint) ?? 0), this.supplyMintInfo.decimals);
203
215
  }
204
- updateLiqUtilizationRate(priceType) {
205
- this._data.state.liqUtilizationRateBps = (0, utils_1.getLiqUtilzationRateBps)(this.supplyUsd(priceType), this.debtUsd(priceType), this.state.liqThresholdBps);
216
+ updateLiqUtilizationRate(supplyUsd, debtUsd, priceType) {
217
+ this._data.state.liqUtilizationRateBps = (0, utils_1.getLiqUtilzationRateBps)(supplyUsd ?? this.supplyUsd(priceType), debtUsd ?? this.debtUsd(priceType), this.state.liqThresholdBps);
206
218
  }
207
219
  async updateWithLatestPrices(data) {
208
220
  if (!data) {
@@ -216,7 +228,7 @@ class SolautoPositionEx {
216
228
  this.updateSupply(supplyUsd, data.supplyPrice);
217
229
  this.updateDebt(debtUsd, data.debtPrice);
218
230
  this.updateNetWorth(data.supplyPrice);
219
- this.updateLiqUtilizationRate();
231
+ this.updateLiqUtilizationRate(this.totalSupply * data.supplyPrice, this.totalDebt * data.debtPrice);
220
232
  }
221
233
  simulateRebalance(unixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
222
234
  this._data.state.lastRefreshed = BigInt(unixTime);
@@ -227,7 +239,7 @@ class SolautoPositionEx {
227
239
  this.updateSupply(rebalance.endResult.supplyUsd, supplyPrice);
228
240
  this.updateDebt(rebalance.endResult.debtUsd, debtPrice);
229
241
  this.updateNetWorth(supplyPrice);
230
- this.updateLiqUtilizationRate();
242
+ this.updateLiqUtilizationRate(rebalance.endResult.supplyUsd, rebalance.endResult.debtUsd);
231
243
  }
232
244
  async refetchPositionData() {
233
245
  this._data = await (0, generated_1.fetchSolautoPosition)(this.umi, (0, umi_web3js_adapters_1.fromWeb3JsPublicKey)(this.publicKey));
@@ -41,7 +41,7 @@ export async function main() {
41
41
  });
42
42
 
43
43
  await client.initialize({
44
- positionId: 3,
44
+ positionId: 1,
45
45
  authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
46
46
  });
47
47
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.635",
3
+ "version": "1.0.637",
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",
@@ -210,10 +210,10 @@ export class RebalanceTxBuilder {
210
210
  );
211
211
  }
212
212
 
213
- private async setRebalanceDetails(attemptNum: number) {
213
+ private getInitialRebalanceValues() {
214
214
  let rebalanceValues = this.getRebalanceValues();
215
215
  if (!rebalanceValues) {
216
- return false;
216
+ return undefined;
217
217
  }
218
218
 
219
219
  const postRebalanceEmaUtilRateBps = getLiqUtilzationRateBps(
@@ -231,13 +231,21 @@ export class RebalanceTxBuilder {
231
231
  this.priceType = PriceType.Ema;
232
232
  rebalanceValues = this.getRebalanceValues();
233
233
  if (!rebalanceValues) {
234
- return false;
234
+ return undefined;
235
235
  }
236
236
  }
237
237
 
238
- this.values = rebalanceValues!;
239
- this.flRequirements = await this.flashLoanRequirements(attemptNum);
238
+ return rebalanceValues;
239
+ }
240
240
 
241
+ private async setRebalanceDetails(attemptNum: number): Promise<boolean> {
242
+ const rebalanceValues = this.getInitialRebalanceValues();
243
+ if (!rebalanceValues) {
244
+ return false;
245
+ }
246
+ this.values = rebalanceValues;
247
+
248
+ this.flRequirements = await this.flashLoanRequirements(attemptNum);
241
249
  if (this.flRequirements?.flFeeBps) {
242
250
  this.values = this.getRebalanceValues(this.flRequirements.flFeeBps)!;
243
251
  }
@@ -80,6 +80,8 @@ export abstract class SolautoPositionEx {
80
80
  public lpUserAccount?: PublicKey = undefined;
81
81
 
82
82
  private readonly firstState!: PositionState;
83
+ protected _supplyPrice?: number;
84
+ protected _debtPrice?: number;
83
85
 
84
86
  constructor(args: PositionExArgs) {
85
87
  this.umi = args.umi;
@@ -211,23 +213,31 @@ export abstract class SolautoPositionEx {
211
213
  }
212
214
 
213
215
  supplyUsd(priceType?: PriceType) {
214
- const supplyPrice = safeGetPrice(this.supplyMint, priceType);
216
+ const supplyPrice = this.supplyPrice(priceType);
215
217
  return supplyPrice
216
218
  ? calcTotalSupply(this.state) * supplyPrice
217
219
  : calcSupplyUsd(this.state);
218
220
  }
219
221
 
222
+ protected supplyPrice(priceType?: PriceType) {
223
+ return this._supplyPrice ?? safeGetPrice(this.supplyMint, priceType);
224
+ }
225
+
220
226
  get totalDebt() {
221
227
  return calcTotalDebt(this.state);
222
228
  }
223
229
 
224
230
  debtUsd(priceType?: PriceType) {
225
- const debtPrice = safeGetPrice(this.debtMint, priceType);
231
+ const debtPrice = this.debtPrice(priceType);
226
232
  return debtPrice
227
233
  ? calcTotalDebt(this.state) * debtPrice
228
234
  : calcDebtUsd(this.state);
229
235
  }
230
236
 
237
+ protected debtPrice(priceType?: PriceType) {
238
+ return this._debtPrice ?? safeGetPrice(this.debtMint, priceType);
239
+ }
240
+
231
241
  get supplyLiquidityDepositable() {
232
242
  return supplyLiquidityDepositable(this.state);
233
243
  }
@@ -237,7 +247,7 @@ export abstract class SolautoPositionEx {
237
247
  }
238
248
 
239
249
  get supplyLiquidityUsdAvailable() {
240
- return this.supplyLiquidityAvailable * (safeGetPrice(this.supplyMint) ?? 0);
250
+ return this.supplyLiquidityAvailable * (this.supplyPrice() ?? 0);
241
251
  }
242
252
 
243
253
  get debtLiquidityAvailable() {
@@ -324,8 +334,8 @@ export abstract class SolautoPositionEx {
324
334
  abstract refreshPositionState(priceType?: PriceType): Promise<void>;
325
335
 
326
336
  async utilizationRateBpsDrift(priceType?: PriceType) {
327
- const supplyPrice = safeGetPrice(this.supplyMint, priceType) ?? 0;
328
- const debtPrice = safeGetPrice(this.debtMint, priceType) ?? 0;
337
+ const supplyPrice = this.supplyPrice(priceType) ?? 0;
338
+ const debtPrice = this.debtPrice(priceType) ?? 0;
329
339
  const oldState = await positionStateWithLatestPrices(
330
340
  this.firstState,
331
341
  supplyPrice,
@@ -344,20 +354,28 @@ export abstract class SolautoPositionEx {
344
354
  this._data.state.supply.amountUsed.baseAmountUsdValue =
345
355
  toRoundedUsdValue(newSupplyUsd);
346
356
  this._data.state.supply.amountUsed.baseUnit = toBaseUnit(
347
- newSupplyUsd / (supplyPrice ?? safeGetPrice(this.supplyMint) ?? 0),
357
+ newSupplyUsd / (supplyPrice ?? this.supplyPrice() ?? 0),
348
358
  this.supplyMintInfo.decimals
349
359
  );
350
360
  }
351
361
 
362
+ updateSupplyPrice(price: number) {
363
+ this._supplyPrice = price;
364
+ }
365
+
352
366
  updateDebt(newDebtUsd: number, debtPrice?: number) {
353
367
  this._data.state.debt.amountUsed.baseAmountUsdValue =
354
368
  toRoundedUsdValue(newDebtUsd);
355
369
  this._data.state.debt.amountUsed.baseUnit = toBaseUnit(
356
- newDebtUsd / (debtPrice ?? safeGetPrice(this.debtMint) ?? 0),
370
+ newDebtUsd / (debtPrice ?? this.debtPrice() ?? 0),
357
371
  this.debtMintInfo.decimals
358
372
  );
359
373
  }
360
374
 
375
+ updateDebtPrice(price: number) {
376
+ this._debtPrice = price;
377
+ }
378
+
361
379
  updateNetWorth(supplyPrice?: number) {
362
380
  const netWorthUsd = this.supplyUsd() - this.debtUsd();
363
381
  this._data.state.netWorth.baseAmountUsdValue =
@@ -368,10 +386,14 @@ export abstract class SolautoPositionEx {
368
386
  );
369
387
  }
370
388
 
371
- updateLiqUtilizationRate(priceType?: PriceType) {
389
+ updateLiqUtilizationRate(
390
+ supplyUsd?: number,
391
+ debtUsd?: number,
392
+ priceType?: PriceType
393
+ ) {
372
394
  this._data.state.liqUtilizationRateBps = getLiqUtilzationRateBps(
373
- this.supplyUsd(priceType),
374
- this.debtUsd(priceType),
395
+ supplyUsd ?? this.supplyUsd(priceType),
396
+ debtUsd ?? this.debtUsd(priceType),
375
397
  this.state.liqThresholdBps
376
398
  );
377
399
  }
@@ -398,7 +420,10 @@ export abstract class SolautoPositionEx {
398
420
  this.updateSupply(supplyUsd, data.supplyPrice);
399
421
  this.updateDebt(debtUsd, data.debtPrice);
400
422
  this.updateNetWorth(data.supplyPrice);
401
- this.updateLiqUtilizationRate();
423
+ this.updateLiqUtilizationRate(
424
+ this.totalSupply * data.supplyPrice,
425
+ this.totalDebt * data.debtPrice
426
+ );
402
427
  }
403
428
 
404
429
  simulateRebalance(
@@ -421,7 +446,10 @@ export abstract class SolautoPositionEx {
421
446
  this.updateSupply(rebalance.endResult.supplyUsd, supplyPrice);
422
447
  this.updateDebt(rebalance.endResult.debtUsd, debtPrice);
423
448
  this.updateNetWorth(supplyPrice);
424
- this.updateLiqUtilizationRate();
449
+ this.updateLiqUtilizationRate(
450
+ rebalance.endResult.supplyUsd,
451
+ rebalance.endResult.debtUsd
452
+ );
425
453
  }
426
454
 
427
455
  async refetchPositionData() {