@haven-fi/solauto-sdk 1.0.683 → 1.0.685
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/README.md +2 -3
- package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -1
- package/dist/services/rebalance/rebalanceTxBuilder.js +4 -4
- package/dist/services/solauto/solautoClient.d.ts +8 -0
- package/dist/services/solauto/solautoClient.d.ts.map +1 -1
- package/dist/services/solauto/solautoClient.js +12 -0
- package/dist/solautoPosition/positionUtils.js +1 -1
- package/dist/utils/instructionUtils.d.ts.map +1 -1
- package/local/txSandbox.ts +4 -4
- package/package.json +1 -1
- package/src/services/rebalance/rebalanceTxBuilder.ts +6 -8
- package/src/services/solauto/solautoClient.ts +38 -0
- package/src/solautoPosition/positionUtils.ts +1 -1
- package/src/utils/instructionUtils.ts +0 -1
- package/tests/transactions/shared.ts +1 -1
package/README.md
CHANGED
@@ -17,7 +17,7 @@ const client = solauto.getClient(solauto.LendingPlatform.MARGINFI, {
|
|
17
17
|
// Initialize the client
|
18
18
|
const supplyMint = new PublicKey(NATIVE_MINT);
|
19
19
|
const debtMint = new PublicKey(USDC);
|
20
|
-
await client.
|
20
|
+
await client.initializeNewSolautoPosition({
|
21
21
|
positionId: 1,
|
22
22
|
lpPoolAccount: solauto.getMarginfiAccounts().defaultGroup,
|
23
23
|
supplyMint,
|
@@ -84,9 +84,8 @@ const client = solauto.getClient(solauto.LendingPlatform.MARGINFI, {
|
|
84
84
|
});
|
85
85
|
|
86
86
|
// Initialize the client
|
87
|
-
await client.
|
87
|
+
await client.initializeExistingSolautoPosition({
|
88
88
|
positionId: myPositionId,
|
89
|
-
authority: "[POSITION AUTHORITY]",
|
90
89
|
});
|
91
90
|
|
92
91
|
const transactionItems = [
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA8BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IACpC,OAAO,CAAC,YAAY,CAAC;IATvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAiC;gBAGxC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA,EACpC,YAAY,CAAC,EAAE,OAAO,YAAA;IAGhC,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;IA2C5B,OAAO,CAAC,iCAAiC;YAgC3B,qBAAqB;IA2CnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,yBAAyB;YAqBnB,mBAAmB;YAwBnB,sBAAsB;YAyBtB,mBAAmB;IAmEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
|
@@ -65,9 +65,9 @@ class RebalanceTxBuilder {
|
|
65
65
|
});
|
66
66
|
return intermediaryLiqUtilizationRateBps;
|
67
67
|
}
|
68
|
-
async flashLoanRequirements(
|
68
|
+
async flashLoanRequirements() {
|
69
69
|
const intermediaryLiqUtilizationRateBps = this.intermediaryLiqUtilizationRateBps();
|
70
|
-
const maxLtvRateBps = (0, utils_1.getMaxLiqUtilizationRateBps)(this.client.pos.state.maxLtvBps, this.client.pos.state.liqThresholdBps, 0.
|
70
|
+
const maxLtvRateBps = (0, utils_1.getMaxLiqUtilizationRateBps)(this.client.pos.state.maxLtvBps, this.client.pos.state.liqThresholdBps, 0.015);
|
71
71
|
if (intermediaryLiqUtilizationRateBps < maxLtvRateBps) {
|
72
72
|
return undefined;
|
73
73
|
}
|
@@ -159,7 +159,7 @@ class RebalanceTxBuilder {
|
|
159
159
|
return false;
|
160
160
|
}
|
161
161
|
this.values = rebalanceValues;
|
162
|
-
this.flRequirements = await this.flashLoanRequirements(
|
162
|
+
this.flRequirements = await this.flashLoanRequirements();
|
163
163
|
if (this.flRequirements?.flFeeBps) {
|
164
164
|
this.values = this.getRebalanceValues();
|
165
165
|
}
|
@@ -178,7 +178,7 @@ class RebalanceTxBuilder {
|
|
178
178
|
// Rebalance ix will already refresh internally if position is self managed
|
179
179
|
const utilizationRateDiff = Math.abs(await this.client.pos.utilizationRateBpsDrift(this.priceType));
|
180
180
|
(0, utils_1.consoleLog)("Liq utilization rate diff:", utilizationRateDiff);
|
181
|
-
if (utilizationRateDiff >=
|
181
|
+
if (utilizationRateDiff >= 5) {
|
182
182
|
(0, utils_1.consoleLog)("Refreshing before rebalance");
|
183
183
|
return true;
|
184
184
|
}
|
@@ -14,6 +14,10 @@ export interface SolautoClientArgs extends ReferralStateManagerArgs {
|
|
14
14
|
lpPoolAccount?: PublicKey;
|
15
15
|
lpUserAccount?: PublicKey;
|
16
16
|
}
|
17
|
+
export type ExistingSolautoPositionArgs = Required<Pick<SolautoClientArgs, "positionId">> & Partial<Pick<SolautoClientArgs, "authority">>;
|
18
|
+
export type NewSolautoPositionArgs = Required<Pick<SolautoClientArgs, "positionId" | "supplyMint" | "debtMint" | "lpPoolAccount">>;
|
19
|
+
export type ExistingSelfManagedPositionArgs = Required<Pick<SolautoClientArgs, "lpUserAccount">>;
|
20
|
+
export type NewSelfManagedPositionArgs = Required<Pick<SolautoClientArgs, "supplyMint" | "debtMint" | "lpPoolAccount">>;
|
17
21
|
export declare abstract class SolautoClient extends ReferralStateManager {
|
18
22
|
lendingPlatform: LendingPlatform;
|
19
23
|
lpEnv: ProgramEnv;
|
@@ -30,6 +34,10 @@ export declare abstract class SolautoClient extends ReferralStateManager {
|
|
30
34
|
contextUpdates: ContextUpdates;
|
31
35
|
private signerSupplyBalance;
|
32
36
|
private signerDebtBalance;
|
37
|
+
initializeExistingSolautoPosition(args: ExistingSolautoPositionArgs): Promise<void>;
|
38
|
+
initializeNewSolautoPosition(args: NewSolautoPositionArgs): Promise<void>;
|
39
|
+
initializeExistingSelfManagedPosition(args: ExistingSelfManagedPositionArgs): Promise<void>;
|
40
|
+
initializeNewSelfManagedPosition(args: NewSelfManagedPositionArgs): Promise<void>;
|
33
41
|
initialize(args: SolautoClientArgs): Promise<void>;
|
34
42
|
referredBySupplyTa(): PublicKey | undefined;
|
35
43
|
referredByDebtTa(): PublicKey | undefined;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,gCAAgC,EAEhC,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,EAAG,eAAe,CAAC;IAClC,KAAK,EAAG,UAAU,CAAC;IAEnB,SAAS,EAAG,SAAS,CAAC;IAEtB,GAAG,EAAG,iBAAiB,CAAC;IAExB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,cAAc,EAAG,SAAS,CAAC;IAE3B,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,UAAU,EAAG,oBAAoB,CAAC;IAClC,cAAc,EAAE,cAAc,CAAwB;IAE7D,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAqB;IAExC,UAAU,CAAC,IAAI,EAAE,iBAAiB;IAyExC,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAO3C,gBAAgB,IAAI,SAAS,GAAG,SAAS;IAOnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAe1C,mBAAmB,IAAI,MAAM,EAAE;IAS/B,gBAAgB,IAAI,SAAS,EAAE;IAezB,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;IAgEK,cAAc,IAAI,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAgBF,cAAc,CACZ,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IA0BrB,gBAAgB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IAsDlE,QAAQ,CAAC,eAAe,IAAI,kBAAkB;IAE9C,WAAW,IAAI,kBAAkB;IAcjC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAE5D,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAqFlE,QAAQ,CAAC,WAAW,CAClB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CACtB"}
|
1
|
+
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"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"}
|
@@ -16,6 +16,18 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
16
16
|
super(...arguments);
|
17
17
|
this.contextUpdates = new utils_1.ContextUpdates();
|
18
18
|
}
|
19
|
+
async initializeExistingSolautoPosition(args) {
|
20
|
+
await this.initialize(args);
|
21
|
+
}
|
22
|
+
async initializeNewSolautoPosition(args) {
|
23
|
+
await this.initialize(args);
|
24
|
+
}
|
25
|
+
async initializeExistingSelfManagedPosition(args) {
|
26
|
+
await this.initialize(args);
|
27
|
+
}
|
28
|
+
async initializeNewSelfManagedPosition(args) {
|
29
|
+
await this.initialize(args);
|
30
|
+
}
|
19
31
|
async initialize(args) {
|
20
32
|
await super.initialize(args);
|
21
33
|
const positionId = args.positionId ?? 0;
|
@@ -115,7 +115,7 @@ function createFakePositionState(supply, debt, maxLtvBps, liqThresholdBps) {
|
|
115
115
|
},
|
116
116
|
maxLtvBps,
|
117
117
|
liqThresholdBps,
|
118
|
-
lastRefreshed: BigInt((0, utils_1.currentUnixSeconds)()),
|
118
|
+
lastRefreshed: BigInt((0, utils_1.currentUnixSeconds)() - 100),
|
119
119
|
padding1: [],
|
120
120
|
padding2: [],
|
121
121
|
padding: [],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"instructionUtils.d.ts","sourceRoot":"","sources":["../../src/utils/instructionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,aAAa,EAEb,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"instructionUtils.d.ts","sourceRoot":"","sources":["../../src/utils/instructionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,aAAa,EAEb,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,gCAAgC,EAC/C,GAAG,CAAC,EAAE,kBAAkB,mBAQzB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,mBAOzD;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,gBAAgB,CAAC,gCAAgC,CAAC,EAC5D,GAAG,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,mBAY1C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,mBAOrD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAUpE;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAUnE;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,mBAcrE;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,mBAclE;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,mBAWrC;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,SAAS,EACtB,qBAAqB,EAAE,MAAM,qBAyC9B"}
|
package/local/txSandbox.ts
CHANGED
@@ -22,7 +22,7 @@ import {
|
|
22
22
|
} from "../src";
|
23
23
|
import { getSecretKey } from "./shared";
|
24
24
|
|
25
|
-
const payForTransaction =
|
25
|
+
const payForTransaction = true;
|
26
26
|
const testProgram = false;
|
27
27
|
const lpEnv: ProgramEnv = "Prod";
|
28
28
|
|
@@ -46,9 +46,9 @@ export async function main() {
|
|
46
46
|
lpEnv,
|
47
47
|
});
|
48
48
|
|
49
|
-
await client.
|
50
|
-
positionId:
|
51
|
-
authority: new PublicKey("
|
49
|
+
await client.initializeExistingSolautoPosition({
|
50
|
+
positionId: 3,
|
51
|
+
authority: new PublicKey("61rtn5tzVkesapo6Cz83SPoShUfAePSxJsqniuF2wRKC"),
|
52
52
|
// lpUserAccount: new PublicKey(
|
53
53
|
// "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
|
54
54
|
// ),
|
package/package.json
CHANGED
@@ -15,12 +15,10 @@ import {
|
|
15
15
|
getTokenAccount,
|
16
16
|
hasFirstRebalance,
|
17
17
|
hasLastRebalance,
|
18
|
-
realtimeUsdToEmaUsd,
|
19
18
|
safeGetPrice,
|
20
19
|
tokenInfo,
|
21
20
|
} from "../../utils";
|
22
21
|
import {
|
23
|
-
LendingPlatform,
|
24
22
|
PositionTokenState,
|
25
23
|
PriceType,
|
26
24
|
RebalanceDirection,
|
@@ -154,15 +152,15 @@ export class RebalanceTxBuilder {
|
|
154
152
|
return intermediaryLiqUtilizationRateBps;
|
155
153
|
}
|
156
154
|
|
157
|
-
private async flashLoanRequirements(
|
158
|
-
|
159
|
-
|
155
|
+
private async flashLoanRequirements(): Promise<
|
156
|
+
FlashLoanRequirements | undefined
|
157
|
+
> {
|
160
158
|
const intermediaryLiqUtilizationRateBps =
|
161
159
|
this.intermediaryLiqUtilizationRateBps();
|
162
160
|
const maxLtvRateBps = getMaxLiqUtilizationRateBps(
|
163
161
|
this.client.pos.state.maxLtvBps,
|
164
162
|
this.client.pos.state.liqThresholdBps,
|
165
|
-
0.
|
163
|
+
0.015
|
166
164
|
);
|
167
165
|
if (intermediaryLiqUtilizationRateBps < maxLtvRateBps) {
|
168
166
|
return undefined;
|
@@ -280,7 +278,7 @@ export class RebalanceTxBuilder {
|
|
280
278
|
}
|
281
279
|
this.values = rebalanceValues;
|
282
280
|
|
283
|
-
this.flRequirements = await this.flashLoanRequirements(
|
281
|
+
this.flRequirements = await this.flashLoanRequirements();
|
284
282
|
if (this.flRequirements?.flFeeBps) {
|
285
283
|
this.values = this.getRebalanceValues()!;
|
286
284
|
}
|
@@ -313,7 +311,7 @@ export class RebalanceTxBuilder {
|
|
313
311
|
);
|
314
312
|
consoleLog("Liq utilization rate diff:", utilizationRateDiff);
|
315
313
|
|
316
|
-
if (utilizationRateDiff >=
|
314
|
+
if (utilizationRateDiff >= 5) {
|
317
315
|
consoleLog("Refreshing before rebalance");
|
318
316
|
return true;
|
319
317
|
}
|
@@ -48,6 +48,26 @@ export interface SolautoClientArgs extends ReferralStateManagerArgs {
|
|
48
48
|
lpUserAccount?: PublicKey;
|
49
49
|
}
|
50
50
|
|
51
|
+
export type ExistingSolautoPositionArgs = Required<
|
52
|
+
Pick<SolautoClientArgs, "positionId">
|
53
|
+
> &
|
54
|
+
Partial<Pick<SolautoClientArgs, "authority">>;
|
55
|
+
|
56
|
+
export type NewSolautoPositionArgs = Required<
|
57
|
+
Pick<
|
58
|
+
SolautoClientArgs,
|
59
|
+
"positionId" | "supplyMint" | "debtMint" | "lpPoolAccount"
|
60
|
+
>
|
61
|
+
>;
|
62
|
+
|
63
|
+
export type ExistingSelfManagedPositionArgs = Required<
|
64
|
+
Pick<SolautoClientArgs, "lpUserAccount">
|
65
|
+
>;
|
66
|
+
|
67
|
+
export type NewSelfManagedPositionArgs = Required<
|
68
|
+
Pick<SolautoClientArgs, "supplyMint" | "debtMint" | "lpPoolAccount">
|
69
|
+
>;
|
70
|
+
|
51
71
|
export abstract class SolautoClient extends ReferralStateManager {
|
52
72
|
public lendingPlatform!: LendingPlatform;
|
53
73
|
public lpEnv!: ProgramEnv;
|
@@ -73,6 +93,24 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
73
93
|
private signerSupplyBalance: bigint | undefined;
|
74
94
|
private signerDebtBalance: bigint | undefined;
|
75
95
|
|
96
|
+
async initializeExistingSolautoPosition(args: ExistingSolautoPositionArgs) {
|
97
|
+
await this.initialize(args);
|
98
|
+
}
|
99
|
+
|
100
|
+
async initializeNewSolautoPosition(args: NewSolautoPositionArgs) {
|
101
|
+
await this.initialize(args);
|
102
|
+
}
|
103
|
+
|
104
|
+
async initializeExistingSelfManagedPosition(
|
105
|
+
args: ExistingSelfManagedPositionArgs
|
106
|
+
) {
|
107
|
+
await this.initialize(args);
|
108
|
+
}
|
109
|
+
|
110
|
+
async initializeNewSelfManagedPosition(args: NewSelfManagedPositionArgs) {
|
111
|
+
await this.initialize(args);
|
112
|
+
}
|
113
|
+
|
76
114
|
async initialize(args: SolautoClientArgs) {
|
77
115
|
await super.initialize(args);
|
78
116
|
|
@@ -12,7 +12,6 @@ import {
|
|
12
12
|
TransactionTooLargeError,
|
13
13
|
} from "../services";
|
14
14
|
import { PublicKey } from "@solana/web3.js";
|
15
|
-
import { tokenInfo } from "./generalUtils";
|
16
15
|
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
17
16
|
|
18
17
|
export function openSolautoPosition(
|
@@ -41,7 +41,7 @@ export async function e2eTransactionTest(
|
|
41
41
|
const supplyMint = new PublicKey(NATIVE_MINT);
|
42
42
|
const debtMint = new PublicKey(USDC);
|
43
43
|
|
44
|
-
await client.
|
44
|
+
await client.initializeNewSolautoPosition({
|
45
45
|
positionId: 1,
|
46
46
|
lpPoolAccount: getMarginfiAccounts().defaultGroup,
|
47
47
|
supplyMint,
|