@haven-fi/solauto-sdk 1.0.553 → 1.0.555
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/clients/solautoClient.d.ts +2 -2
- package/dist/clients/solautoClient.d.ts.map +1 -1
- package/dist/clients/solautoClient.js +23 -23
- package/dist/clients/solautoMarginfiClient.js +1 -1
- package/dist/transactions/transactionUtils.js +7 -7
- package/dist/utils/jupiterUtils.d.ts +1 -1
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +2 -2
- package/dist/utils/marginfiUtils.d.ts +2 -2
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +5 -5
- package/dist/utils/solauto/generalUtils.d.ts +4 -4
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/generalUtils.js +4 -4
- package/package.json +1 -1
- package/src/clients/solautoClient.ts +24 -24
- package/src/clients/solautoMarginfiClient.ts +1 -1
- package/src/transactions/transactionUtils.ts +7 -7
- package/src/utils/jupiterUtils.ts +3 -3
- package/src/utils/marginfiUtils.ts +6 -6
- package/src/utils/solauto/generalUtils.ts +4 -4
@@ -3,7 +3,7 @@ import { PublicKey } from "@solana/web3.js";
|
|
3
3
|
import { TransactionBuilder } from "@metaplex-foundation/umi";
|
4
4
|
import { DCASettings, DCASettingsInpArgs, LendingPlatform, PositionState, SolautoActionArgs, SolautoPosition, SolautoRebalanceType, SolautoRebalanceTypeArgs, SolautoSettingsParameters, SolautoSettingsParametersInpArgs, UpdatePositionDataArgs } from "../generated";
|
5
5
|
import { FlashLoanDetails, RebalanceValues } from "../utils/solauto/rebalanceUtils";
|
6
|
-
import {
|
6
|
+
import { ContextUpdates } from "../utils/solauto/generalUtils";
|
7
7
|
import { ReferralStateManager, ReferralStateManagerArgs } from "./referralStateManager";
|
8
8
|
import { QuoteResponse } from "@jup-ag/api";
|
9
9
|
export interface SolautoClientArgs extends ReferralStateManagerArgs {
|
@@ -31,7 +31,7 @@ export declare abstract class SolautoClient extends ReferralStateManager {
|
|
31
31
|
solautoFeesSupplyTa: PublicKey;
|
32
32
|
solautoFeesDebtTa: PublicKey;
|
33
33
|
authorityLutAddress?: PublicKey;
|
34
|
-
|
34
|
+
contextUpdates: ContextUpdates;
|
35
35
|
private signerSupplyBalance;
|
36
36
|
private signerDebtBalance;
|
37
37
|
initialize(args: SolautoClientArgs): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAEL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAEhC,sBAAsB,EAKvB,MAAM,cAAc,CAAC;AAUtB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAEL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAEhC,sBAAsB,EAKvB,MAAM,cAAc,CAAC;AAUtB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,OAAO,CAAC;IACtB,eAAe,EAAG,SAAS,CAAC;IAC5B,mBAAmB,EAAG,eAAe,GAAG,IAAI,CAAC;IAC7C,oBAAoB,EAAG,aAAa,GAAG,SAAS,CAAC;IAEjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,UAAU,EAAG,SAAS,CAAC;IACvB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,cAAc,EAAG,SAAS,CAAC;IAE3B,QAAQ,EAAG,SAAS,CAAC;IACrB,cAAc,EAAG,SAAS,CAAC;IAC3B,YAAY,EAAG,SAAS,CAAC;IAEzB,mBAAmB,EAAG,SAAS,CAAC;IAChC,iBAAiB,EAAG,SAAS,CAAC;IAE9B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAEhC,cAAc,EAAE,cAAc,CAAwB;IAE7D,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAqB;IAExC,UAAU,CAAC,IAAI,EAAE,iBAAiB;IA8ExC,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAO3C,gBAAgB,IAAI,SAAS,GAAG,SAAS;IAOnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAuB1C,QAAQ,CAAC,eAAe,IAAI,SAAS;IAErC,mBAAmB,IAAI,MAAM,EAAE;IAS/B,gBAAgB,IAAI,SAAS,EAAE;IAkBzB,iCAAiC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAUzD,iBAAiB,IAAI,OAAO,CAC9B;QACE,EAAE,EAAE,kBAAkB,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC;QACb,aAAa,EAAE,SAAS,EAAE,CAAC;KAC5B,GACD,SAAS,CACZ;IA2DK,cAAc,IAAI,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAwCF,uBAAuB,IAAI,yBAAyB,GAAG,SAAS;IAOhE,wBAAwB,IAAI,WAAW,GAAG,SAAS;IAO7C,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAO3D,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IA0BrB,gBAAgB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IAsDlE,eAAe,IAAI,kBAAkB;IAYrC,WAAW,IAAI,kBAAkB;IAgCjC,QAAQ,CAAC,OAAO,IAAI,kBAAkB;IAEtC,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAuFhE,QAAQ,CAAC,WAAW,CAClB,aAAa,EAAE,oBAAoB,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IAErB,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAE3E,QAAQ,CAAC,SAAS,CAChB,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,wBAAwB,EACvC,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,GACnC,kBAAkB;IAEf,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAcjE,QAAQ,CAAC,wBAAwB,IAAI,MAAM;IAC3C,QAAQ,CAAC,0BAA0B,IAAI,MAAM;IAC7C,QAAQ,CAAC,sBAAsB,IAAI,MAAM;CAC1C"}
|
@@ -16,7 +16,7 @@ const referralStateManager_1 = require("./referralStateManager");
|
|
16
16
|
class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
17
17
|
constructor() {
|
18
18
|
super(...arguments);
|
19
|
-
this.
|
19
|
+
this.contextUpdates = new generalUtils_2.ContextUpdates();
|
20
20
|
}
|
21
21
|
async initialize(args) {
|
22
22
|
await super.initialize(args);
|
@@ -75,18 +75,18 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
75
75
|
this.solautoPositionData = await (0, generated_1.safeFetchSolautoPosition)(this.umi, (0, umi_1.publicKey)(this.solautoPosition), { commitment: "confirmed" });
|
76
76
|
}
|
77
77
|
else {
|
78
|
-
if (this.
|
78
|
+
if (this.contextUpdates.activeDca) {
|
79
79
|
this.solautoPositionData.position.dca =
|
80
|
-
this.
|
80
|
+
this.contextUpdates.activeDca;
|
81
81
|
}
|
82
|
-
if (this.
|
82
|
+
if (this.contextUpdates.settings) {
|
83
83
|
this.solautoPositionData.position.settingParams =
|
84
|
-
this.
|
84
|
+
this.contextUpdates.settings;
|
85
85
|
}
|
86
|
-
// All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form
|
86
|
+
// All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form contextUpdates
|
87
87
|
}
|
88
88
|
}
|
89
|
-
this.
|
89
|
+
this.contextUpdates.reset();
|
90
90
|
}
|
91
91
|
defaultLookupTables() {
|
92
92
|
return [
|
@@ -185,11 +185,11 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
185
185
|
};
|
186
186
|
}
|
187
187
|
solautoPositionSettings() {
|
188
|
-
return (this.
|
188
|
+
return (this.contextUpdates.settings ??
|
189
189
|
this.solautoPositionData?.position.settingParams);
|
190
190
|
}
|
191
191
|
solautoPositionActiveDca() {
|
192
|
-
return (this.
|
192
|
+
return (this.contextUpdates.activeDca ??
|
193
193
|
this.solautoPositionData?.position.dca);
|
194
194
|
}
|
195
195
|
async maxLtvAndLiqThresholdBps() {
|
@@ -200,7 +200,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
200
200
|
}
|
201
201
|
openPosition(settingParams, dca) {
|
202
202
|
if (dca && dca.dcaInBaseUnit > 0) {
|
203
|
-
this.
|
203
|
+
this.contextUpdates.new({
|
204
204
|
type: "dcaInBalance",
|
205
205
|
value: {
|
206
206
|
amount: BigInt(dca.dcaInBaseUnit),
|
@@ -209,13 +209,13 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
209
209
|
});
|
210
210
|
}
|
211
211
|
if (settingParams) {
|
212
|
-
this.
|
212
|
+
this.contextUpdates.new({
|
213
213
|
type: "settings",
|
214
214
|
value: settingParams,
|
215
215
|
});
|
216
216
|
}
|
217
217
|
if (dca) {
|
218
|
-
this.
|
218
|
+
this.contextUpdates.new({
|
219
219
|
type: "dca",
|
220
220
|
value: dca,
|
221
221
|
});
|
@@ -240,7 +240,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
240
240
|
if ((0, umi_1.isOption)(args.dca) &&
|
241
241
|
(0, umi_1.isSome)(args.dca) &&
|
242
242
|
args.dca.value.dcaInBaseUnit > 0) {
|
243
|
-
this.
|
243
|
+
this.contextUpdates.new({
|
244
244
|
type: "dcaInBalance",
|
245
245
|
value: {
|
246
246
|
amount: BigInt(args.dca.value.dcaInBaseUnit),
|
@@ -250,13 +250,13 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
250
250
|
}
|
251
251
|
}
|
252
252
|
if ((0, umi_1.isOption)(args.settingParams) && (0, umi_1.isSome)(args.settingParams)) {
|
253
|
-
this.
|
253
|
+
this.contextUpdates.new({
|
254
254
|
type: "settings",
|
255
255
|
value: args.settingParams.value,
|
256
256
|
});
|
257
257
|
}
|
258
258
|
if ((0, umi_1.isOption)(args.dca) && (0, umi_1.isSome)(args.dca)) {
|
259
|
-
this.
|
259
|
+
this.contextUpdates.new({
|
260
260
|
type: "dca",
|
261
261
|
value: args.dca.value,
|
262
262
|
});
|
@@ -297,7 +297,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
297
297
|
positionDcaTa = (0, umi_1.publicKey)(this.positionDebtTa);
|
298
298
|
signerDcaTa = (0, umi_1.publicKey)(this.signerDebtTa);
|
299
299
|
}
|
300
|
-
this.
|
300
|
+
this.contextUpdates.new({
|
301
301
|
type: "cancellingDca",
|
302
302
|
value: this.solautoPositionData.position.dca.tokenType,
|
303
303
|
});
|
@@ -327,20 +327,20 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
327
327
|
}
|
328
328
|
}
|
329
329
|
if (args.__kind === "Deposit") {
|
330
|
-
this.
|
330
|
+
this.contextUpdates.new({
|
331
331
|
type: "supply",
|
332
332
|
value: BigInt(args.fields[0]),
|
333
333
|
});
|
334
334
|
}
|
335
335
|
else if (args.__kind === "Withdraw") {
|
336
336
|
if (args.fields[0].__kind === "Some") {
|
337
|
-
this.
|
337
|
+
this.contextUpdates.new({
|
338
338
|
type: "supply",
|
339
339
|
value: BigInt(args.fields[0].fields[0]) * BigInt(-1),
|
340
340
|
});
|
341
341
|
}
|
342
342
|
else {
|
343
|
-
this.
|
343
|
+
this.contextUpdates.new({
|
344
344
|
type: "supply",
|
345
345
|
value: (this.solautoPositionState?.supply.amountUsed.baseUnit ??
|
346
346
|
BigInt(0)) * BigInt(-1),
|
@@ -348,20 +348,20 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
348
348
|
}
|
349
349
|
}
|
350
350
|
else if (args.__kind === "Borrow") {
|
351
|
-
this.
|
351
|
+
this.contextUpdates.new({
|
352
352
|
type: "debt",
|
353
353
|
value: BigInt(args.fields[0]),
|
354
354
|
});
|
355
355
|
}
|
356
356
|
else {
|
357
357
|
if (args.fields[0].__kind === "Some") {
|
358
|
-
this.
|
358
|
+
this.contextUpdates.new({
|
359
359
|
type: "debt",
|
360
360
|
value: BigInt(args.fields[0].fields[0]) * BigInt(-1),
|
361
361
|
});
|
362
362
|
}
|
363
363
|
else {
|
364
|
-
this.
|
364
|
+
this.contextUpdates.new({
|
365
365
|
type: "debt",
|
366
366
|
value: (this.solautoPositionState?.debt.amountUsed.baseUnit ?? BigInt(0)) *
|
367
367
|
BigInt(-1),
|
@@ -375,7 +375,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
375
375
|
Boolean(this.solautoPositionState) &&
|
376
376
|
Number(this.solautoPositionState.lastUpdated) >
|
377
377
|
(0, generalUtils_1.currentUnixSeconds)() - solautoConstants_1.MIN_POSITION_STATE_FRESHNESS_SECS &&
|
378
|
-
!this.
|
378
|
+
!this.contextUpdates.positionUpdates()) {
|
379
379
|
return this.solautoPositionState;
|
380
380
|
}
|
381
381
|
return undefined;
|
@@ -467,7 +467,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
467
467
|
const useDesignatedMint = !this.selfManaged &&
|
468
468
|
(this.solautoPositionData === null ||
|
469
469
|
!(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey).equals(this.authority));
|
470
|
-
const resp = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, { pk: this.marginfiAccountPk }, this.marginfiGroup, useDesignatedMint ? { mint: this.supplyMint } : undefined, useDesignatedMint ? { mint: this.debtMint } : undefined, this.
|
470
|
+
const resp = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, { pk: this.marginfiAccountPk }, this.marginfiGroup, useDesignatedMint ? { mint: this.supplyMint } : undefined, useDesignatedMint ? { mint: this.debtMint } : undefined, this.contextUpdates);
|
471
471
|
if (resp) {
|
472
472
|
this.supplyBank = resp?.supplyBank;
|
473
473
|
this.debtBank = resp?.debtBank;
|
@@ -323,10 +323,10 @@ async function getTransactionChores(client, tx) {
|
|
323
323
|
const accountsGettingCreated = [];
|
324
324
|
const solautoActions = getSolautoActions(client.umi, tx);
|
325
325
|
choresBefore = choresBefore.add([
|
326
|
-
await transactionChoresBefore(client, accountsGettingCreated, solautoActions, client.
|
326
|
+
await transactionChoresBefore(client, accountsGettingCreated, solautoActions, client.contextUpdates.dcaInBalance),
|
327
327
|
await rebalanceChoresBefore(client, tx, accountsGettingCreated),
|
328
328
|
]);
|
329
|
-
choresAfter = choresAfter.add(transactionChoresAfter(client, solautoActions, client.
|
329
|
+
choresAfter = choresAfter.add(transactionChoresAfter(client, solautoActions, client.contextUpdates.cancellingDca));
|
330
330
|
return [choresBefore, choresAfter];
|
331
331
|
}
|
332
332
|
async function requiresRefreshBeforeRebalance(client) {
|
@@ -341,16 +341,16 @@ async function requiresRefreshBeforeRebalance(client) {
|
|
341
341
|
return true;
|
342
342
|
}
|
343
343
|
else if (client.solautoPositionData && !client.selfManaged) {
|
344
|
-
if (client.
|
345
|
-
client.
|
344
|
+
if (client.contextUpdates.supplyAdjustment > BigInt(0) ||
|
345
|
+
client.contextUpdates.debtAdjustment > BigInt(0)) {
|
346
346
|
return false;
|
347
347
|
}
|
348
348
|
const oldStateWithLatestPrices = await (0, generalUtils_2.positionStateWithLatestPrices)(client.solautoPositionData.state, constants_1.PRICES[client.supplyMint.toString()].price, constants_1.PRICES[client.debtMint.toString()].price);
|
349
349
|
const utilizationRateDiff = Math.abs((client.solautoPositionState?.liqUtilizationRateBps ?? 0) -
|
350
350
|
oldStateWithLatestPrices.liqUtilizationRateBps);
|
351
351
|
client.log("Liq utilization rate diff:", utilizationRateDiff);
|
352
|
-
if (client.
|
353
|
-
client.
|
352
|
+
if (client.contextUpdates.supplyAdjustment === BigInt(0) &&
|
353
|
+
client.contextUpdates.debtAdjustment === BigInt(0) &&
|
354
354
|
utilizationRateDiff >= 10) {
|
355
355
|
client.log("Choosing to refresh before rebalance. Utilization rate diff:", utilizationRateDiff);
|
356
356
|
return true;
|
@@ -365,7 +365,7 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
365
365
|
const supplyPrice = (0, utils_1.safeGetPrice)(client.supplyMint) ?? 0;
|
366
366
|
const debtPrice = (0, utils_1.safeGetPrice)(client.debtMint) ?? 0;
|
367
367
|
if ((client.solautoPositionState?.supply.amountUsed.baseUnit === BigInt(0) &&
|
368
|
-
client.
|
368
|
+
client.contextUpdates.supplyAdjustment === BigInt(0)) ||
|
369
369
|
(targetLiqUtilizationRateBps === undefined &&
|
370
370
|
!(0, generalUtils_2.eligibleForRebalance)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), (0, generalUtils_1.currentUnixSeconds)(), supplyPrice, debtPrice))) {
|
371
371
|
client.log("Not eligible for a rebalance");
|
@@ -23,7 +23,7 @@ export interface JupSwapTransaction {
|
|
23
23
|
setupInstructions: TransactionBuilder;
|
24
24
|
tokenLedgerIx?: TransactionBuilder;
|
25
25
|
swapIx: TransactionBuilder;
|
26
|
-
|
26
|
+
cleanupIx: TransactionBuilder;
|
27
27
|
}
|
28
28
|
export declare function getJupSwapTransaction(signer: Signer, swapDetails: JupSwapDetails, attemptNum?: number): Promise<JupSwapTransaction>;
|
29
29
|
export declare function getJupPriceData(mints: PublicKey[], mayIncludeSpamTokens?: boolean): Promise<{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,0BAkB1D;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,
|
1
|
+
{"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAgBD,wBAAsB,WAAW,CAAC,WAAW,EAAE,YAAY,0BAkB1D;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA2F7B;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,SAAS,EAAE,EAClB,oBAAoB,CAAC,EAAE,OAAO;;GAwC/B"}
|
@@ -81,9 +81,9 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
81
81
|
? (0, umi_1.transactionBuilder)().add((0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.tokenLedgerInstruction)))
|
82
82
|
: undefined,
|
83
83
|
swapIx: (0, umi_1.transactionBuilder)().add((0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.swapInstruction))),
|
84
|
-
|
84
|
+
cleanupIx: instructions.cleanupInstruction
|
85
85
|
? (0, umi_1.transactionBuilder)().add((0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.cleanupInstruction)))
|
86
|
-
:
|
86
|
+
: (0, umi_1.transactionBuilder)(),
|
87
87
|
};
|
88
88
|
}
|
89
89
|
async function getJupPriceData(mints, mayIncludeSpamTokens) {
|
@@ -3,7 +3,7 @@ import { Umi } from "@metaplex-foundation/umi";
|
|
3
3
|
import { Bank, MarginfiAccount } from "../marginfi-sdk";
|
4
4
|
import { MarginfiAssetAccounts } from "../types/accounts";
|
5
5
|
import { PositionState } from "../generated";
|
6
|
-
import {
|
6
|
+
import { ContextUpdates } from "./solauto/generalUtils";
|
7
7
|
interface AllMarginfiAssetAccounts extends MarginfiAssetAccounts {
|
8
8
|
mint: PublicKey;
|
9
9
|
}
|
@@ -34,7 +34,7 @@ type BanksCache = {
|
|
34
34
|
export declare function getMarginfiAccountPositionState(umi: Umi, protocolAccount: {
|
35
35
|
pk: PublicKey;
|
36
36
|
data?: MarginfiAccount;
|
37
|
-
}, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection,
|
37
|
+
}, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, contextUpdates?: ContextUpdates): Promise<{
|
38
38
|
supplyBank: Bank | null;
|
39
39
|
debtBank: Bank | null;
|
40
40
|
state: PositionState;
|
@@ -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,EAIhB,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,
|
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;AAczB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,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,CAyDA;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,cAAc,CAAC,EAAE,cAAc,GAC9B,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,CAiMA;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"}
|
@@ -165,7 +165,7 @@ async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment) {
|
|
165
165
|
padding: new Uint8Array([]),
|
166
166
|
};
|
167
167
|
}
|
168
|
-
async function getMarginfiAccountPositionState(umi, protocolAccount, marginfiGroup, supply, debt,
|
168
|
+
async function getMarginfiAccountPositionState(umi, protocolAccount, marginfiGroup, supply, debt, contextUpdates) {
|
169
169
|
let marginfiAccount = protocolAccount.data ??
|
170
170
|
(await (0, marginfi_sdk_1.safeFetchMarginfiAccount)(umi, (0, umi_1.publicKey)(protocolAccount.pk), {
|
171
171
|
commitment: "confirmed",
|
@@ -208,7 +208,7 @@ async function getMarginfiAccountPositionState(umi, protocolAccount, marginfiGro
|
|
208
208
|
if (!supply.mint) {
|
209
209
|
supply.mint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.mint);
|
210
210
|
}
|
211
|
-
supplyUsage = await getTokenUsage(supplyBank, true, (0, numberUtils_1.bytesToI80F48)(supplyBalances[0].assetShares.value),
|
211
|
+
supplyUsage = await getTokenUsage(supplyBank, true, (0, numberUtils_1.bytesToI80F48)(supplyBalances[0].assetShares.value), contextUpdates?.supplyAdjustment);
|
212
212
|
}
|
213
213
|
if (debtBalances.length > 0) {
|
214
214
|
if (debtBank === null) {
|
@@ -219,14 +219,14 @@ async function getMarginfiAccountPositionState(umi, protocolAccount, marginfiGro
|
|
219
219
|
if (!debt.mint) {
|
220
220
|
debt.mint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(debtBank.mint);
|
221
221
|
}
|
222
|
-
debtUsage = await getTokenUsage(debtBank, false, (0, numberUtils_1.bytesToI80F48)(debtBalances[0].liabilityShares.value),
|
222
|
+
debtUsage = await getTokenUsage(debtBank, false, (0, numberUtils_1.bytesToI80F48)(debtBalances[0].liabilityShares.value), contextUpdates?.debtAdjustment);
|
223
223
|
}
|
224
224
|
}
|
225
225
|
if (supplyBank === null) {
|
226
226
|
return undefined;
|
227
227
|
}
|
228
228
|
if (!supplyUsage) {
|
229
|
-
supplyUsage = await getTokenUsage(supplyBank, true, 0,
|
229
|
+
supplyUsage = await getTokenUsage(supplyBank, true, 0, contextUpdates?.supplyAdjustment);
|
230
230
|
}
|
231
231
|
if (debtBank === null) {
|
232
232
|
return undefined;
|
@@ -243,7 +243,7 @@ async function getMarginfiAccountPositionState(umi, protocolAccount, marginfiGro
|
|
243
243
|
return undefined;
|
244
244
|
}
|
245
245
|
if (!debtUsage) {
|
246
|
-
debtUsage = await getTokenUsage(debtBank, false, 0,
|
246
|
+
debtUsage = await getTokenUsage(debtBank, false, 0, contextUpdates?.debtAdjustment);
|
247
247
|
}
|
248
248
|
const supplyPrice = (0, priceUtils_1.safeGetPrice)(supply.mint);
|
249
249
|
let [maxLtv, liqThreshold] = await getMarginfiMaxLtvAndLiqThreshold(umi, marginfiGroup ?? new web3_js_1.PublicKey(marginfiAccounts_1.DEFAULT_MARGINFI_GROUP), {
|
@@ -24,7 +24,7 @@ interface AssetProps {
|
|
24
24
|
}
|
25
25
|
export declare function createFakePositionState(supply: AssetProps, debt: AssetProps, maxLtvBps: number, liqThresholdBps: number): PositionState;
|
26
26
|
export declare function createSolautoSettings(settings: SolautoSettingsParametersInpArgs): SolautoSettingsParameters;
|
27
|
-
type
|
27
|
+
type ContextAdjustment = {
|
28
28
|
type: "supply";
|
29
29
|
value: bigint;
|
30
30
|
} | {
|
@@ -49,7 +49,7 @@ type PositionAdjustment = {
|
|
49
49
|
type: "jupSwap";
|
50
50
|
value: QuoteResponse;
|
51
51
|
};
|
52
|
-
export declare class
|
52
|
+
export declare class ContextUpdates {
|
53
53
|
supplyAdjustment: bigint;
|
54
54
|
debtAdjustment: bigint;
|
55
55
|
settings: SolautoSettingsParameters | undefined;
|
@@ -60,9 +60,9 @@ export declare class LivePositionUpdates {
|
|
60
60
|
};
|
61
61
|
cancellingDca: TokenType | undefined;
|
62
62
|
jupSwap: QuoteResponse | undefined;
|
63
|
-
new(update:
|
63
|
+
new(update: ContextAdjustment): void;
|
64
64
|
reset(): void;
|
65
|
-
|
65
|
+
positionUpdates(): boolean;
|
66
66
|
}
|
67
67
|
export {};
|
68
68
|
//# sourceMappingURL=generalUtils.d.ts.map
|
@@ -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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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.ContextUpdates = void 0;
|
4
4
|
exports.createDynamicSolautoProgram = createDynamicSolautoProgram;
|
5
5
|
exports.nextAutomationPeriodTimestamp = nextAutomationPeriodTimestamp;
|
6
6
|
exports.eligibleForNextAutomationPeriod = eligibleForNextAutomationPeriod;
|
@@ -401,7 +401,7 @@ function createSolautoSettings(settings) {
|
|
401
401
|
padding1: [],
|
402
402
|
};
|
403
403
|
}
|
404
|
-
class
|
404
|
+
class ContextUpdates {
|
405
405
|
constructor() {
|
406
406
|
this.supplyAdjustment = BigInt(0);
|
407
407
|
this.debtAdjustment = BigInt(0);
|
@@ -456,7 +456,7 @@ class LivePositionUpdates {
|
|
456
456
|
this.cancellingDca = undefined;
|
457
457
|
this.jupSwap = undefined;
|
458
458
|
}
|
459
|
-
|
459
|
+
positionUpdates() {
|
460
460
|
return (this.supplyAdjustment !== BigInt(0) ||
|
461
461
|
this.debtAdjustment !== BigInt(0) ||
|
462
462
|
this.dcaInBalance !== undefined ||
|
@@ -464,4 +464,4 @@ class LivePositionUpdates {
|
|
464
464
|
this.cancellingDca !== undefined);
|
465
465
|
}
|
466
466
|
}
|
467
|
-
exports.
|
467
|
+
exports.ContextUpdates = ContextUpdates;
|
package/package.json
CHANGED
@@ -46,7 +46,7 @@ import {
|
|
46
46
|
SOLAUTO_LUT,
|
47
47
|
} from "../constants/solautoConstants";
|
48
48
|
import { currentUnixSeconds } from "../utils/generalUtils";
|
49
|
-
import {
|
49
|
+
import { ContextUpdates } from "../utils/solauto/generalUtils";
|
50
50
|
import {
|
51
51
|
ReferralStateManager,
|
52
52
|
ReferralStateManagerArgs,
|
@@ -87,7 +87,7 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
87
87
|
|
88
88
|
public authorityLutAddress?: PublicKey;
|
89
89
|
|
90
|
-
public
|
90
|
+
public contextUpdates: ContextUpdates = new ContextUpdates();
|
91
91
|
|
92
92
|
private signerSupplyBalance: bigint | undefined;
|
93
93
|
private signerDebtBalance: bigint | undefined;
|
@@ -193,18 +193,18 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
193
193
|
{ commitment: "confirmed" }
|
194
194
|
);
|
195
195
|
} else {
|
196
|
-
if (this.
|
196
|
+
if (this.contextUpdates.activeDca) {
|
197
197
|
this.solautoPositionData.position.dca =
|
198
|
-
this.
|
198
|
+
this.contextUpdates.activeDca;
|
199
199
|
}
|
200
|
-
if (this.
|
200
|
+
if (this.contextUpdates.settings) {
|
201
201
|
this.solautoPositionData.position.settingParams =
|
202
|
-
this.
|
202
|
+
this.contextUpdates.settings;
|
203
203
|
}
|
204
|
-
// All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form
|
204
|
+
// All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form contextUpdates
|
205
205
|
}
|
206
206
|
}
|
207
|
-
this.
|
207
|
+
this.contextUpdates.reset();
|
208
208
|
}
|
209
209
|
|
210
210
|
abstract protocolAccount(): PublicKey;
|
@@ -357,14 +357,14 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
357
357
|
|
358
358
|
solautoPositionSettings(): SolautoSettingsParameters | undefined {
|
359
359
|
return (
|
360
|
-
this.
|
360
|
+
this.contextUpdates.settings ??
|
361
361
|
this.solautoPositionData?.position.settingParams
|
362
362
|
);
|
363
363
|
}
|
364
364
|
|
365
365
|
solautoPositionActiveDca(): DCASettings | undefined {
|
366
366
|
return (
|
367
|
-
this.
|
367
|
+
this.contextUpdates.activeDca ??
|
368
368
|
this.solautoPositionData?.position.dca
|
369
369
|
);
|
370
370
|
}
|
@@ -381,7 +381,7 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
381
381
|
dca?: DCASettingsInpArgs
|
382
382
|
): TransactionBuilder {
|
383
383
|
if (dca && dca.dcaInBaseUnit > 0) {
|
384
|
-
this.
|
384
|
+
this.contextUpdates.new({
|
385
385
|
type: "dcaInBalance",
|
386
386
|
value: {
|
387
387
|
amount: BigInt(dca.dcaInBaseUnit),
|
@@ -390,13 +390,13 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
390
390
|
});
|
391
391
|
}
|
392
392
|
if (settingParams) {
|
393
|
-
this.
|
393
|
+
this.contextUpdates.new({
|
394
394
|
type: "settings",
|
395
395
|
value: settingParams,
|
396
396
|
});
|
397
397
|
}
|
398
398
|
if (dca) {
|
399
|
-
this.
|
399
|
+
this.contextUpdates.new({
|
400
400
|
type: "dca",
|
401
401
|
value: dca,
|
402
402
|
});
|
@@ -425,7 +425,7 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
425
425
|
isSome(args.dca) &&
|
426
426
|
args.dca.value.dcaInBaseUnit > 0
|
427
427
|
) {
|
428
|
-
this.
|
428
|
+
this.contextUpdates.new({
|
429
429
|
type: "dcaInBalance",
|
430
430
|
value: {
|
431
431
|
amount: BigInt(args.dca.value.dcaInBaseUnit),
|
@@ -436,14 +436,14 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
436
436
|
}
|
437
437
|
|
438
438
|
if (isOption(args.settingParams) && isSome(args.settingParams)) {
|
439
|
-
this.
|
439
|
+
this.contextUpdates.new({
|
440
440
|
type: "settings",
|
441
441
|
value: args.settingParams.value,
|
442
442
|
});
|
443
443
|
}
|
444
444
|
|
445
445
|
if (isOption(args.dca) && isSome(args.dca)) {
|
446
|
-
this.
|
446
|
+
this.contextUpdates.new({
|
447
447
|
type: "dca",
|
448
448
|
value: args.dca.value,
|
449
449
|
});
|
@@ -488,7 +488,7 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
488
488
|
signerDcaTa = publicKey(this.signerDebtTa);
|
489
489
|
}
|
490
490
|
|
491
|
-
this.
|
491
|
+
this.contextUpdates.new({
|
492
492
|
type: "cancellingDca",
|
493
493
|
value: this.solautoPositionData!.position.dca.tokenType,
|
494
494
|
});
|
@@ -550,18 +550,18 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
550
550
|
}
|
551
551
|
|
552
552
|
if (args.__kind === "Deposit") {
|
553
|
-
this.
|
553
|
+
this.contextUpdates.new({
|
554
554
|
type: "supply",
|
555
555
|
value: BigInt(args.fields[0]),
|
556
556
|
});
|
557
557
|
} else if (args.__kind === "Withdraw") {
|
558
558
|
if (args.fields[0].__kind === "Some") {
|
559
|
-
this.
|
559
|
+
this.contextUpdates.new({
|
560
560
|
type: "supply",
|
561
561
|
value: BigInt(args.fields[0].fields[0]) * BigInt(-1),
|
562
562
|
});
|
563
563
|
} else {
|
564
|
-
this.
|
564
|
+
this.contextUpdates.new({
|
565
565
|
type: "supply",
|
566
566
|
value:
|
567
567
|
(this.solautoPositionState?.supply.amountUsed.baseUnit ??
|
@@ -569,18 +569,18 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
569
569
|
});
|
570
570
|
}
|
571
571
|
} else if (args.__kind === "Borrow") {
|
572
|
-
this.
|
572
|
+
this.contextUpdates.new({
|
573
573
|
type: "debt",
|
574
574
|
value: BigInt(args.fields[0]),
|
575
575
|
});
|
576
576
|
} else {
|
577
577
|
if (args.fields[0].__kind === "Some") {
|
578
|
-
this.
|
578
|
+
this.contextUpdates.new({
|
579
579
|
type: "debt",
|
580
580
|
value: BigInt(args.fields[0].fields[0]) * BigInt(-1),
|
581
581
|
});
|
582
582
|
} else {
|
583
|
-
this.
|
583
|
+
this.contextUpdates.new({
|
584
584
|
type: "debt",
|
585
585
|
value:
|
586
586
|
(this.solautoPositionState?.debt.amountUsed.baseUnit ?? BigInt(0)) *
|
@@ -615,7 +615,7 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
615
615
|
Boolean(this.solautoPositionState) &&
|
616
616
|
Number(this.solautoPositionState!.lastUpdated) >
|
617
617
|
currentUnixSeconds() - MIN_POSITION_STATE_FRESHNESS_SECS &&
|
618
|
-
!this.
|
618
|
+
!this.contextUpdates.positionUpdates()
|
619
619
|
) {
|
620
620
|
return this.solautoPositionState;
|
621
621
|
}
|
@@ -726,7 +726,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
726
726
|
this.marginfiGroup,
|
727
727
|
useDesignatedMint ? { mint: this.supplyMint } : undefined,
|
728
728
|
useDesignatedMint ? { mint: this.debtMint } : undefined,
|
729
|
-
this.
|
729
|
+
this.contextUpdates
|
730
730
|
);
|
731
731
|
|
732
732
|
if (resp) {
|
@@ -583,7 +583,7 @@ export async function getTransactionChores(
|
|
583
583
|
client,
|
584
584
|
accountsGettingCreated,
|
585
585
|
solautoActions,
|
586
|
-
client.
|
586
|
+
client.contextUpdates.dcaInBalance
|
587
587
|
),
|
588
588
|
await rebalanceChoresBefore(client, tx, accountsGettingCreated),
|
589
589
|
]);
|
@@ -592,7 +592,7 @@ export async function getTransactionChores(
|
|
592
592
|
transactionChoresAfter(
|
593
593
|
client,
|
594
594
|
solautoActions,
|
595
|
-
client.
|
595
|
+
client.contextUpdates.cancellingDca
|
596
596
|
)
|
597
597
|
);
|
598
598
|
|
@@ -620,8 +620,8 @@ export async function requiresRefreshBeforeRebalance(
|
|
620
620
|
return true;
|
621
621
|
} else if (client.solautoPositionData && !client.selfManaged) {
|
622
622
|
if (
|
623
|
-
client.
|
624
|
-
client.
|
623
|
+
client.contextUpdates.supplyAdjustment > BigInt(0) ||
|
624
|
+
client.contextUpdates.debtAdjustment > BigInt(0)
|
625
625
|
) {
|
626
626
|
return false;
|
627
627
|
}
|
@@ -638,8 +638,8 @@ export async function requiresRefreshBeforeRebalance(
|
|
638
638
|
|
639
639
|
client.log("Liq utilization rate diff:", utilizationRateDiff);
|
640
640
|
if (
|
641
|
-
client.
|
642
|
-
client.
|
641
|
+
client.contextUpdates.supplyAdjustment === BigInt(0) &&
|
642
|
+
client.contextUpdates.debtAdjustment === BigInt(0) &&
|
643
643
|
utilizationRateDiff >= 10
|
644
644
|
) {
|
645
645
|
client.log(
|
@@ -667,7 +667,7 @@ export async function buildSolautoRebalanceTransaction(
|
|
667
667
|
|
668
668
|
if (
|
669
669
|
(client.solautoPositionState?.supply.amountUsed.baseUnit === BigInt(0) &&
|
670
|
-
client.
|
670
|
+
client.contextUpdates.supplyAdjustment === BigInt(0)) ||
|
671
671
|
(targetLiqUtilizationRateBps === undefined &&
|
672
672
|
!eligibleForRebalance(
|
673
673
|
client.solautoPositionState!,
|
@@ -77,7 +77,7 @@ export interface JupSwapTransaction {
|
|
77
77
|
setupInstructions: TransactionBuilder;
|
78
78
|
tokenLedgerIx?: TransactionBuilder;
|
79
79
|
swapIx: TransactionBuilder;
|
80
|
-
|
80
|
+
cleanupIx: TransactionBuilder;
|
81
81
|
}
|
82
82
|
|
83
83
|
export async function getJupSwapTransaction(
|
@@ -166,14 +166,14 @@ export async function getJupSwapTransaction(
|
|
166
166
|
createTransactionInstruction(instructions.swapInstruction)
|
167
167
|
)
|
168
168
|
),
|
169
|
-
|
169
|
+
cleanupIx: instructions.cleanupInstruction
|
170
170
|
? transactionBuilder().add(
|
171
171
|
getWrappedInstruction(
|
172
172
|
signer,
|
173
173
|
createTransactionInstruction(instructions.cleanupInstruction)
|
174
174
|
)
|
175
175
|
)
|
176
|
-
:
|
176
|
+
: transactionBuilder(),
|
177
177
|
};
|
178
178
|
}
|
179
179
|
|
@@ -26,7 +26,7 @@ import {
|
|
26
26
|
import { MarginfiAssetAccounts } from "../types/accounts";
|
27
27
|
import { PositionState, PositionTokenUsage } from "../generated";
|
28
28
|
import { USD_DECIMALS } from "../constants/generalAccounts";
|
29
|
-
import {
|
29
|
+
import { ContextUpdates } from "./solauto/generalUtils";
|
30
30
|
import { ALL_SUPPORTED_TOKENS, TOKEN_INFO } from "../constants";
|
31
31
|
import { fetchTokenPrices, safeGetPrice } from "./priceUtils";
|
32
32
|
|
@@ -296,7 +296,7 @@ export async function getMarginfiAccountPositionState(
|
|
296
296
|
marginfiGroup?: PublicKey,
|
297
297
|
supply?: BankSelection,
|
298
298
|
debt?: BankSelection,
|
299
|
-
|
299
|
+
contextUpdates?: ContextUpdates
|
300
300
|
): Promise<
|
301
301
|
| { supplyBank: Bank | null; debtBank: Bank | null; state: PositionState }
|
302
302
|
| undefined
|
@@ -381,7 +381,7 @@ export async function getMarginfiAccountPositionState(
|
|
381
381
|
supplyBank!,
|
382
382
|
true,
|
383
383
|
bytesToI80F48(supplyBalances[0].assetShares.value),
|
384
|
-
|
384
|
+
contextUpdates?.supplyAdjustment
|
385
385
|
);
|
386
386
|
}
|
387
387
|
|
@@ -398,7 +398,7 @@ export async function getMarginfiAccountPositionState(
|
|
398
398
|
debtBank!,
|
399
399
|
false,
|
400
400
|
bytesToI80F48(debtBalances[0].liabilityShares.value),
|
401
|
-
|
401
|
+
contextUpdates?.debtAdjustment
|
402
402
|
);
|
403
403
|
}
|
404
404
|
}
|
@@ -412,7 +412,7 @@ export async function getMarginfiAccountPositionState(
|
|
412
412
|
supplyBank,
|
413
413
|
true,
|
414
414
|
0,
|
415
|
-
|
415
|
+
contextUpdates?.supplyAdjustment
|
416
416
|
);
|
417
417
|
}
|
418
418
|
|
@@ -440,7 +440,7 @@ export async function getMarginfiAccountPositionState(
|
|
440
440
|
debtBank,
|
441
441
|
false,
|
442
442
|
0,
|
443
|
-
|
443
|
+
contextUpdates?.debtAdjustment
|
444
444
|
);
|
445
445
|
}
|
446
446
|
|
@@ -625,7 +625,7 @@ export function createSolautoSettings(
|
|
625
625
|
};
|
626
626
|
}
|
627
627
|
|
628
|
-
type
|
628
|
+
type ContextAdjustment =
|
629
629
|
| { type: "supply"; value: bigint }
|
630
630
|
| { type: "debt"; value: bigint }
|
631
631
|
| { type: "settings"; value: SolautoSettingsParametersInpArgs }
|
@@ -634,7 +634,7 @@ type PositionAdjustment =
|
|
634
634
|
| { type: "cancellingDca"; value: TokenType }
|
635
635
|
| { type: "jupSwap", value: QuoteResponse };
|
636
636
|
|
637
|
-
export class
|
637
|
+
export class ContextUpdates {
|
638
638
|
public supplyAdjustment = BigInt(0);
|
639
639
|
public debtAdjustment = BigInt(0);
|
640
640
|
public settings: SolautoSettingsParameters | undefined = undefined;
|
@@ -643,7 +643,7 @@ export class LivePositionUpdates {
|
|
643
643
|
public cancellingDca: TokenType | undefined = undefined;
|
644
644
|
public jupSwap: QuoteResponse | undefined = undefined;
|
645
645
|
|
646
|
-
new(update:
|
646
|
+
new(update: ContextAdjustment) {
|
647
647
|
if (update.type === "supply") {
|
648
648
|
this.supplyAdjustment += update.value;
|
649
649
|
} else if (update.type === "debt") {
|
@@ -684,7 +684,7 @@ export class LivePositionUpdates {
|
|
684
684
|
this.jupSwap = undefined;
|
685
685
|
}
|
686
686
|
|
687
|
-
|
687
|
+
positionUpdates(): boolean {
|
688
688
|
return (
|
689
689
|
this.supplyAdjustment !== BigInt(0) ||
|
690
690
|
this.debtAdjustment !== BigInt(0) ||
|