@haven-fi/solauto-sdk 1.0.638 → 1.0.640
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.js +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.js +1 -1
- package/dist/solautoPosition/solautoPositionEx.d.ts +1 -1
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/solautoPositionEx.js +3 -3
- package/dist/utils/numberUtils.js +3 -3
- package/local/logPositions.ts +3 -8
- package/package.json +1 -1
- package/src/services/rebalance/rebalanceTxBuilder.ts +1 -1
- package/src/solautoPosition/marginfiSolautoPositionEx.ts +1 -1
- package/src/solautoPosition/solautoPositionEx.ts +7 -3
- package/src/utils/numberUtils.ts +4 -4
@@ -21,7 +21,7 @@ class RebalanceTxBuilder {
|
|
21
21
|
this.client.pos.eligibleForRebalance()));
|
22
22
|
}
|
23
23
|
getRebalanceValues(flFee) {
|
24
|
-
return (0, rebalanceValues_1.getRebalanceValues)(this.client.pos, this.priceType, this.targetLiqUtilizationRateBps, solautoFees_1.SolautoFeesBps.create(this.client.isReferred(), this.targetLiqUtilizationRateBps, this.client.pos.netWorthUsd), flFee ?? 0);
|
24
|
+
return (0, rebalanceValues_1.getRebalanceValues)(this.client.pos, this.priceType, this.targetLiqUtilizationRateBps, solautoFees_1.SolautoFeesBps.create(this.client.isReferred(), this.targetLiqUtilizationRateBps, this.client.pos.netWorthUsd(this.priceType)), flFee ?? 0);
|
25
25
|
}
|
26
26
|
getFlLiquiditySource(supplyLiquidityAvailable, debtLiquidityAvailable) {
|
27
27
|
const debtAdjustmentUsd = Math.abs(this.values.debtAdjustmentUsd);
|
@@ -59,7 +59,7 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
59
59
|
return [maxLtvBps, liqThresholdBps];
|
60
60
|
}
|
61
61
|
get supplyLiquidityAvailable() {
|
62
|
-
return (0, utils_1.fromBaseUnit)((0, utils_1.getBankLiquidityAvailableBaseUnit)(this.supplyBank, false), this.
|
62
|
+
return (0, utils_1.fromBaseUnit)((0, utils_1.getBankLiquidityAvailableBaseUnit)(this.supplyBank, false), this.supplyMintInfo.decimals);
|
63
63
|
}
|
64
64
|
async refreshPositionState(priceType) {
|
65
65
|
if (!this.canRefreshPositionState()) {
|
@@ -60,7 +60,7 @@ export declare abstract class SolautoPositionEx {
|
|
60
60
|
get repayFromBps(): number;
|
61
61
|
get maxRepayFromBps(): number;
|
62
62
|
get netWorth(): number;
|
63
|
-
|
63
|
+
netWorthUsd(priceType?: PriceType): number;
|
64
64
|
get totalSupply(): number;
|
65
65
|
supplyUsd(priceType?: PriceType): number;
|
66
66
|
protected supplyPrice(priceType?: PriceType): number | undefined;
|
@@ -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;IAC5C,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAElB,IAAI,EAAE,cAAc;IAiBhC,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAE1C,IAAI,MAAM,YAET;IAED,IAAI,SAAS,cAIZ;IAED,IAAI,UAAU,uBAEb;IAED,IAAI,YAAY,oDAEf;IAED,IAAI,YAAY,WAEf;IAED,qBAAqB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM;IAQpD,SAAS,KAAK,IAAI,IAAI,qBAAqB,CAE1C;IAED,IAAI,KAAK,IAAI,aAAa,CAEzB;IAED,IAAI,QAAQ,IAAI,yBAAyB,GAAG,SAAS,CAEpD;IAED,cAAc,CAAC,QAAQ,EAAE,yBAAyB;IAIlD,IAAI,GAAG,IAAI,WAAW,GAAG,SAAS,CAEjC;IAED,SAAS,CAAC,GAAG,EAAE,WAAW;IAI1B,IAAI,UAAU,IAAI,SAAS,CAE1B;IAED,IAAI,cAAc,IAAI,SAAS,CAE9B;IAED,IAAI,QAAQ,IAAI,SAAS,CAExB;IAED,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,IAAI,UAAU,WAEb;IAED,IAAI,aAAa,WAEhB;IAED,IAAI,YAAY,WAEf;IAED,IAAI,UAAU,WAEb;IAED,IAAI,aAAa,WAEhB;IAED,IAAI,YAAY,WAEf;IAED,IAAI,eAAe,WAElB;IAED,IAAI,QAAQ,WAEX;IAED,
|
1
|
+
{"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
|
@@ -98,8 +98,8 @@ class SolautoPositionEx {
|
|
98
98
|
get netWorth() {
|
99
99
|
return (0, utils_1.calcNetWorth)(this.state);
|
100
100
|
}
|
101
|
-
|
102
|
-
return (
|
101
|
+
netWorthUsd(priceType) {
|
102
|
+
return this.supplyUsd(priceType) - this.debtUsd(priceType);
|
103
103
|
}
|
104
104
|
get totalSupply() {
|
105
105
|
return (0, utils_1.calcTotalSupply)(this.state);
|
@@ -218,7 +218,7 @@ class SolautoPositionEx {
|
|
218
218
|
}
|
219
219
|
simulateRebalance(unixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
|
220
220
|
this._data.state.lastRefreshed = BigInt(unixTime);
|
221
|
-
const rebalance = (0, rebalance_1.getRebalanceValues)(this, generated_1.PriceType.Realtime, targetLiqUtilizationRateBps, rebalance_1.SolautoFeesBps.create(true, targetLiqUtilizationRateBps, this.netWorthUsd));
|
221
|
+
const rebalance = (0, rebalance_1.getRebalanceValues)(this, generated_1.PriceType.Realtime, targetLiqUtilizationRateBps, rebalance_1.SolautoFeesBps.create(true, targetLiqUtilizationRateBps, this.netWorthUsd()));
|
222
222
|
if (!rebalance) {
|
223
223
|
return undefined;
|
224
224
|
}
|
@@ -120,11 +120,11 @@ function getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, offsetFromMaxLt
|
|
120
120
|
1); // -1 to account for any rounding issues
|
121
121
|
}
|
122
122
|
function maxRepayFromBps(maxLtvBps, liqThresholdBps) {
|
123
|
-
return Math.min(
|
123
|
+
return Math.min(9000, getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps - 1000, 0.005));
|
124
124
|
}
|
125
125
|
function maxRepayToBps(maxLtvBps, liqThresholdBps) {
|
126
|
-
return Math.min(maxRepayFromBps(maxLtvBps, liqThresholdBps) - constants_1.MIN_REPAY_GAP_BPS, getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.
|
126
|
+
return Math.min(maxRepayFromBps(maxLtvBps, liqThresholdBps) - constants_1.MIN_REPAY_GAP_BPS, getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.005));
|
127
127
|
}
|
128
128
|
function maxBoostToBps(maxLtvBps, liqThresholdBps) {
|
129
|
-
return Math.min(maxRepayToBps(maxLtvBps, liqThresholdBps), getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.
|
129
|
+
return Math.min(maxRepayToBps(maxLtvBps, liqThresholdBps), getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.005));
|
130
130
|
}
|
package/local/logPositions.ts
CHANGED
@@ -97,7 +97,7 @@ async function main(filterWhitelist: boolean) {
|
|
97
97
|
umi,
|
98
98
|
positions.map((x) => new PublicKey(x.publicKey!))
|
99
99
|
)
|
100
|
-
).sort((a, b) => a.netWorthUsd - b.netWorthUsd);
|
100
|
+
).sort((a, b) => a.netWorthUsd() - b.netWorthUsd());
|
101
101
|
|
102
102
|
const tokensUsed = Array.from(
|
103
103
|
new Set(
|
@@ -115,11 +115,6 @@ async function main(filterWhitelist: boolean) {
|
|
115
115
|
let awaitingBoostPositions = 0;
|
116
116
|
|
117
117
|
for (const pos of positionsEx) {
|
118
|
-
await pos.updateWithLatestPrices({
|
119
|
-
supplyPrice: safeGetPrice(pos.supplyMint),
|
120
|
-
debtPrice: safeGetPrice(pos.debtMint),
|
121
|
-
});
|
122
|
-
|
123
118
|
const actionToTake = pos.eligibleForRebalance(0);
|
124
119
|
|
125
120
|
const repayFrom = pos.settings!.repayToBps + pos.settings!.repayGap;
|
@@ -142,7 +137,7 @@ async function main(filterWhitelist: boolean) {
|
|
142
137
|
`(${pos.authority.toString()} ${pos.positionId})`
|
143
138
|
);
|
144
139
|
console.log(
|
145
|
-
`${pos.strategyName}: $${formatNumber(pos.netWorthUsd, 2, 10000, 2)} ${healthText} ${boostText}`
|
140
|
+
`${pos.strategyName}: $${formatNumber(pos.netWorthUsd(), 2, 10000, 2)} ${healthText} ${boostText}`
|
146
141
|
);
|
147
142
|
}
|
148
143
|
|
@@ -161,7 +156,7 @@ async function main(filterWhitelist: boolean) {
|
|
161
156
|
.map((x) => x.supplyUsd())
|
162
157
|
.reduce((acc, curr) => acc + curr, 0);
|
163
158
|
const netWorth = positionsEx
|
164
|
-
.map((x) => x.netWorthUsd)
|
159
|
+
.map((x) => x.netWorthUsd())
|
165
160
|
.reduce((acc, curr) => acc + curr, 0);
|
166
161
|
|
167
162
|
console.log(`TVL: $${formatNumber(tvl, 2, 10000, 2)}`);
|
package/package.json
CHANGED
@@ -92,7 +92,7 @@ export class MarginfiSolautoPositionEx extends SolautoPositionEx {
|
|
92
92
|
get supplyLiquidityAvailable(): number {
|
93
93
|
return fromBaseUnit(
|
94
94
|
getBankLiquidityAvailableBaseUnit(this.supplyBank, false),
|
95
|
-
this.
|
95
|
+
this.supplyMintInfo.decimals
|
96
96
|
);
|
97
97
|
}
|
98
98
|
|
@@ -204,8 +204,8 @@ export abstract class SolautoPositionEx {
|
|
204
204
|
return calcNetWorth(this.state);
|
205
205
|
}
|
206
206
|
|
207
|
-
|
208
|
-
return
|
207
|
+
netWorthUsd(priceType?: PriceType) {
|
208
|
+
return this.supplyUsd(priceType) - this.debtUsd(priceType);
|
209
209
|
}
|
210
210
|
|
211
211
|
get totalSupply() {
|
@@ -409,7 +409,11 @@ export abstract class SolautoPositionEx {
|
|
409
409
|
this,
|
410
410
|
PriceType.Realtime,
|
411
411
|
targetLiqUtilizationRateBps,
|
412
|
-
SolautoFeesBps.create(
|
412
|
+
SolautoFeesBps.create(
|
413
|
+
true,
|
414
|
+
targetLiqUtilizationRateBps,
|
415
|
+
this.netWorthUsd()
|
416
|
+
)
|
413
417
|
);
|
414
418
|
if (!rebalance) {
|
415
419
|
return undefined;
|
package/src/utils/numberUtils.ts
CHANGED
@@ -168,21 +168,21 @@ export function getMaxLiqUtilizationRateBps(
|
|
168
168
|
|
169
169
|
export function maxRepayFromBps(maxLtvBps: number, liqThresholdBps: number) {
|
170
170
|
return Math.min(
|
171
|
-
|
172
|
-
getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps - 1000, 0.
|
171
|
+
9000,
|
172
|
+
getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps - 1000, 0.005)
|
173
173
|
);
|
174
174
|
}
|
175
175
|
|
176
176
|
export function maxRepayToBps(maxLtvBps: number, liqThresholdBps: number) {
|
177
177
|
return Math.min(
|
178
178
|
maxRepayFromBps(maxLtvBps, liqThresholdBps) - MIN_REPAY_GAP_BPS,
|
179
|
-
getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.
|
179
|
+
getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.005)
|
180
180
|
);
|
181
181
|
}
|
182
182
|
|
183
183
|
export function maxBoostToBps(maxLtvBps: number, liqThresholdBps: number) {
|
184
184
|
return Math.min(
|
185
185
|
maxRepayToBps(maxLtvBps, liqThresholdBps),
|
186
|
-
getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.
|
186
|
+
getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.005)
|
187
187
|
);
|
188
188
|
}
|