@haven-fi/solauto-sdk 1.0.155 → 1.0.157
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 +3 -0
- package/dist/clients/solautoClient.d.ts.map +1 -1
- package/dist/clients/solautoClient.js +6 -0
- package/dist/clients/solautoMarginfiClient.d.ts +1 -0
- package/dist/clients/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +27 -3
- package/dist/transactions/transactionsManager.d.ts +6 -25
- package/dist/transactions/transactionsManager.d.ts.map +1 -1
- package/dist/transactions/transactionsManager.js +31 -23
- package/package.json +1 -1
- package/src/clients/solautoClient.ts +10 -0
- package/src/clients/solautoMarginfiClient.ts +57 -10
- package/src/transactions/transactionsManager.ts +72 -66
@@ -27,6 +27,8 @@ export declare abstract class SolautoClient extends TxHandler {
|
|
27
27
|
solautoPosition: PublicKey;
|
28
28
|
solautoPositionData: SolautoPosition | null;
|
29
29
|
solautoPositionState: PositionState | undefined;
|
30
|
+
maxLtvBps?: number;
|
31
|
+
liqThresholdBps?: number;
|
30
32
|
supplyMint: PublicKey;
|
31
33
|
positionSupplyTa: PublicKey;
|
32
34
|
signerSupplyTa: PublicKey;
|
@@ -54,6 +56,7 @@ export declare abstract class SolautoClient extends TxHandler {
|
|
54
56
|
} | undefined>;
|
55
57
|
solautoPositionSettings(): SolautoSettingsParameters | undefined;
|
56
58
|
solautoPositionActiveDca(): DCASettings | undefined;
|
59
|
+
maxLtvAndLiqThreshold(): Promise<[number, number] | undefined>;
|
57
60
|
openPosition(settingParams?: SolautoSettingsParametersInpArgs, dca?: DCASettingsInpArgs): TransactionBuilder;
|
58
61
|
updatePositionIx(args: UpdatePositionDataArgs): TransactionBuilder;
|
59
62
|
closePositionIx(): TransactionBuilder;
|
@@ -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,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,EAEhC,sBAAsB,EAMvB,MAAM,cAAc,CAAC;AAOtB,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;
|
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,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,EAEhC,sBAAsB,EAMvB,MAAM,cAAc,CAAC;AAOtB,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;IAsC1C,SAAS,CAAC,EAAE,OAAO;IArCrB,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,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,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;IAgHpE,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAuB1C,QAAQ,CAAC,eAAe,IAAI,SAAS;IAErC,mBAAmB,IAAI,MAAM,EAAE;IAS/B,gBAAgB,IAAI,SAAS,EAAE;IAiBzB,iCAAiC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAUzD,iBAAiB,IAAI,OAAO,CAChC;QAAE,WAAW,EAAE,kBAAkB,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAC5E;IAyDD,uBAAuB,IAAI,yBAAyB,GAAG,SAAS;IAOhE,wBAAwB,IAAI,WAAW,GAAG,SAAS;IAO7C,qBAAqB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAOpE,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IA0BrB,gBAAgB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IAwDlE,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,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,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,wBAAwB,EACvC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB;IAEf,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CAalE"}
|
@@ -189,6 +189,12 @@ class SolautoClient extends txHandler_1.TxHandler {
|
|
189
189
|
return (this.livePositionUpdates.activeDca ??
|
190
190
|
this.solautoPositionData?.position.dca);
|
191
191
|
}
|
192
|
+
async maxLtvAndLiqThreshold() {
|
193
|
+
if (this.maxLtvBps !== undefined && this.liqThresholdBps !== undefined) {
|
194
|
+
return [0, 0];
|
195
|
+
}
|
196
|
+
return undefined;
|
197
|
+
}
|
192
198
|
openPosition(settingParams, dca) {
|
193
199
|
if (dca && dca.dcaInBaseUnit > 0) {
|
194
200
|
this.livePositionUpdates.new({
|
@@ -30,6 +30,7 @@ export declare class SolautoMarginfiClient extends SolautoClient {
|
|
30
30
|
protocolAccount(): PublicKey;
|
31
31
|
defaultLookupTables(): string[];
|
32
32
|
lutAccountsToAdd(): PublicKey[];
|
33
|
+
maxLtvAndLiqThreshold(): Promise<[number, number] | undefined>;
|
33
34
|
marginfiAccountInitialize(): TransactionBuilder;
|
34
35
|
openPosition(settingParams?: SolautoSettingsParametersInpArgs, dca?: DCASettingsInpArgs): TransactionBuilder;
|
35
36
|
private marginfiOpenPositionIx;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAEb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAUnE,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,WAAW,CAAkB;IAE9B,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,EAAE,MAAM,CAAa;IAC3C,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAG5B,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAmE1C,8BAA8B;IA0CpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;
|
1
|
+
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAEb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAUnE,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,WAAW,CAAkB;IAE9B,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,EAAE,MAAM,CAAa;IAC3C,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAG5B,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAmE1C,8BAA8B;IA0CpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAUzB,qBAAqB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IA2BpE,yBAAyB,IAAI,kBAAkB;IAS/C,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA+C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUhE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,wBAAwB,EACvC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB;IAoErB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAoFlE,iCAAiC,IAAI,kBAAkB;IASjD,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CAwClE"}
|
@@ -96,6 +96,28 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
96
96
|
: []),
|
97
97
|
];
|
98
98
|
}
|
99
|
+
async maxLtvAndLiqThreshold() {
|
100
|
+
const result = super.maxLtvAndLiqThreshold();
|
101
|
+
if (result) {
|
102
|
+
return result;
|
103
|
+
}
|
104
|
+
else {
|
105
|
+
if (this.supplyMint.equals(web3_js_1.PublicKey.default) ||
|
106
|
+
this.debtMint.equals(web3_js_1.PublicKey.default)) {
|
107
|
+
return [0, 0];
|
108
|
+
}
|
109
|
+
else {
|
110
|
+
const [maxLtv, liqThreshold] = await (0, marginfiUtils_1.getMaxLtvAndLiqThreshold)(this.umi, {
|
111
|
+
mint: this.supplyMint,
|
112
|
+
}, {
|
113
|
+
mint: this.debtMint,
|
114
|
+
});
|
115
|
+
this.maxLtvBps = maxLtv;
|
116
|
+
this.liqThresholdBps = liqThreshold;
|
117
|
+
return [this.maxLtvBps, this.liqThresholdBps];
|
118
|
+
}
|
119
|
+
}
|
120
|
+
}
|
99
121
|
marginfiAccountInitialize() {
|
100
122
|
return (0, marginfi_sdk_1.marginfiAccountInitialize)(this.umi, {
|
101
123
|
marginfiAccount: this.marginfiAccount,
|
@@ -314,9 +336,11 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
314
336
|
: undefined,
|
315
337
|
rebalanceType,
|
316
338
|
targetLiqUtilizationRateBps: targetLiqUtilizationRateBps ?? null,
|
317
|
-
targetInAmountBaseUnit: targetLiqUtilizationRateBps
|
339
|
+
targetInAmountBaseUnit: targetLiqUtilizationRateBps
|
340
|
+
? swapDetails.amount
|
341
|
+
: null,
|
318
342
|
limitGapBps: limitGapBps ?? null,
|
319
|
-
slippageBps: slippageBps ?? 0
|
343
|
+
slippageBps: slippageBps ?? 0,
|
320
344
|
});
|
321
345
|
}
|
322
346
|
flashBorrow(flashLoanDetails, destinationTokenAccount) {
|
@@ -415,7 +439,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
415
439
|
if (state) {
|
416
440
|
return state;
|
417
441
|
}
|
418
|
-
const freshState = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, this.marginfiAccountPk,
|
442
|
+
const freshState = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, this.marginfiAccountPk, undefined, undefined, this.livePositionUpdates);
|
419
443
|
if (freshState) {
|
420
444
|
this.log("Fresh state", freshState);
|
421
445
|
const supplyPrice = (0, generalUtils_1.safeGetPrice)(freshState?.supply.mint);
|
@@ -1,16 +1,8 @@
|
|
1
|
-
import {
|
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
|
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
|
68
|
-
debugAccounts
|
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":"AACA,OAAO,
|
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({
|
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({
|
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
|
-
|
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
@@ -78,6 +78,9 @@ export abstract class SolautoClient extends TxHandler {
|
|
78
78
|
public solautoPositionData!: SolautoPosition | null;
|
79
79
|
public solautoPositionState!: PositionState | undefined;
|
80
80
|
|
81
|
+
public maxLtvBps?: number;
|
82
|
+
public liqThresholdBps?: number;
|
83
|
+
|
81
84
|
public supplyMint!: PublicKey;
|
82
85
|
public positionSupplyTa!: PublicKey;
|
83
86
|
public signerSupplyTa!: PublicKey;
|
@@ -358,6 +361,13 @@ export abstract class SolautoClient extends TxHandler {
|
|
358
361
|
);
|
359
362
|
}
|
360
363
|
|
364
|
+
async maxLtvAndLiqThreshold(): Promise<[number, number] | undefined> {
|
365
|
+
if (this.maxLtvBps !== undefined && this.liqThresholdBps !== undefined) {
|
366
|
+
return [0, 0];
|
367
|
+
}
|
368
|
+
return undefined;
|
369
|
+
}
|
370
|
+
|
361
371
|
openPosition(
|
362
372
|
settingParams?: SolautoSettingsParametersInpArgs,
|
363
373
|
dca?: DCASettingsInpArgs
|
@@ -212,6 +212,33 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
212
212
|
];
|
213
213
|
}
|
214
214
|
|
215
|
+
async maxLtvAndLiqThreshold(): Promise<[number, number] | undefined> {
|
216
|
+
const result = super.maxLtvAndLiqThreshold();
|
217
|
+
if (result) {
|
218
|
+
return result;
|
219
|
+
} else {
|
220
|
+
if (
|
221
|
+
this.supplyMint.equals(PublicKey.default) ||
|
222
|
+
this.debtMint.equals(PublicKey.default)
|
223
|
+
) {
|
224
|
+
return [0, 0];
|
225
|
+
} else {
|
226
|
+
const [maxLtv, liqThreshold] = await getMaxLtvAndLiqThreshold(
|
227
|
+
this.umi,
|
228
|
+
{
|
229
|
+
mint: this.supplyMint,
|
230
|
+
},
|
231
|
+
{
|
232
|
+
mint: this.debtMint,
|
233
|
+
}
|
234
|
+
);
|
235
|
+
this.maxLtvBps = maxLtv;
|
236
|
+
this.liqThresholdBps = liqThreshold;
|
237
|
+
return [this.maxLtvBps, this.liqThresholdBps];
|
238
|
+
}
|
239
|
+
}
|
240
|
+
}
|
241
|
+
|
215
242
|
marginfiAccountInitialize(): TransactionBuilder {
|
216
243
|
return marginfiAccountInitialize(this.umi, {
|
217
244
|
marginfiAccount: this.marginfiAccount as Signer,
|
@@ -433,7 +460,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
433
460
|
slippageBps: number,
|
434
461
|
flashLoan?: FlashLoanDetails,
|
435
462
|
targetLiqUtilizationRateBps?: number,
|
436
|
-
limitGapBps?: number
|
463
|
+
limitGapBps?: number
|
437
464
|
): TransactionBuilder {
|
438
465
|
const inputIsSupply = swapDetails.inputMint.equals(this.supplyMint);
|
439
466
|
const outputIsSupply = swapDetails.outputMint.equals(this.supplyMint);
|
@@ -452,7 +479,9 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
452
479
|
ixsSysvar: publicKey(SYSVAR_INSTRUCTIONS_PUBKEY),
|
453
480
|
solautoFeesSupplyTa:
|
454
481
|
rebalanceStep === "B" ? publicKey(this.solautoFeesSupplyTa) : undefined,
|
455
|
-
authorityReferralState: publicKey(
|
482
|
+
authorityReferralState: publicKey(
|
483
|
+
this.referralStateManager.referralState
|
484
|
+
),
|
456
485
|
referredBySupplyTa: this.referredBySupplyTa
|
457
486
|
? publicKey(this.referredBySupplyTa)
|
458
487
|
: undefined,
|
@@ -469,7 +498,9 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
469
498
|
supplyBank: publicKey(this.marginfiSupplyAccounts.bank),
|
470
499
|
supplyPriceOracle: publicKey(this.supplyPriceOracle),
|
471
500
|
positionSupplyTa: publicKey(this.positionSupplyTa),
|
472
|
-
authoritySupplyTa: publicKey(
|
501
|
+
authoritySupplyTa: publicKey(
|
502
|
+
getTokenAccount(this.authority, this.supplyMint)
|
503
|
+
),
|
473
504
|
vaultSupplyTa: needSupplyAccounts
|
474
505
|
? publicKey(this.marginfiSupplyAccounts.liquidityVault)
|
475
506
|
: undefined,
|
@@ -479,7 +510,9 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
479
510
|
debtBank: publicKey(this.marginfiDebtAccounts.bank),
|
480
511
|
debtPriceOracle: publicKey(this.debtPriceOracle),
|
481
512
|
positionDebtTa: publicKey(this.positionDebtTa),
|
482
|
-
authorityDebtTa: publicKey(
|
513
|
+
authorityDebtTa: publicKey(
|
514
|
+
getTokenAccount(this.authority, this.debtMint)
|
515
|
+
),
|
483
516
|
vaultDebtTa: needDebtAccounts
|
484
517
|
? publicKey(this.marginfiDebtAccounts.liquidityVault)
|
485
518
|
: undefined,
|
@@ -488,9 +521,11 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
488
521
|
: undefined,
|
489
522
|
rebalanceType,
|
490
523
|
targetLiqUtilizationRateBps: targetLiqUtilizationRateBps ?? null,
|
491
|
-
targetInAmountBaseUnit: targetLiqUtilizationRateBps
|
524
|
+
targetInAmountBaseUnit: targetLiqUtilizationRateBps
|
525
|
+
? swapDetails.amount
|
526
|
+
: null,
|
492
527
|
limitGapBps: limitGapBps ?? null,
|
493
|
-
slippageBps: slippageBps ?? 0
|
528
|
+
slippageBps: slippageBps ?? 0,
|
494
529
|
});
|
495
530
|
}
|
496
531
|
|
@@ -626,8 +661,8 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
626
661
|
const freshState = await getMarginfiAccountPositionState(
|
627
662
|
this.umi,
|
628
663
|
this.marginfiAccountPk,
|
629
|
-
|
630
|
-
|
664
|
+
undefined,
|
665
|
+
undefined,
|
631
666
|
this.livePositionUpdates
|
632
667
|
);
|
633
668
|
|
@@ -639,8 +674,20 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
639
674
|
this.log("Debt price: ", debtPrice);
|
640
675
|
this.log("Liq threshold bps:", freshState.liqThresholdBps);
|
641
676
|
this.log("Liq utilization rate bps:", freshState.liqUtilizationRateBps);
|
642
|
-
this.log(
|
643
|
-
|
677
|
+
this.log(
|
678
|
+
"Supply USD:",
|
679
|
+
fromBaseUnit(
|
680
|
+
freshState.supply.amountUsed.baseUnit,
|
681
|
+
freshState.supply.decimals
|
682
|
+
) * supplyPrice
|
683
|
+
);
|
684
|
+
this.log(
|
685
|
+
"Debt USD:",
|
686
|
+
fromBaseUnit(
|
687
|
+
freshState.debt.amountUsed.baseUnit,
|
688
|
+
freshState.debt.decimals
|
689
|
+
) * debtPrice
|
690
|
+
);
|
644
691
|
}
|
645
692
|
|
646
693
|
return freshState;
|
@@ -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({
|
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({
|
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.
|
322
|
+
async (attemptNum) =>
|
323
|
+
this.sendTransaction(
|
324
|
+
updateLookupTable.updateLutTx,
|
307
325
|
updateLutTxName,
|
308
|
-
|
309
|
-
|
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
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
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
|
}
|