@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.
- package/dist/services/rebalance/rebalanceTxBuilder.d.ts +1 -0
- package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -1
- package/dist/services/rebalance/rebalanceTxBuilder.js +10 -3
- package/dist/solautoPosition/solautoPositionEx.d.ts +7 -1
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/solautoPositionEx.js +23 -11
- package/local/txSandbox.ts +1 -1
- package/package.json +1 -1
- package/src/services/rebalance/rebalanceTxBuilder.ts +13 -5
- package/src/solautoPosition/solautoPositionEx.ts +40 -12
@@ -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;
|
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
|
-
|
121
|
+
getInitialRebalanceValues() {
|
122
122
|
let rebalanceValues = this.getRebalanceValues();
|
123
123
|
if (!rebalanceValues) {
|
124
|
-
return
|
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
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAK/C,OAAO,EACL,WAAW,EAEX,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,EACf,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAQL,cAAc,EAiBf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMvD,OAAO,EAAqC,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,UAAU,qBAAsB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC9D,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,UAAU,cAAc;IACtB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,8BAAsB,iBAAiB;IAC9B,GAAG,EAAG,GAAG,CAAC;IACjB,SAAS,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEnC,SAAS,EAAG,SAAS,CAAC;IACtB,eAAe,EAAG,eAAe,CAAC;IACzC,SAAS,CAAC,KAAK,EAAG,qBAAqB,CAAC;IACxC,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,CAAa;IACrC,SAAS,CAAC,KAAK,EAAG,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,CAAa;IAE7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;
|
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 =
|
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 =
|
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 * (
|
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 =
|
183
|
-
const debtPrice =
|
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 ??
|
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 ??
|
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));
|
package/local/txSandbox.ts
CHANGED
package/package.json
CHANGED
@@ -210,10 +210,10 @@ export class RebalanceTxBuilder {
|
|
210
210
|
);
|
211
211
|
}
|
212
212
|
|
213
|
-
private
|
213
|
+
private getInitialRebalanceValues() {
|
214
214
|
let rebalanceValues = this.getRebalanceValues();
|
215
215
|
if (!rebalanceValues) {
|
216
|
-
return
|
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
|
234
|
+
return undefined;
|
235
235
|
}
|
236
236
|
}
|
237
237
|
|
238
|
-
|
239
|
-
|
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 =
|
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 =
|
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 * (
|
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 =
|
328
|
-
const debtPrice =
|
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 ??
|
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 ??
|
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(
|
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() {
|