@haven-fi/solauto-sdk 1.0.113 → 1.0.115
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/referralStateManager.d.ts +1 -1
- package/dist/clients/referralStateManager.d.ts.map +1 -1
- package/dist/clients/referralStateManager.js +1 -1
- package/dist/clients/solautoClient.d.ts +1 -1
- package/dist/clients/solautoClient.d.ts.map +1 -1
- package/dist/clients/solautoClient.js +14 -12
- package/dist/clients/solautoMarginfiClient.js +1 -1
- package/dist/clients/txHandler.d.ts +1 -1
- package/dist/clients/txHandler.d.ts.map +1 -1
- package/dist/transactions/transactionsManager.d.ts +5 -5
- package/dist/transactions/transactionsManager.d.ts.map +1 -1
- package/dist/transactions/transactionsManager.js +17 -14
- package/dist/utils/numberUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +1 -0
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/clients/referralStateManager.ts +1 -1
- package/src/clients/solautoClient.ts +17 -15
- package/src/clients/solautoMarginfiClient.ts +1 -1
- package/src/clients/txHandler.ts +1 -1
- package/src/transactions/transactionsManager.ts +59 -26
- package/src/utils/numberUtils.ts +0 -1
- package/src/utils/solauto/rebalanceUtils.ts +0 -1
- package/tests/transactions/solautoMarginfi.ts +37 -38
|
@@ -20,7 +20,7 @@ export declare class ReferralStateManager extends TxHandler {
|
|
|
20
20
|
defaultLookupTables(): string[];
|
|
21
21
|
updateReferralStatesIx(destFeesMint?: PublicKey, referredBy?: PublicKey, lookupTable?: PublicKey): TransactionBuilder;
|
|
22
22
|
claimReferralFeesIx(destFeesMint?: PublicKey): TransactionBuilder;
|
|
23
|
-
resetLiveTxUpdates(): Promise<void>;
|
|
23
|
+
resetLiveTxUpdates(success?: boolean): Promise<void>;
|
|
24
24
|
}
|
|
25
25
|
export {};
|
|
26
26
|
//# sourceMappingURL=referralStateManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referralStateManager.d.ts","sourceRoot":"","sources":["../../src/clients/referralStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAa,MAAM,EAAkB,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAEtG,OAAO,EAAE,aAAa,EAAyB,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAA2C,aAAa,EAAgD,MAAM,cAAc,CAAC;AAEpI,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,wBAAwB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iBAAiB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAQN,SAAS,CAAC,EAAE,OAAO;IAPrD,GAAG,EAAG,GAAG,CAAC;IACV,MAAM,EAAG,MAAM,CAAC;IAEhB,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAC1B,iBAAiB,EAAG,aAAa,GAAG,IAAI,CAAC;gBAEpC,YAAY,EAAE,MAAM,EAAS,SAAS,CAAC,EAAE,OAAO,YAAA;IAStD,UAAU,CAAC,IAAI,EAAE,wBAAwB;IAe/C,mBAAmB,IAAI,MAAM,EAAE;IAI/B,sBAAsB,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,kBAAkB;IAiBrH,mBAAmB,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,kBAAkB;IAwB3D,kBAAkB,
|
|
1
|
+
{"version":3,"file":"referralStateManager.d.ts","sourceRoot":"","sources":["../../src/clients/referralStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAa,MAAM,EAAkB,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAEtG,OAAO,EAAE,aAAa,EAAyB,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAA2C,aAAa,EAAgD,MAAM,cAAc,CAAC;AAEpI,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,UAAU,wBAAwB;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iBAAiB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAQN,SAAS,CAAC,EAAE,OAAO;IAPrD,GAAG,EAAG,GAAG,CAAC;IACV,MAAM,EAAG,MAAM,CAAC;IAEhB,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAC1B,iBAAiB,EAAG,aAAa,GAAG,IAAI,CAAC;gBAEpC,YAAY,EAAE,MAAM,EAAS,SAAS,CAAC,EAAE,OAAO,YAAA;IAStD,UAAU,CAAC,IAAI,EAAE,wBAAwB;IAe/C,mBAAmB,IAAI,MAAM,EAAE;IAI/B,sBAAsB,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,kBAAkB;IAiBrH,mBAAmB,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,kBAAkB;IAwB3D,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAC7D"}
|
|
@@ -43,7 +43,7 @@ export declare abstract class SolautoClient extends TxHandler {
|
|
|
43
43
|
livePositionUpdates: LivePositionUpdates;
|
|
44
44
|
constructor(heliusApiKey: string, localTest?: boolean | undefined);
|
|
45
45
|
initialize(args: SolautoClientArgs, lendingPlatform: LendingPlatform): Promise<void>;
|
|
46
|
-
resetLiveTxUpdates(): Promise<void>;
|
|
46
|
+
resetLiveTxUpdates(success?: boolean): Promise<void>;
|
|
47
47
|
abstract protocolAccount(): PublicKey;
|
|
48
48
|
defaultLookupTables(): string[];
|
|
49
49
|
lutAccountsToAdd(): PublicKey[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAEL,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,kBAAkB,EAOnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,aAAa,EAEd,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAChC,sBAAsB,EAMvB,MAAM,cAAc,CAAC;AAStB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,8BAAsB,aAAc,SAAQ,SAAS;IAmC1C,SAAS,CAAC,EAAE,OAAO;IAlCrB,eAAe,EAAG,eAAe,CAAC;IAElC,SAAS,EAAG,SAAS,CAAC;IACtB,MAAM,EAAG,MAAM,CAAC;IAEhB,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,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,oBAAoB,EAAG,oBAAoB,CAAC;IAE5C,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,iBAAiB,EAAG,SAAS,CAAC;IAC9B,mBAAmB,EAAG,SAAS,CAAC;IAEhC,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAEhC,mBAAmB,EAAE,mBAAmB,CAA6B;gBAG1E,YAAY,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,OAAO,YAAA;IAWtB,UAAU,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe;IAsGpE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,20 +87,22 @@ class SolautoClient extends txHandler_1.TxHandler {
|
|
|
87
87
|
? this.solautoPositionData?.position?.dca
|
|
88
88
|
: undefined);
|
|
89
89
|
}
|
|
90
|
-
async resetLiveTxUpdates() {
|
|
91
|
-
if (
|
|
92
|
-
this.solautoPositionData
|
|
93
|
-
|
|
94
|
-
else {
|
|
95
|
-
if (this.livePositionUpdates.activeDca) {
|
|
96
|
-
this.solautoPositionData.position.dca =
|
|
97
|
-
this.livePositionUpdates.activeDca;
|
|
90
|
+
async resetLiveTxUpdates(success) {
|
|
91
|
+
if (success) {
|
|
92
|
+
if (!this.solautoPositionData) {
|
|
93
|
+
this.solautoPositionData = await (0, generated_1.safeFetchSolautoPosition)(this.umi, (0, umi_1.publicKey)(this.solautoPosition));
|
|
98
94
|
}
|
|
99
|
-
|
|
100
|
-
this.
|
|
101
|
-
this.
|
|
95
|
+
else {
|
|
96
|
+
if (this.livePositionUpdates.activeDca) {
|
|
97
|
+
this.solautoPositionData.position.dca =
|
|
98
|
+
this.livePositionUpdates.activeDca;
|
|
99
|
+
}
|
|
100
|
+
if (this.livePositionUpdates.settings) {
|
|
101
|
+
this.solautoPositionData.position.settingParams =
|
|
102
|
+
this.livePositionUpdates.settings;
|
|
103
|
+
}
|
|
104
|
+
// All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form livePositionUpdates
|
|
102
105
|
}
|
|
103
|
-
// All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form livePositionUpdates
|
|
104
106
|
}
|
|
105
107
|
this.livePositionUpdates.reset();
|
|
106
108
|
}
|
|
@@ -414,7 +414,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
414
414
|
return state;
|
|
415
415
|
}
|
|
416
416
|
const freshState = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, this.marginfiAccountPk, this.supplyMint, this.debtMint, this.livePositionUpdates);
|
|
417
|
-
this.log(freshState);
|
|
417
|
+
this.log("Fresh state:", freshState);
|
|
418
418
|
return freshState;
|
|
419
419
|
}
|
|
420
420
|
}
|
|
@@ -8,6 +8,6 @@ export declare abstract class TxHandler {
|
|
|
8
8
|
constructor(heliusApiKey: string, localTest?: boolean | undefined);
|
|
9
9
|
log(...args: any[]): void;
|
|
10
10
|
abstract defaultLookupTables(): string[];
|
|
11
|
-
abstract resetLiveTxUpdates(): Promise<void>;
|
|
11
|
+
abstract resetLiveTxUpdates(success?: boolean): Promise<void>;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=txHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txHandler.d.ts","sourceRoot":"","sources":["../../src/clients/txHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,8BAAsB,SAAS;IAMpB,SAAS,CAAC,EAAE,OAAO;IALrB,YAAY,EAAG,MAAM,CAAC;IACtB,GAAG,EAAG,GAAG,CAAC;IACV,UAAU,EAAG,UAAU,CAAC;gBAEnB,YAAY,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,OAAO,YAAA;IAO5B,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAMzB,QAAQ,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAExC,QAAQ,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"txHandler.d.ts","sourceRoot":"","sources":["../../src/clients/txHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,8BAAsB,SAAS;IAMpB,SAAS,CAAC,EAAE,OAAO;IALrB,YAAY,EAAG,MAAM,CAAC;IACtB,GAAG,EAAG,GAAG,CAAC;IACV,UAAU,EAAG,UAAU,CAAC;gBAEnB,YAAY,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,OAAO,YAAA;IAO5B,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAMzB,QAAQ,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAExC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAC9D"}
|
|
@@ -39,11 +39,11 @@ declare class TransactionSet {
|
|
|
39
39
|
name(): string;
|
|
40
40
|
}
|
|
41
41
|
export declare enum TransactionStatus {
|
|
42
|
-
Skipped =
|
|
43
|
-
Processing =
|
|
44
|
-
AwaitingSignature =
|
|
45
|
-
Queued =
|
|
46
|
-
Successful =
|
|
42
|
+
Skipped = 0,
|
|
43
|
+
Processing = 1,
|
|
44
|
+
AwaitingSignature = 2,
|
|
45
|
+
Queued = 3,
|
|
46
|
+
Successful = 4
|
|
47
47
|
}
|
|
48
48
|
export type TransactionManagerStatuses = {
|
|
49
49
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EAEvB,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG7D,cAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,7 @@ class LookupTables {
|
|
|
17
17
|
this.cache = [];
|
|
18
18
|
}
|
|
19
19
|
async getLutInputs(additionalAddresses) {
|
|
20
|
-
const addresses = [
|
|
21
|
-
...this.defaultLuts,
|
|
22
|
-
...additionalAddresses,
|
|
23
|
-
];
|
|
20
|
+
const addresses = [...this.defaultLuts, ...additionalAddresses];
|
|
24
21
|
const currentCacheAddresses = this.cache.map((x) => x.publicKey.toString());
|
|
25
22
|
const missingAddresses = addresses.filter((x) => !currentCacheAddresses.includes(x));
|
|
26
23
|
if (missingAddresses) {
|
|
@@ -112,11 +109,11 @@ class TransactionSet {
|
|
|
112
109
|
}
|
|
113
110
|
var TransactionStatus;
|
|
114
111
|
(function (TransactionStatus) {
|
|
115
|
-
TransactionStatus["Skipped"] = "Skipped";
|
|
116
|
-
TransactionStatus["Processing"] = "Processing";
|
|
117
|
-
TransactionStatus["AwaitingSignature"] = "
|
|
118
|
-
TransactionStatus["Queued"] = "Queued";
|
|
119
|
-
TransactionStatus["Successful"] = "Successful";
|
|
112
|
+
TransactionStatus[TransactionStatus["Skipped"] = 0] = "Skipped";
|
|
113
|
+
TransactionStatus[TransactionStatus["Processing"] = 1] = "Processing";
|
|
114
|
+
TransactionStatus[TransactionStatus["AwaitingSignature"] = 2] = "AwaitingSignature";
|
|
115
|
+
TransactionStatus[TransactionStatus["Queued"] = 3] = "Queued";
|
|
116
|
+
TransactionStatus[TransactionStatus["Successful"] = 4] = "Successful";
|
|
120
117
|
})(TransactionStatus || (exports.TransactionStatus = TransactionStatus = {}));
|
|
121
118
|
class TransactionsManager {
|
|
122
119
|
constructor(txHandler, statusCallback, simulateOnly, mustBeAtomic, errorsToThrow) {
|
|
@@ -142,7 +139,9 @@ class TransactionsManager {
|
|
|
142
139
|
throw new Error(`Transaction exceeds max transaction size (${transaction.getTransactionSize(this.txHandler.umi)})`);
|
|
143
140
|
}
|
|
144
141
|
else {
|
|
145
|
-
let newSet = new TransactionSet(this.txHandler, this.lookupTables, [
|
|
142
|
+
let newSet = new TransactionSet(this.txHandler, this.lookupTables, [
|
|
143
|
+
item,
|
|
144
|
+
]);
|
|
146
145
|
for (let j = i; j < items.length; j++) {
|
|
147
146
|
if (await newSet.fitsWith(items[j])) {
|
|
148
147
|
newSet.add(items[j]);
|
|
@@ -193,12 +192,13 @@ class TransactionsManager {
|
|
|
193
192
|
async clientSend(items, prioritySetting) {
|
|
194
193
|
const client = this.txHandler;
|
|
195
194
|
const updateLookupTable = await client.updateLookupTable();
|
|
195
|
+
const updateLutTxName = "update lookup table";
|
|
196
196
|
if (updateLookupTable &&
|
|
197
197
|
updateLookupTable.updateLutTx.getInstructions().length > 0 &&
|
|
198
198
|
updateLookupTable?.needsToBeIsolated) {
|
|
199
|
-
this.updateStatus(
|
|
200
|
-
await (0, generalUtils_1.retryWithExponentialBackoff)(async (attemptNum) => await (0, solanaUtils_1.sendSingleOptimizedTransaction)(this.txHandler.umi, this.txHandler.connection, updateLookupTable.updateLutTx, this.simulateOnly, attemptNum), 3, 150, this.errorsToThrow);
|
|
201
|
-
this.updateStatus(
|
|
199
|
+
this.updateStatus(updateLutTxName, TransactionStatus.Processing);
|
|
200
|
+
await (0, generalUtils_1.retryWithExponentialBackoff)(async (attemptNum) => await (0, solanaUtils_1.sendSingleOptimizedTransaction)(this.txHandler.umi, this.txHandler.connection, updateLookupTable.updateLutTx, this.simulateOnly, attemptNum, prioritySetting, () => this.updateStatus(updateLutTxName, TransactionStatus.AwaitingSignature)), 3, 150, this.errorsToThrow);
|
|
201
|
+
this.updateStatus(updateLutTxName, TransactionStatus.Successful);
|
|
202
202
|
}
|
|
203
203
|
this.lookupTables.defaultLuts = client.defaultLookupTables();
|
|
204
204
|
for (const item of items) {
|
|
@@ -222,7 +222,10 @@ class TransactionsManager {
|
|
|
222
222
|
items.push(chore);
|
|
223
223
|
this.txHandler.log("Chores after: ", choresAfter.getInstructions().length);
|
|
224
224
|
}
|
|
225
|
-
await this.send(items, prioritySetting, true)
|
|
225
|
+
await this.send(items, prioritySetting, true).catch((e) => {
|
|
226
|
+
client.resetLiveTxUpdates(false);
|
|
227
|
+
throw e;
|
|
228
|
+
});
|
|
226
229
|
if (!this.simulateOnly) {
|
|
227
230
|
await client.resetLiveTxUpdates();
|
|
228
231
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AAEA,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAejE;AAED,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,2BAA2B,EAAE,MAAM,EACnC,gBAAgB,CAAC,EAAE,MAAM,UAW1B;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,OAAO,EACnB,2BAA2B,EAAE,MAAM,GAAG,SAAS,EAC/C,mBAAmB,EAAE,MAAM,GAC1B;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAgCA;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAER;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAGL,UAAU,EACV,SAAS,EAIT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,GACnB,CAAC,UAAU,EAAE,GAAG,CAAC,CAOnB;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAQxE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAkBpC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,kBAAkB,EACtB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,CAAC,EAAE,MAAM,sBA4D1B;AAmBD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,eAAe,EAAE,kBAAkB,GAClC,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,kBAAkB,EACtB,YAAY,CAAC,EAAE,OAAO,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,GAAE,kBAA+C,EAChE,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAGL,UAAU,EACV,SAAS,EAIT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,GACnB,CAAC,UAAU,EAAE,GAAG,CAAC,CAOnB;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAQxE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAkBpC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,kBAAkB,EACtB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,CAAC,EAAE,MAAM,sBA4D1B;AAmBD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,eAAe,EAAE,kBAAkB,GAClC,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,kBAAkB,EACtB,YAAY,CAAC,EAAE,OAAO,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,GAAE,kBAA+C,EAChE,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CA0DjC"}
|
|
@@ -160,6 +160,7 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, simulateOnly,
|
|
|
160
160
|
console.log("Serialized transaction size: ", tx.getTransactionSize(umi));
|
|
161
161
|
const feeEstimate = await getComputeUnitPriceEstimate(umi, tx, prioritySetting);
|
|
162
162
|
console.log("Compute unit price: ", feeEstimate);
|
|
163
|
+
// TODO: we should only retry simulation if it's not a solauto error
|
|
163
164
|
const simulationResult = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await simulateTransaction(connection, (0, umi_web3js_adapters_1.toWeb3JsTransaction)(await (await assembleFinalTransaction(umi.identity, tx, feeEstimate, 1400000).setLatestBlockhash(umi)).build(umi))), 3);
|
|
164
165
|
const computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.1);
|
|
165
166
|
console.log("Compute unit limit: ", computeUnitLimit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EAEb,yBAAyB,EAC1B,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAkJjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CA0EjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CAmE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAkChB"}
|
package/package.json
CHANGED
|
@@ -218,22 +218,24 @@ export abstract class SolautoClient extends TxHandler {
|
|
|
218
218
|
);
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
async resetLiveTxUpdates() {
|
|
222
|
-
if (
|
|
223
|
-
this.solautoPositionData
|
|
224
|
-
this.
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
this.
|
|
230
|
-
this.
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
this.
|
|
234
|
-
this.
|
|
221
|
+
async resetLiveTxUpdates(success?: boolean) {
|
|
222
|
+
if (success) {
|
|
223
|
+
if (!this.solautoPositionData) {
|
|
224
|
+
this.solautoPositionData = await safeFetchSolautoPosition(
|
|
225
|
+
this.umi,
|
|
226
|
+
publicKey(this.solautoPosition)
|
|
227
|
+
);
|
|
228
|
+
} else {
|
|
229
|
+
if (this.livePositionUpdates.activeDca) {
|
|
230
|
+
this.solautoPositionData.position.dca =
|
|
231
|
+
this.livePositionUpdates.activeDca;
|
|
232
|
+
}
|
|
233
|
+
if (this.livePositionUpdates.settings) {
|
|
234
|
+
this.solautoPositionData.position.settingParams =
|
|
235
|
+
this.livePositionUpdates.settings;
|
|
236
|
+
}
|
|
237
|
+
// All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form livePositionUpdates
|
|
235
238
|
}
|
|
236
|
-
// All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form livePositionUpdates
|
|
237
239
|
}
|
|
238
240
|
this.livePositionUpdates.reset();
|
|
239
241
|
}
|
package/src/clients/txHandler.ts
CHANGED
|
@@ -22,16 +22,15 @@ import { ReferralStateManager, TxHandler } from "../clients";
|
|
|
22
22
|
class LookupTables {
|
|
23
23
|
cache: AddressLookupTableInput[] = [];
|
|
24
24
|
|
|
25
|
-
constructor(
|
|
26
|
-
|
|
25
|
+
constructor(
|
|
26
|
+
public defaultLuts: string[],
|
|
27
|
+
private umi: Umi
|
|
28
|
+
) {}
|
|
27
29
|
|
|
28
30
|
async getLutInputs(
|
|
29
31
|
additionalAddresses: string[]
|
|
30
32
|
): Promise<AddressLookupTableInput[]> {
|
|
31
|
-
const addresses = [
|
|
32
|
-
...this.defaultLuts,
|
|
33
|
-
...additionalAddresses,
|
|
34
|
-
];
|
|
33
|
+
const addresses = [...this.defaultLuts, ...additionalAddresses];
|
|
35
34
|
const currentCacheAddresses = this.cache.map((x) => x.publicKey.toString());
|
|
36
35
|
|
|
37
36
|
const missingAddresses = addresses.filter(
|
|
@@ -60,7 +59,7 @@ export class TransactionItem {
|
|
|
60
59
|
{ tx: TransactionBuilder; lookupTableAddresses?: string[] } | undefined
|
|
61
60
|
>,
|
|
62
61
|
public name?: string
|
|
63
|
-
) {
|
|
62
|
+
) {}
|
|
64
63
|
|
|
65
64
|
async initialize() {
|
|
66
65
|
await this.refetch(0);
|
|
@@ -91,7 +90,7 @@ class TransactionSet {
|
|
|
91
90
|
private txHandler: TxHandler,
|
|
92
91
|
public lookupTables: LookupTables,
|
|
93
92
|
public items: TransactionItem[] = []
|
|
94
|
-
) {
|
|
93
|
+
) {}
|
|
95
94
|
|
|
96
95
|
async fitsWith(item: TransactionItem): Promise<boolean> {
|
|
97
96
|
if (!item.tx) {
|
|
@@ -165,11 +164,11 @@ class TransactionSet {
|
|
|
165
164
|
}
|
|
166
165
|
|
|
167
166
|
export enum TransactionStatus {
|
|
168
|
-
Skipped
|
|
169
|
-
Processing
|
|
170
|
-
AwaitingSignature
|
|
171
|
-
Queued
|
|
172
|
-
Successful
|
|
167
|
+
Skipped,
|
|
168
|
+
Processing,
|
|
169
|
+
AwaitingSignature,
|
|
170
|
+
Queued,
|
|
171
|
+
Successful,
|
|
173
172
|
}
|
|
174
173
|
|
|
175
174
|
export type TransactionManagerStatuses = {
|
|
@@ -189,7 +188,10 @@ export class TransactionsManager {
|
|
|
189
188
|
private mustBeAtomic?: boolean,
|
|
190
189
|
private errorsToThrow?: ErrorsToThrow
|
|
191
190
|
) {
|
|
192
|
-
this.lookupTables = new LookupTables(
|
|
191
|
+
this.lookupTables = new LookupTables(
|
|
192
|
+
this.txHandler.defaultLookupTables(),
|
|
193
|
+
this.txHandler.umi
|
|
194
|
+
);
|
|
193
195
|
}
|
|
194
196
|
|
|
195
197
|
private async assembleTransactionSets(
|
|
@@ -198,7 +200,7 @@ export class TransactionsManager {
|
|
|
198
200
|
let transactionSets: TransactionSet[] = [];
|
|
199
201
|
this.txHandler.log(`Reassembling ${items.length} items`);
|
|
200
202
|
|
|
201
|
-
for (let i = 0; i < items.length;) {
|
|
203
|
+
for (let i = 0; i < items.length; ) {
|
|
202
204
|
let item = items[i];
|
|
203
205
|
i++;
|
|
204
206
|
|
|
@@ -214,7 +216,9 @@ export class TransactionsManager {
|
|
|
214
216
|
`Transaction exceeds max transaction size (${transaction.getTransactionSize(this.txHandler.umi)})`
|
|
215
217
|
);
|
|
216
218
|
} else {
|
|
217
|
-
let newSet = new TransactionSet(this.txHandler, this.lookupTables, [
|
|
219
|
+
let newSet = new TransactionSet(this.txHandler, this.lookupTables, [
|
|
220
|
+
item,
|
|
221
|
+
]);
|
|
218
222
|
for (let j = i; j < items.length; j++) {
|
|
219
223
|
if (await newSet.fitsWith(items[j])) {
|
|
220
224
|
newSet.add(items[j]);
|
|
@@ -255,7 +259,9 @@ export class TransactionsManager {
|
|
|
255
259
|
const accountsNotInLut = ixAccounts.filter(
|
|
256
260
|
(x) => !lutAccounts.includes(x)
|
|
257
261
|
);
|
|
258
|
-
this.txHandler.log(
|
|
262
|
+
this.txHandler.log(
|
|
263
|
+
`Program ${ix.programId}, data len: ${ix.data.length}, LUT accounts data: ${ix.keys.filter((x) => lutAccounts.includes(x.pubkey)).length * 3}`
|
|
264
|
+
);
|
|
259
265
|
if (accountsNotInLut.length > 0) {
|
|
260
266
|
this.txHandler.log(`${accountsNotInLut.length} accounts not in LUT:`);
|
|
261
267
|
for (const key of accountsNotInLut) {
|
|
@@ -265,16 +271,20 @@ export class TransactionsManager {
|
|
|
265
271
|
}
|
|
266
272
|
}
|
|
267
273
|
|
|
268
|
-
async clientSend(
|
|
274
|
+
async clientSend(
|
|
275
|
+
items: TransactionItem[],
|
|
276
|
+
prioritySetting?: PriorityFeeSetting
|
|
277
|
+
) {
|
|
269
278
|
const client = this.txHandler as SolautoClient;
|
|
270
279
|
|
|
271
280
|
const updateLookupTable = await client.updateLookupTable();
|
|
281
|
+
const updateLutTxName = "update lookup table";
|
|
272
282
|
if (
|
|
273
283
|
updateLookupTable &&
|
|
274
284
|
updateLookupTable.updateLutTx.getInstructions().length > 0 &&
|
|
275
285
|
updateLookupTable?.needsToBeIsolated
|
|
276
286
|
) {
|
|
277
|
-
this.updateStatus(
|
|
287
|
+
this.updateStatus(updateLutTxName, TransactionStatus.Processing);
|
|
278
288
|
await retryWithExponentialBackoff(
|
|
279
289
|
async (attemptNum) =>
|
|
280
290
|
await sendSingleOptimizedTransaction(
|
|
@@ -282,13 +292,19 @@ export class TransactionsManager {
|
|
|
282
292
|
this.txHandler.connection,
|
|
283
293
|
updateLookupTable.updateLutTx,
|
|
284
294
|
this.simulateOnly,
|
|
285
|
-
attemptNum
|
|
295
|
+
attemptNum,
|
|
296
|
+
prioritySetting,
|
|
297
|
+
() =>
|
|
298
|
+
this.updateStatus(
|
|
299
|
+
updateLutTxName,
|
|
300
|
+
TransactionStatus.AwaitingSignature
|
|
301
|
+
)
|
|
286
302
|
),
|
|
287
303
|
3,
|
|
288
304
|
150,
|
|
289
305
|
this.errorsToThrow
|
|
290
306
|
);
|
|
291
|
-
this.updateStatus(
|
|
307
|
+
this.updateStatus(updateLutTxName, TransactionStatus.Successful);
|
|
292
308
|
}
|
|
293
309
|
|
|
294
310
|
this.lookupTables.defaultLuts = client.defaultLookupTables();
|
|
@@ -315,23 +331,36 @@ export class TransactionsManager {
|
|
|
315
331
|
);
|
|
316
332
|
await chore.initialize();
|
|
317
333
|
items.unshift(chore);
|
|
318
|
-
this.txHandler.log(
|
|
334
|
+
this.txHandler.log(
|
|
335
|
+
"Chores before: ",
|
|
336
|
+
choresBefore.getInstructions().length
|
|
337
|
+
);
|
|
319
338
|
}
|
|
320
339
|
if (choresAfter.getInstructions().length > 0) {
|
|
321
340
|
const chore = new TransactionItem(async () => ({ tx: choresAfter }));
|
|
322
341
|
await chore.initialize();
|
|
323
342
|
items.push(chore);
|
|
324
|
-
this.txHandler.log(
|
|
343
|
+
this.txHandler.log(
|
|
344
|
+
"Chores after: ",
|
|
345
|
+
choresAfter.getInstructions().length
|
|
346
|
+
);
|
|
325
347
|
}
|
|
326
348
|
|
|
327
|
-
await this.send(items, prioritySetting, true)
|
|
349
|
+
await this.send(items, prioritySetting, true).catch((e) => {
|
|
350
|
+
client.resetLiveTxUpdates(false);
|
|
351
|
+
throw e;
|
|
352
|
+
});
|
|
328
353
|
|
|
329
354
|
if (!this.simulateOnly) {
|
|
330
355
|
await client.resetLiveTxUpdates();
|
|
331
356
|
}
|
|
332
357
|
}
|
|
333
358
|
|
|
334
|
-
async send(
|
|
359
|
+
async send(
|
|
360
|
+
items: TransactionItem[],
|
|
361
|
+
prioritySetting?: PriorityFeeSetting,
|
|
362
|
+
initialized?: boolean
|
|
363
|
+
) {
|
|
335
364
|
if (!initialized) {
|
|
336
365
|
for (const item of items) {
|
|
337
366
|
await item.initialize();
|
|
@@ -421,7 +450,11 @@ export class TransactionsManager {
|
|
|
421
450
|
this.simulateOnly,
|
|
422
451
|
attemptNum,
|
|
423
452
|
prioritySetting,
|
|
424
|
-
() =>
|
|
453
|
+
() =>
|
|
454
|
+
this.updateStatus(
|
|
455
|
+
itemSet!.name(),
|
|
456
|
+
TransactionStatus.AwaitingSignature
|
|
457
|
+
)
|
|
425
458
|
);
|
|
426
459
|
this.updateStatus(
|
|
427
460
|
itemSet.name(),
|
package/src/utils/numberUtils.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { describe, it } from "mocha";
|
|
2
2
|
import { none, publicKey, some } from "@metaplex-foundation/umi";
|
|
3
3
|
import { setupTest } from "../shared";
|
|
4
|
-
import {
|
|
5
|
-
SolautoMarginfiClient,
|
|
6
|
-
} from "../../src/clients/solautoMarginfiClient";
|
|
4
|
+
import { SolautoMarginfiClient } from "../../src/clients/solautoMarginfiClient";
|
|
7
5
|
import {
|
|
8
6
|
solautoAction,
|
|
9
7
|
SolautoSettingsParametersInpArgs,
|
|
10
8
|
} from "../../src/generated";
|
|
11
9
|
import { buildSolautoRebalanceTransaction } from "../../src/transactions/transactionUtils";
|
|
12
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
maxBoostToBps,
|
|
12
|
+
maxRepayFromBps,
|
|
13
|
+
maxRepayToBps,
|
|
14
|
+
toBaseUnit,
|
|
15
|
+
} from "../../src/utils/numberUtils";
|
|
13
16
|
import { NATIVE_MINT } from "@solana/spl-token";
|
|
14
17
|
import { getTokenPrices } from "../../src/utils/generalUtils";
|
|
15
18
|
import {
|
|
@@ -28,25 +31,22 @@ describe("Solauto Marginfi tests", async () => {
|
|
|
28
31
|
const positionId = 1;
|
|
29
32
|
|
|
30
33
|
it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
|
|
31
|
-
|
|
32
34
|
const client = new SolautoMarginfiClient(process.env.HELIUS_API_KEY!, true);
|
|
33
35
|
|
|
34
36
|
const supply = NATIVE_MINT;
|
|
35
37
|
const supplyDecimals = 9;
|
|
36
38
|
const debtDecimals = 6;
|
|
37
39
|
|
|
38
|
-
await client.initialize(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
);
|
|
40
|
+
await client.initialize({
|
|
41
|
+
signer,
|
|
42
|
+
positionId,
|
|
43
|
+
// authority: new PublicKey("92xmP49BQycn3t2HkGxLAweN3jjrExxSNpywA3xF7mYY")
|
|
44
|
+
// marginfiAccount: new PublicKey(
|
|
45
|
+
// "4nNvUXF5YqHFcH2nGweSiuvy1ct7V5FXfoCLKFYUN36z"
|
|
46
|
+
// ),
|
|
47
|
+
// supplyMint: NATIVE_MINT,
|
|
48
|
+
// debtMint: new PublicKey(USDC_MINT),
|
|
49
|
+
});
|
|
50
50
|
|
|
51
51
|
const transactionItems: TransactionItem[] = [];
|
|
52
52
|
const settingParams: SolautoSettingsParametersInpArgs = {
|
|
@@ -67,19 +67,19 @@ describe("Solauto Marginfi tests", async () => {
|
|
|
67
67
|
// }, "open position")
|
|
68
68
|
// );
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
70
|
+
const initialSupplyUsd = 150;
|
|
71
|
+
transactionItems.push(
|
|
72
|
+
new TransactionItem(async () => {
|
|
73
|
+
const [supplyPrice] = await getTokenPrices([supply]);
|
|
74
|
+
return {
|
|
75
|
+
tx: client.protocolInteraction(
|
|
76
|
+
solautoAction("Deposit", [
|
|
77
|
+
toBaseUnit(initialSupplyUsd / supplyPrice, supplyDecimals),
|
|
78
|
+
])
|
|
79
|
+
),
|
|
80
|
+
};
|
|
81
|
+
}, "deposit")
|
|
82
|
+
);
|
|
83
83
|
// }
|
|
84
84
|
|
|
85
85
|
// const maxLtvBps = client.solautoPositionState!.maxLtvBps;
|
|
@@ -120,13 +120,13 @@ describe("Solauto Marginfi tests", async () => {
|
|
|
120
120
|
// }, "deposit")
|
|
121
121
|
// );
|
|
122
122
|
|
|
123
|
-
transactionItems.push(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
);
|
|
123
|
+
// transactionItems.push(
|
|
124
|
+
// new TransactionItem(
|
|
125
|
+
// async (attemptNum) =>
|
|
126
|
+
// await buildSolautoRebalanceTransaction(client, 1500, attemptNum),
|
|
127
|
+
// "rebalance"
|
|
128
|
+
// )
|
|
129
|
+
// );
|
|
130
130
|
|
|
131
131
|
// transactionItems.push(
|
|
132
132
|
// new TransactionItem(
|
|
@@ -161,6 +161,5 @@ describe("Solauto Marginfi tests", async () => {
|
|
|
161
161
|
!payForTransactions,
|
|
162
162
|
useJitoBundle
|
|
163
163
|
).clientSend(transactionItems);
|
|
164
|
-
|
|
165
164
|
});
|
|
166
165
|
});
|