@haven-fi/solauto-sdk 1.0.155 → 1.0.156

Sign up to get free protection for your applications and to get access to all the features.
@@ -415,7 +415,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
415
415
  if (state) {
416
416
  return state;
417
417
  }
418
- const freshState = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, this.marginfiAccountPk, this.selfManaged ? undefined : this.supplyMint, this.selfManaged ? undefined : this.debtMint, this.livePositionUpdates);
418
+ const freshState = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, this.marginfiAccountPk, undefined, undefined, this.livePositionUpdates);
419
419
  if (freshState) {
420
420
  this.log("Fresh state", freshState);
421
421
  const supplyPrice = (0, generalUtils_1.safeGetPrice)(freshState?.supply.mint);
@@ -1,16 +1,8 @@
1
- import { AddressLookupTableInput, TransactionBuilder, Umi } from "@metaplex-foundation/umi";
1
+ import { TransactionBuilder } from "@metaplex-foundation/umi";
2
2
  import { SolautoClient } from "../clients/solautoClient";
3
3
  import { ErrorsToThrow } from "../utils/generalUtils";
4
4
  import { PriorityFeeSetting, TransactionRunType } from "../types";
5
- import { ReferralStateManager, TxHandler } from "../clients";
6
- declare class LookupTables {
7
- defaultLuts: string[];
8
- private umi;
9
- cache: AddressLookupTableInput[];
10
- constructor(defaultLuts: string[], umi: Umi);
11
- getLutInputs(additionalAddresses: string[]): Promise<AddressLookupTableInput[]>;
12
- reset(): void;
13
- }
5
+ import { ReferralStateManager } from "../clients";
14
6
  export declare class TransactionItem {
15
7
  fetchTx: (attemptNum: number) => Promise<{
16
8
  tx: TransactionBuilder;
@@ -27,18 +19,6 @@ export declare class TransactionItem {
27
19
  refetch(attemptNum: number): Promise<void>;
28
20
  uniqueAccounts(): string[];
29
21
  }
30
- declare class TransactionSet {
31
- private txHandler;
32
- lookupTables: LookupTables;
33
- items: TransactionItem[];
34
- constructor(txHandler: TxHandler, lookupTables: LookupTables, items?: TransactionItem[]);
35
- fitsWith(item: TransactionItem): Promise<boolean>;
36
- add(...items: TransactionItem[]): void;
37
- refetchAll(attemptNum: number): Promise<void>;
38
- getSingleTransaction(): Promise<TransactionBuilder>;
39
- lutAddresses(): string[];
40
- name(): string;
41
- }
42
22
  export declare enum TransactionStatus {
43
23
  Skipped = "Skipped",
44
24
  Processing = "Processing",
@@ -49,6 +29,7 @@ export declare enum TransactionStatus {
49
29
  export type TransactionManagerStatuses = {
50
30
  name: string;
51
31
  status: TransactionStatus;
32
+ simulationSuccessful?: boolean;
52
33
  txSig?: string;
53
34
  attemptNum: number;
54
35
  }[];
@@ -64,10 +45,10 @@ export declare class TransactionsManager {
64
45
  private lookupTables;
65
46
  constructor(txHandler: SolautoClient | ReferralStateManager, statusCallback?: ((statuses: TransactionManagerStatuses) => void) | undefined, txType?: TransactionRunType | undefined, mustBeAtomic?: boolean | undefined, errorsToThrow?: ErrorsToThrow | undefined, retries?: number, retryDelay?: number);
66
47
  private assembleTransactionSets;
67
- updateStatus(name: string, status: TransactionStatus, attemptNum: number, txSig?: string): void;
68
- debugAccounts(itemSet: TransactionSet, tx: TransactionBuilder): Promise<void>;
48
+ private updateStatus;
49
+ private debugAccounts;
69
50
  clientSend(transactions: TransactionItem[], prioritySetting?: PriorityFeeSetting): Promise<TransactionManagerStatuses>;
70
51
  send(items: TransactionItem[], prioritySetting?: PriorityFeeSetting, initialized?: boolean): Promise<TransactionManagerStatuses>;
52
+ private sendTransaction;
71
53
  }
72
- export {};
73
54
  //# sourceMappingURL=transactionsManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,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,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAsC7D,qBAAa,eAAe;IAKjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE;IACM,IAAI,CAAC,EAAE,MAAM;IATtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;gBAGf,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE,EACM,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAIV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAgFD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,EAAE,CAAC;AAEJ,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;gBAGzB,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,YAAY,CAAC,EAAE,OAAO,YAAA,EACtB,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,OAAO,GAAE,MAAU,EACnB,UAAU,GAAE,MAAY;YAQpB,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YAwCN,aAAa;IAoBd,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,EAC/B,eAAe,CAAC,EAAE,kBAAkB,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAyEzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,EACxB,eAAe,CAAC,EAAE,kBAAkB,EACpC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,0BAA0B,CAAC;YA0GxB,eAAe;CAmC9B"}
@@ -161,18 +161,33 @@ class TransactionsManager {
161
161
  }
162
162
  return transactionSets;
163
163
  }
164
- updateStatus(name, status, attemptNum, txSig) {
164
+ updateStatus(name, status, attemptNum, txSig, simulationSuccessful) {
165
165
  if (!this.statuses.filter((x) => x.name === name)) {
166
- this.statuses.push({ name, status, txSig, attemptNum });
166
+ this.statuses.push({
167
+ name,
168
+ status,
169
+ txSig,
170
+ attemptNum,
171
+ simulationSuccessful,
172
+ });
167
173
  }
168
174
  else {
169
175
  const idx = this.statuses.findIndex((x) => x.name === name && x.attemptNum === attemptNum);
170
176
  if (idx !== -1) {
171
177
  this.statuses[idx].status = status;
172
178
  this.statuses[idx].txSig = txSig;
179
+ if (simulationSuccessful) {
180
+ this.statuses[idx].simulationSuccessful = simulationSuccessful;
181
+ }
173
182
  }
174
183
  else {
175
- this.statuses.push({ name, status, txSig, attemptNum });
184
+ this.statuses.push({
185
+ name,
186
+ status,
187
+ txSig,
188
+ attemptNum,
189
+ simulationSuccessful,
190
+ });
176
191
  }
177
192
  }
178
193
  this.txHandler.log(`${name} is ${status.toString().toLowerCase()}`);
@@ -202,17 +217,7 @@ class TransactionsManager {
202
217
  if (updateLookupTable &&
203
218
  updateLookupTable.updateLutTx.getInstructions().length > 0 &&
204
219
  updateLookupTable?.needsToBeIsolated) {
205
- await (0, generalUtils_1.retryWithExponentialBackoff)(async (attemptNum) => {
206
- this.updateStatus(updateLutTxName, TransactionStatus.Processing, attemptNum);
207
- try {
208
- const txSig = await (0, solanaUtils_1.sendSingleOptimizedTransaction)(this.txHandler.umi, this.txHandler.connection, updateLookupTable.updateLutTx, this.txType, attemptNum, prioritySetting);
209
- this.updateStatus(updateLutTxName, TransactionStatus.Successful, attemptNum, txSig ? bs58_1.default.encode(txSig) : undefined);
210
- }
211
- catch (e) {
212
- this.updateStatus(updateLutTxName, TransactionStatus.Failed, attemptNum);
213
- throw e;
214
- }
215
- }, 3, 150, this.errorsToThrow);
220
+ await (0, generalUtils_1.retryWithExponentialBackoff)(async (attemptNum) => this.sendTransaction(updateLookupTable.updateLutTx, updateLutTxName, attemptNum, prioritySetting), 3, 150, this.errorsToThrow);
216
221
  }
217
222
  this.lookupTables.defaultLuts = client.defaultLookupTables();
218
223
  for (const item of items) {
@@ -309,23 +314,26 @@ class TransactionsManager {
309
314
  this.updateStatus(itemSet.name(), TransactionStatus.Skipped, attemptNum);
310
315
  }
311
316
  else {
312
- this.updateStatus(itemSet.name(), TransactionStatus.Processing, attemptNum);
313
317
  if (this.txHandler.localTest) {
314
318
  await this.debugAccounts(itemSet, tx);
315
319
  }
316
- try {
317
- const txSig = await (0, solanaUtils_1.sendSingleOptimizedTransaction)(this.txHandler.umi, this.txHandler.connection, tx, this.txType, attemptNum, prioritySetting);
318
- this.updateStatus(itemSet.name(), TransactionStatus.Successful, attemptNum, txSig ? bs58_1.default.encode(txSig) : undefined);
319
- }
320
- catch (e) {
321
- this.updateStatus(itemSet.name(), TransactionStatus.Failed, attemptNum);
322
- throw e;
323
- }
320
+ this.sendTransaction(tx, itemSet.name(), attemptNum, prioritySetting);
324
321
  }
325
322
  }, this.retries, this.retryDelay, this.errorsToThrow);
326
323
  }
327
324
  }
328
325
  return this.statuses;
329
326
  }
327
+ async sendTransaction(tx, txName, attemptNum, prioritySetting) {
328
+ this.updateStatus(txName, TransactionStatus.Processing, attemptNum);
329
+ try {
330
+ const txSig = await (0, solanaUtils_1.sendSingleOptimizedTransaction)(this.txHandler.umi, this.txHandler.connection, tx, this.txType, attemptNum, prioritySetting, () => this.updateStatus(txName, TransactionStatus.Processing, attemptNum, undefined, true));
331
+ this.updateStatus(txName, TransactionStatus.Successful, attemptNum, txSig ? bs58_1.default.encode(txSig) : undefined);
332
+ }
333
+ catch (e) {
334
+ this.updateStatus(txName, TransactionStatus.Failed, attemptNum);
335
+ throw e;
336
+ }
337
+ }
330
338
  }
331
339
  exports.TransactionsManager = TransactionsManager;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.155",
3
+ "version": "1.0.156",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "Typescript SDK for the Solauto program on the Solana blockchain",
@@ -626,8 +626,8 @@ export class SolautoMarginfiClient extends SolautoClient {
626
626
  const freshState = await getMarginfiAccountPositionState(
627
627
  this.umi,
628
628
  this.marginfiAccountPk,
629
- this.selfManaged ? undefined : this.supplyMint,
630
- this.selfManaged ? undefined : this.debtMint,
629
+ undefined,
630
+ undefined,
631
631
  this.livePositionUpdates
632
632
  );
633
633
 
@@ -180,6 +180,7 @@ export enum TransactionStatus {
180
180
  export type TransactionManagerStatuses = {
181
181
  name: string;
182
182
  status: TransactionStatus;
183
+ simulationSuccessful?: boolean;
183
184
  txSig?: string;
184
185
  attemptNum: number;
185
186
  }[];
@@ -243,14 +244,21 @@ export class TransactionsManager {
243
244
  return transactionSets;
244
245
  }
245
246
 
246
- updateStatus(
247
+ private updateStatus(
247
248
  name: string,
248
249
  status: TransactionStatus,
249
250
  attemptNum: number,
250
- txSig?: string
251
+ txSig?: string,
252
+ simulationSuccessful?: boolean
251
253
  ) {
252
254
  if (!this.statuses.filter((x) => x.name === name)) {
253
- this.statuses.push({ name, status, txSig, attemptNum });
255
+ this.statuses.push({
256
+ name,
257
+ status,
258
+ txSig,
259
+ attemptNum,
260
+ simulationSuccessful,
261
+ });
254
262
  } else {
255
263
  const idx = this.statuses.findIndex(
256
264
  (x) => x.name === name && x.attemptNum === attemptNum
@@ -258,8 +266,17 @@ export class TransactionsManager {
258
266
  if (idx !== -1) {
259
267
  this.statuses[idx].status = status;
260
268
  this.statuses[idx].txSig = txSig;
269
+ if (simulationSuccessful) {
270
+ this.statuses[idx].simulationSuccessful = simulationSuccessful;
271
+ }
261
272
  } else {
262
- this.statuses.push({ name, status, txSig, attemptNum });
273
+ this.statuses.push({
274
+ name,
275
+ status,
276
+ txSig,
277
+ attemptNum,
278
+ simulationSuccessful,
279
+ });
263
280
  }
264
281
  }
265
282
  this.txHandler.log(`${name} is ${status.toString().toLowerCase()}`);
@@ -267,7 +284,7 @@ export class TransactionsManager {
267
284
  }
268
285
 
269
286
  // TODO remove me
270
- async debugAccounts(itemSet: TransactionSet, tx: TransactionBuilder) {
287
+ private async debugAccounts(itemSet: TransactionSet, tx: TransactionBuilder) {
271
288
  const lutInputs = await itemSet.lookupTables.getLutInputs([]);
272
289
  const lutAccounts = lutInputs.map((x) => x.addresses).flat();
273
290
  for (const ix of tx.getInstructions()) {
@@ -287,7 +304,7 @@ export class TransactionsManager {
287
304
  }
288
305
  }
289
306
 
290
- async clientSend(
307
+ public async clientSend(
291
308
  transactions: TransactionItem[],
292
309
  prioritySetting?: PriorityFeeSetting
293
310
  ): Promise<TransactionManagerStatuses> {
@@ -302,36 +319,13 @@ export class TransactionsManager {
302
319
  updateLookupTable?.needsToBeIsolated
303
320
  ) {
304
321
  await retryWithExponentialBackoff(
305
- async (attemptNum) => {
306
- this.updateStatus(
322
+ async (attemptNum) =>
323
+ this.sendTransaction(
324
+ updateLookupTable.updateLutTx,
307
325
  updateLutTxName,
308
- TransactionStatus.Processing,
309
- attemptNum
310
- );
311
- try {
312
- const txSig = await sendSingleOptimizedTransaction(
313
- this.txHandler.umi,
314
- this.txHandler.connection,
315
- updateLookupTable.updateLutTx,
316
- this.txType,
317
- attemptNum,
318
- prioritySetting
319
- );
320
- this.updateStatus(
321
- updateLutTxName,
322
- TransactionStatus.Successful,
323
- attemptNum,
324
- txSig ? bs58.encode(txSig) : undefined
325
- );
326
- } catch (e) {
327
- this.updateStatus(
328
- updateLutTxName,
329
- TransactionStatus.Failed,
330
- attemptNum
331
- );
332
- throw e;
333
- }
334
- },
326
+ attemptNum,
327
+ prioritySetting
328
+ ),
335
329
  3,
336
330
  150,
337
331
  this.errorsToThrow
@@ -386,7 +380,7 @@ export class TransactionsManager {
386
380
  return result;
387
381
  }
388
382
 
389
- async send(
383
+ public async send(
390
384
  items: TransactionItem[],
391
385
  prioritySetting?: PriorityFeeSetting,
392
386
  initialized?: boolean
@@ -475,39 +469,15 @@ export class TransactionsManager {
475
469
  attemptNum
476
470
  );
477
471
  } else {
478
- this.updateStatus(
479
- itemSet.name(),
480
- TransactionStatus.Processing,
481
- attemptNum
482
- );
483
-
484
472
  if (this.txHandler.localTest) {
485
473
  await this.debugAccounts(itemSet, tx);
486
474
  }
487
-
488
- try {
489
- const txSig = await sendSingleOptimizedTransaction(
490
- this.txHandler.umi,
491
- this.txHandler.connection,
492
- tx,
493
- this.txType,
494
- attemptNum,
495
- prioritySetting
496
- );
497
- this.updateStatus(
498
- itemSet.name(),
499
- TransactionStatus.Successful,
500
- attemptNum,
501
- txSig ? bs58.encode(txSig) : undefined
502
- );
503
- } catch (e) {
504
- this.updateStatus(
505
- itemSet.name(),
506
- TransactionStatus.Failed,
507
- attemptNum
508
- );
509
- throw e;
510
- }
475
+ this.sendTransaction(
476
+ tx,
477
+ itemSet.name(),
478
+ attemptNum,
479
+ prioritySetting
480
+ );
511
481
  }
512
482
  },
513
483
  this.retries,
@@ -519,4 +489,40 @@ export class TransactionsManager {
519
489
 
520
490
  return this.statuses;
521
491
  }
492
+
493
+ private async sendTransaction(
494
+ tx: TransactionBuilder,
495
+ txName: string,
496
+ attemptNum: number,
497
+ prioritySetting?: PriorityFeeSetting
498
+ ) {
499
+ this.updateStatus(txName, TransactionStatus.Processing, attemptNum);
500
+ try {
501
+ const txSig = await sendSingleOptimizedTransaction(
502
+ this.txHandler.umi,
503
+ this.txHandler.connection,
504
+ tx,
505
+ this.txType,
506
+ attemptNum,
507
+ prioritySetting,
508
+ () =>
509
+ this.updateStatus(
510
+ txName,
511
+ TransactionStatus.Processing,
512
+ attemptNum,
513
+ undefined,
514
+ true
515
+ )
516
+ );
517
+ this.updateStatus(
518
+ txName,
519
+ TransactionStatus.Successful,
520
+ attemptNum,
521
+ txSig ? bs58.encode(txSig) : undefined
522
+ );
523
+ } catch (e) {
524
+ this.updateStatus(txName, TransactionStatus.Failed, attemptNum);
525
+ throw e;
526
+ }
527
+ }
522
528
  }