@haven-fi/solauto-sdk 1.0.161 → 1.0.163
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/clients/solautoClient.d.ts +1 -1
- package/dist/clients/solautoClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.d.ts +1 -1
- package/dist/clients/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +1 -2
- package/dist/generated/instructions/marginfiRebalance.d.ts +0 -2
- package/dist/generated/instructions/marginfiRebalance.d.ts.map +1 -1
- package/dist/generated/instructions/marginfiRebalance.js +0 -1
- package/dist/generated/types/rebalanceData.d.ts +0 -2
- package/dist/generated/types/rebalanceData.d.ts.map +1 -1
- package/dist/generated/types/rebalanceData.js +1 -2
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +5 -6
- package/dist/utils/jupiterUtils.js +1 -1
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +3 -2
- package/dist/utils/solauto/rebalanceUtils.d.ts +1 -0
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +13 -13
- package/package.json +1 -1
- package/src/clients/solautoClient.ts +0 -1
- package/src/clients/solautoMarginfiClient.ts +0 -2
- package/src/generated/instructions/marginfiRebalance.ts +0 -3
- package/src/generated/types/rebalanceData.ts +1 -4
- package/src/transactions/transactionUtils.ts +1 -6
- package/src/utils/jupiterUtils.ts +1 -1
- package/src/utils/solanaUtils.ts +4 -3
- package/src/utils/solauto/rebalanceUtils.ts +25 -19
- package/tests/transactions/solautoMarginfi.ts +4 -4
@@ -65,7 +65,7 @@ export declare abstract class SolautoClient extends TxHandler {
|
|
65
65
|
protocolInteraction(args: SolautoActionArgs): TransactionBuilder;
|
66
66
|
abstract flashBorrow(flashLoanDetails: FlashLoanDetails, destinationTokenAccount: PublicKey): TransactionBuilder;
|
67
67
|
abstract flashRepay(flashLoanDetails: FlashLoanDetails): TransactionBuilder;
|
68
|
-
abstract rebalance(rebalanceStep: "A" | "B", swapDetails: JupSwapDetails, rebalanceType: SolautoRebalanceTypeArgs,
|
68
|
+
abstract rebalance(rebalanceStep: "A" | "B", swapDetails: JupSwapDetails, rebalanceType: SolautoRebalanceTypeArgs, flashLoan?: FlashLoanDetails, targetLiqUtilizationRateBps?: number, limitGapBps?: number): TransactionBuilder;
|
69
69
|
getFreshPositionState(): Promise<PositionState | undefined>;
|
70
70
|
}
|
71
71
|
//# sourceMappingURL=solautoClient.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
|
@@ -38,7 +38,7 @@ export declare class SolautoMarginfiClient extends SolautoClient {
|
|
38
38
|
protocolInteraction(args: SolautoActionArgs): TransactionBuilder;
|
39
39
|
private marginfiProtocolInteractionIx;
|
40
40
|
private marginfiSolautoProtocolInteractionIx;
|
41
|
-
rebalance(rebalanceStep: "A" | "B", swapDetails: JupSwapDetails, rebalanceType: SolautoRebalanceTypeArgs,
|
41
|
+
rebalance(rebalanceStep: "A" | "B", swapDetails: JupSwapDetails, rebalanceType: SolautoRebalanceTypeArgs, flashLoan?: FlashLoanDetails, targetLiqUtilizationRateBps?: number, limitGapBps?: number): TransactionBuilder;
|
42
42
|
flashBorrow(flashLoanDetails: FlashLoanDetails, destinationTokenAccount: PublicKey): TransactionBuilder;
|
43
43
|
flashRepay(flashLoanDetails: FlashLoanDetails): TransactionBuilder;
|
44
44
|
createIntermediaryMarginfiAccount(): TransactionBuilder;
|
@@ -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;IA+D1C,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,
|
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;IA+D1C,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,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB;IAmErB,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"}
|
@@ -291,7 +291,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
291
291
|
solautoAction: args,
|
292
292
|
});
|
293
293
|
}
|
294
|
-
rebalance(rebalanceStep, swapDetails, rebalanceType,
|
294
|
+
rebalance(rebalanceStep, swapDetails, rebalanceType, flashLoan, targetLiqUtilizationRateBps, limitGapBps) {
|
295
295
|
const inputIsSupply = swapDetails.inputMint.equals(this.supplyMint);
|
296
296
|
const outputIsSupply = swapDetails.outputMint.equals(this.supplyMint);
|
297
297
|
const needSupplyAccounts = (inputIsSupply && rebalanceStep === "A") ||
|
@@ -340,7 +340,6 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
340
340
|
? swapDetails.amount
|
341
341
|
: null,
|
342
342
|
limitGapBps: limitGapBps ?? null,
|
343
|
-
slippageBps: slippageBps ?? 0,
|
344
343
|
});
|
345
344
|
}
|
346
345
|
flashBorrow(flashLoanDetails, destinationTokenAccount) {
|
@@ -37,14 +37,12 @@ export type MarginfiRebalanceInstructionAccounts = {
|
|
37
37
|
};
|
38
38
|
export type MarginfiRebalanceInstructionData = {
|
39
39
|
discriminator: number;
|
40
|
-
slippageBps: number;
|
41
40
|
rebalanceType: SolautoRebalanceType;
|
42
41
|
targetLiqUtilizationRateBps: Option<number>;
|
43
42
|
targetInAmountBaseUnit: Option<bigint>;
|
44
43
|
limitGapBps: Option<number>;
|
45
44
|
};
|
46
45
|
export type MarginfiRebalanceInstructionDataArgs = {
|
47
|
-
slippageBps: number;
|
48
46
|
rebalanceType: SolautoRebalanceTypeArgs;
|
49
47
|
targetLiqUtilizationRateBps: OptionOrNullable<number>;
|
50
48
|
targetInAmountBaseUnit: OptionOrNullable<number | bigint>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marginfiRebalance.d.ts","sourceRoot":"","sources":["../../../src/generated/instructions/marginfiRebalance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,GAAG,EACH,SAAS,EACT,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAOX,MAAM,sCAAsC,CAAC;AAM9C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EAEzB,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,aAAa,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC;IAC3B,mBAAmB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACtC,sBAAsB,EAAE,SAAS,GAAG,GAAG,CAAC;IACxC,kBAAkB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACrC,iBAAiB,EAAE,SAAS,GAAG,GAAG,CAAC;IACnC,eAAe,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,aAAa,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,eAAe,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,cAAc,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,UAAU,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5B,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,gBAAgB,EAAE,SAAS,GAAG,GAAG,CAAC;IAClC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,aAAa,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,oBAAoB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACvC,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC1B,eAAe,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAClC,cAAc,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,eAAe,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAClC,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC9B,kBAAkB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;CACtC,CAAC;AAGF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,
|
1
|
+
{"version":3,"file":"marginfiRebalance.d.ts","sourceRoot":"","sources":["../../../src/generated/instructions/marginfiRebalance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,GAAG,EACH,SAAS,EACT,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAOX,MAAM,sCAAsC,CAAC;AAM9C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EAEzB,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,aAAa,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC;IAC3B,mBAAmB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACtC,sBAAsB,EAAE,SAAS,GAAG,GAAG,CAAC;IACxC,kBAAkB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACrC,iBAAiB,EAAE,SAAS,GAAG,GAAG,CAAC;IACnC,eAAe,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,aAAa,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,eAAe,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,cAAc,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,UAAU,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5B,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,gBAAgB,EAAE,SAAS,GAAG,GAAG,CAAC;IAClC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,aAAa,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,oBAAoB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACvC,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC1B,eAAe,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAClC,cAAc,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,eAAe,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAClC,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC9B,kBAAkB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;CACtC,CAAC;AAGF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,oBAAoB,CAAC;IACpC,2BAA2B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,aAAa,EAAE,wBAAwB,CAAC;IACxC,2BAA2B,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtD,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC1D,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAgB,6CAA6C,IAAI,UAAU,CACzE,oCAAoC,EACpC,gCAAgC,CACjC,CAqBA;AAGD,MAAM,MAAM,gCAAgC,GAC1C,oCAAoC,CAAC;AAGvC,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAClC,KAAK,EAAE,oCAAoC,GAAG,gCAAgC,GAC7E,kBAAkB,CAkLpB"}
|
@@ -16,7 +16,6 @@ const types_1 = require("../types");
|
|
16
16
|
function getMarginfiRebalanceInstructionDataSerializer() {
|
17
17
|
return (0, serializers_1.mapSerializer)((0, serializers_1.struct)([
|
18
18
|
['discriminator', (0, serializers_1.u8)()],
|
19
|
-
['slippageBps', (0, serializers_1.u16)()],
|
20
19
|
['rebalanceType', (0, types_1.getSolautoRebalanceTypeSerializer)()],
|
21
20
|
['targetLiqUtilizationRateBps', (0, serializers_1.option)((0, serializers_1.u16)())],
|
22
21
|
['targetInAmountBaseUnit', (0, serializers_1.option)((0, serializers_1.u64)())],
|
@@ -10,7 +10,6 @@ import { SolautoRebalanceType, SolautoRebalanceTypeArgs } from '.';
|
|
10
10
|
export type RebalanceData = {
|
11
11
|
rebalanceType: SolautoRebalanceType;
|
12
12
|
padding1: Array<number>;
|
13
|
-
priceSlippageBps: number;
|
14
13
|
targetLiqUtilizationRateBps: number;
|
15
14
|
padding2: Array<number>;
|
16
15
|
flashLoanAmount: bigint;
|
@@ -19,7 +18,6 @@ export type RebalanceData = {
|
|
19
18
|
export type RebalanceDataArgs = {
|
20
19
|
rebalanceType: SolautoRebalanceTypeArgs;
|
21
20
|
padding1: Array<number>;
|
22
|
-
priceSlippageBps: number;
|
23
21
|
targetLiqUtilizationRateBps: number;
|
24
22
|
padding2: Array<number>;
|
25
23
|
flashLoanAmount: number | bigint;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rebalanceData.d.ts","sourceRoot":"","sources":["../../../src/generated/types/rebalanceData.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,UAAU,EAOX,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EAEzB,MAAM,GAAG,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,
|
1
|
+
{"version":3,"file":"rebalanceData.d.ts","sourceRoot":"","sources":["../../../src/generated/types/rebalanceData.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,UAAU,EAOX,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EAEzB,MAAM,GAAG,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,2BAA2B,EAAE,MAAM,CAAC;IACpC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,wBAAwB,CAAC;IACxC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,2BAA2B,EAAE,MAAM,CAAC;IACpC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,UAAU,CACtD,iBAAiB,EACjB,aAAa,CACd,CAYA"}
|
@@ -14,9 +14,8 @@ function getRebalanceDataSerializer() {
|
|
14
14
|
return (0, serializers_1.struct)([
|
15
15
|
['rebalanceType', (0, _1.getSolautoRebalanceTypeSerializer)()],
|
16
16
|
['padding1', (0, serializers_1.array)((0, serializers_1.u8)(), { size: 7 })],
|
17
|
-
['priceSlippageBps', (0, serializers_1.u16)()],
|
18
17
|
['targetLiqUtilizationRateBps', (0, serializers_1.u16)()],
|
19
|
-
['padding2', (0, serializers_1.array)((0, serializers_1.u8)(), { size:
|
18
|
+
['padding2', (0, serializers_1.array)((0, serializers_1.u8)(), { size: 6 })],
|
20
19
|
['flashLoanAmount', (0, serializers_1.u64)()],
|
21
20
|
['padding', (0, serializers_1.bytes)({ size: 32 })],
|
22
21
|
], { description: 'RebalanceData' });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAEL,aAAa,EAUd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyNzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAEL,aAAa,EAUd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyNzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;AAmLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IACE,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACD,SAAS,CACZ,CA+HA;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAmCrD"}
|
@@ -185,7 +185,6 @@ function getRebalanceInstructions(tx) {
|
|
185
185
|
try {
|
186
186
|
const serializer = (0, generated_1.getMarginfiRebalanceInstructionDataSerializer)();
|
187
187
|
const discriminator = serializer.serialize({
|
188
|
-
slippageBps: 0,
|
189
188
|
limitGapBps: 0,
|
190
189
|
targetInAmountBaseUnit: 0,
|
191
190
|
rebalanceType: generated_1.SolautoRebalanceType.None,
|
@@ -350,11 +349,11 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
350
349
|
client.flashBorrow(flashLoan, (0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(client.signer.publicKey), swapDetails.inputMint)),
|
351
350
|
...(addFirstRebalance
|
352
351
|
? [
|
353
|
-
client.rebalance("A", swapDetails, rebalanceType,
|
352
|
+
client.rebalance("A", swapDetails, rebalanceType, flashLoan, targetLiqUtilizationRateBps),
|
354
353
|
]
|
355
354
|
: []),
|
356
355
|
swapIx,
|
357
|
-
client.rebalance("B", swapDetails, rebalanceType,
|
356
|
+
client.rebalance("B", swapDetails, rebalanceType, flashLoan, targetLiqUtilizationRateBps),
|
358
357
|
client.flashRepay(flashLoan),
|
359
358
|
]);
|
360
359
|
}
|
@@ -363,9 +362,9 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
363
362
|
tx = tx.add([
|
364
363
|
setupInstructions,
|
365
364
|
tokenLedgerIx,
|
366
|
-
client.rebalance("A", swapDetails, rebalanceType,
|
365
|
+
client.rebalance("A", swapDetails, rebalanceType, undefined, targetLiqUtilizationRateBps),
|
367
366
|
swapIx,
|
368
|
-
client.rebalance("B", swapDetails, rebalanceType,
|
367
|
+
client.rebalance("B", swapDetails, rebalanceType, undefined, targetLiqUtilizationRateBps),
|
369
368
|
]);
|
370
369
|
}
|
371
370
|
if (client.solautoPositionState.liqUtilizationRateBps >
|
@@ -388,7 +387,7 @@ async function convertReferralFeesToDestination(umi, referralState, tokenAccount
|
|
388
387
|
inputMint: tokenAccountData.mint,
|
389
388
|
outputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(referralState.destFeesMint),
|
390
389
|
exactIn: true,
|
391
|
-
slippageIncFactor: 0.
|
390
|
+
slippageIncFactor: 0.25,
|
392
391
|
});
|
393
392
|
let tx = (0, umi_1.transactionBuilder)()
|
394
393
|
.add(setupInstructions)
|
@@ -31,7 +31,7 @@ async function getJupSwapTransaction(signer, swapDetails, attemptNum) {
|
|
31
31
|
: swapDetails.exactIn
|
32
32
|
? "ExactIn"
|
33
33
|
: undefined,
|
34
|
-
slippageBps:
|
34
|
+
slippageBps: 50,
|
35
35
|
maxAccounts: !swapDetails.exactOut ? 60 : undefined,
|
36
36
|
}), 3);
|
37
37
|
const priceImpactBps = (Math.round((0, numberUtils_1.toBps)(parseFloat(quoteResponse.priceImpactPct))) + 1);
|
@@ -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,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GACb,CAAC,UAAU,EAAE,GAAG,CAAC,CAInB;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,MAAM,CAAC,EAAE,kBAAkB,EAC3B,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,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GACb,CAAC,UAAU,EAAE,GAAG,CAAC,CAInB;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,MAAM,CAAC,EAAE,kBAAkB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,GAAE,kBAA+C,EAChE,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CA+DjC"}
|
@@ -154,15 +154,16 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, txType, attem
|
|
154
154
|
console.log("Serialized transaction size: ", tx.getTransactionSize(umi));
|
155
155
|
const feeEstimate = await getComputeUnitPriceEstimate(umi, tx, prioritySetting);
|
156
156
|
console.log("Compute unit price: ", feeEstimate);
|
157
|
+
let computeUnitLimit = undefined;
|
157
158
|
if (txType !== "skip-simulation") {
|
158
159
|
// TODO: we should only retry simulation if it's not a solauto error
|
159
160
|
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);
|
160
|
-
|
161
|
+
computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.1);
|
161
162
|
console.log("Compute unit limit: ", computeUnitLimit);
|
162
163
|
}
|
163
164
|
if (txType !== "only-simulate") {
|
164
165
|
onAwaitingSign?.();
|
165
|
-
const result = await assembleFinalTransaction(umi.identity, tx, feeEstimate,
|
166
|
+
const result = await assembleFinalTransaction(umi.identity, tx, feeEstimate, computeUnitLimit).sendAndConfirm(umi, {
|
166
167
|
send: {
|
167
168
|
skipPreflight: true,
|
168
169
|
commitment: "confirmed",
|
@@ -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,EACX,aAAa,EAEb,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
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,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA+IjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,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,CAmEjB;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,EACvB,cAAc,EAAE,MAAM,GACrB,gBAAgB,GAAG,SAAS,CAgE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CA4ChB"}
|
@@ -106,9 +106,11 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
|
|
106
106
|
limitGap;
|
107
107
|
debtAdjustmentUsd = maxUsageUsd - maxUsageUsd * limitGap;
|
108
108
|
}
|
109
|
+
const maxRepayTo = (0, numberUtils_1.maxRepayToBps)(state.maxLtvBps, state.liqThresholdBps);
|
109
110
|
return {
|
110
111
|
increasingLeverage,
|
111
112
|
debtAdjustmentUsd,
|
113
|
+
repayingCloseToMaxLtv: state.liqUtilizationRateBps > maxRepayTo && targetRateBps >= maxRepayTo,
|
112
114
|
amountToDcaIn: amountToDcaIn ?? 0,
|
113
115
|
amountUsdToDcaIn,
|
114
116
|
dcaTokenType: dca?.tokenType,
|
@@ -142,15 +144,13 @@ function getFlashLoanDetails(client, values, jupQuote, priceImpactBps) {
|
|
142
144
|
flashLoanToken = client.solautoPositionState.supply;
|
143
145
|
flashLoanTokenPrice = (0, generalUtils_2.safeGetPrice)(client.supplyMint);
|
144
146
|
}
|
145
|
-
const exactAmountBaseUnit = jupQuote
|
146
|
-
(jupQuote.swapMode === "ExactOut" || jupQuote.swapMode === "ExactIn")
|
147
|
+
const exactAmountBaseUnit = jupQuote.swapMode === "ExactOut" || jupQuote.swapMode === "ExactIn"
|
147
148
|
? BigInt(parseInt(jupQuote.inAmount))
|
148
149
|
: undefined;
|
149
150
|
return requiresFlashLoan
|
150
151
|
? {
|
151
152
|
baseUnitAmount: exactAmountBaseUnit
|
152
|
-
? exactAmountBaseUnit
|
153
|
-
BigInt(Math.round(Number(exactAmountBaseUnit) * (0, numberUtils_1.fromBps)(priceImpactBps)))
|
153
|
+
? exactAmountBaseUnit
|
154
154
|
: (0, numberUtils_1.toBaseUnit)(debtAdjustmentWithSlippage / flashLoanTokenPrice, flashLoanToken.decimals),
|
155
155
|
mint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(flashLoanToken.mint),
|
156
156
|
}
|
@@ -165,11 +165,9 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
|
|
165
165
|
: client.solautoPositionState.debt;
|
166
166
|
const usdToSwap = Math.abs(values.debtAdjustmentUsd) +
|
167
167
|
(values.dcaTokenType === generated_1.TokenType.Debt ? values.amountUsdToDcaIn : 0);
|
168
|
-
const
|
169
|
-
|
170
|
-
|
171
|
-
const inputAmount = (0, numberUtils_1.toBaseUnit)(usdToSwap / inputPrice, input.decimals);
|
172
|
-
const exactOut = targetLiqUtilizationRateBps === 0;
|
168
|
+
const inputAmount = (0, numberUtils_1.toBaseUnit)(usdToSwap / (0, generalUtils_2.safeGetPrice)(input.mint), input.decimals);
|
169
|
+
const outputAmount = (0, numberUtils_1.toBaseUnit)(usdToSwap / (0, generalUtils_2.safeGetPrice)(output.mint), output.decimals);
|
170
|
+
const exactOut = values.repayingCloseToMaxLtv;
|
173
171
|
const exactIn = !exactOut && targetLiqUtilizationRateBps !== undefined;
|
174
172
|
return {
|
175
173
|
inputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(input.mint),
|
@@ -177,10 +175,12 @@ function getJupSwapRebalanceDetails(client, values, targetLiqUtilizationRateBps,
|
|
177
175
|
destinationWallet: client.solautoPosition,
|
178
176
|
slippageIncFactor: 0.5 + (attemptNum ?? 0) * 0.2,
|
179
177
|
amount: exactOut
|
180
|
-
?
|
181
|
-
|
182
|
-
|
183
|
-
|
178
|
+
? outputAmount +
|
179
|
+
(targetLiqUtilizationRateBps === 0
|
180
|
+
? BigInt(Math.round(Number(client.solautoPositionState.debt.amountUsed.baseUnit) *
|
181
|
+
// Add this small percentage to account for the APR on the debt between now and the transaction
|
182
|
+
0.0001))
|
183
|
+
: BigInt(0))
|
184
184
|
: inputAmount,
|
185
185
|
exactIn: exactIn,
|
186
186
|
exactOut: exactOut,
|
package/package.json
CHANGED
@@ -597,7 +597,6 @@ export abstract class SolautoClient extends TxHandler {
|
|
597
597
|
rebalanceStep: "A" | "B",
|
598
598
|
swapDetails: JupSwapDetails,
|
599
599
|
rebalanceType: SolautoRebalanceTypeArgs,
|
600
|
-
slippageBps: number,
|
601
600
|
flashLoan?: FlashLoanDetails,
|
602
601
|
targetLiqUtilizationRateBps?: number,
|
603
602
|
limitGapBps?: number,
|
@@ -453,7 +453,6 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
453
453
|
rebalanceStep: "A" | "B",
|
454
454
|
swapDetails: JupSwapDetails,
|
455
455
|
rebalanceType: SolautoRebalanceTypeArgs,
|
456
|
-
slippageBps: number,
|
457
456
|
flashLoan?: FlashLoanDetails,
|
458
457
|
targetLiqUtilizationRateBps?: number,
|
459
458
|
limitGapBps?: number
|
@@ -521,7 +520,6 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
521
520
|
? swapDetails.amount
|
522
521
|
: null,
|
523
522
|
limitGapBps: limitGapBps ?? null,
|
524
|
-
slippageBps: slippageBps ?? 0,
|
525
523
|
});
|
526
524
|
}
|
527
525
|
|
@@ -68,7 +68,6 @@ export type MarginfiRebalanceInstructionAccounts = {
|
|
68
68
|
// Data.
|
69
69
|
export type MarginfiRebalanceInstructionData = {
|
70
70
|
discriminator: number;
|
71
|
-
slippageBps: number;
|
72
71
|
rebalanceType: SolautoRebalanceType;
|
73
72
|
targetLiqUtilizationRateBps: Option<number>;
|
74
73
|
targetInAmountBaseUnit: Option<bigint>;
|
@@ -76,7 +75,6 @@ export type MarginfiRebalanceInstructionData = {
|
|
76
75
|
};
|
77
76
|
|
78
77
|
export type MarginfiRebalanceInstructionDataArgs = {
|
79
|
-
slippageBps: number;
|
80
78
|
rebalanceType: SolautoRebalanceTypeArgs;
|
81
79
|
targetLiqUtilizationRateBps: OptionOrNullable<number>;
|
82
80
|
targetInAmountBaseUnit: OptionOrNullable<number | bigint>;
|
@@ -95,7 +93,6 @@ export function getMarginfiRebalanceInstructionDataSerializer(): Serializer<
|
|
95
93
|
struct<MarginfiRebalanceInstructionData>(
|
96
94
|
[
|
97
95
|
['discriminator', u8()],
|
98
|
-
['slippageBps', u16()],
|
99
96
|
['rebalanceType', getSolautoRebalanceTypeSerializer()],
|
100
97
|
['targetLiqUtilizationRateBps', option(u16())],
|
101
98
|
['targetInAmountBaseUnit', option(u64())],
|
@@ -24,7 +24,6 @@ import {
|
|
24
24
|
export type RebalanceData = {
|
25
25
|
rebalanceType: SolautoRebalanceType;
|
26
26
|
padding1: Array<number>;
|
27
|
-
priceSlippageBps: number;
|
28
27
|
targetLiqUtilizationRateBps: number;
|
29
28
|
padding2: Array<number>;
|
30
29
|
flashLoanAmount: bigint;
|
@@ -34,7 +33,6 @@ export type RebalanceData = {
|
|
34
33
|
export type RebalanceDataArgs = {
|
35
34
|
rebalanceType: SolautoRebalanceTypeArgs;
|
36
35
|
padding1: Array<number>;
|
37
|
-
priceSlippageBps: number;
|
38
36
|
targetLiqUtilizationRateBps: number;
|
39
37
|
padding2: Array<number>;
|
40
38
|
flashLoanAmount: number | bigint;
|
@@ -49,9 +47,8 @@ export function getRebalanceDataSerializer(): Serializer<
|
|
49
47
|
[
|
50
48
|
['rebalanceType', getSolautoRebalanceTypeSerializer()],
|
51
49
|
['padding1', array(u8(), { size: 7 })],
|
52
|
-
['priceSlippageBps', u16()],
|
53
50
|
['targetLiqUtilizationRateBps', u16()],
|
54
|
-
['padding2', array(u8(), { size:
|
51
|
+
['padding2', array(u8(), { size: 6 })],
|
55
52
|
['flashLoanAmount', u64()],
|
56
53
|
['padding', bytes({ size: 32 })],
|
57
54
|
],
|
@@ -390,7 +390,6 @@ function getRebalanceInstructions(tx: TransactionBuilder): Instruction[] {
|
|
390
390
|
try {
|
391
391
|
const serializer = getMarginfiRebalanceInstructionDataSerializer();
|
392
392
|
const discriminator = serializer.serialize({
|
393
|
-
slippageBps: 0,
|
394
393
|
limitGapBps: 0,
|
395
394
|
targetInAmountBaseUnit: 0,
|
396
395
|
rebalanceType: SolautoRebalanceType.None,
|
@@ -651,7 +650,6 @@ export async function buildSolautoRebalanceTransaction(
|
|
651
650
|
"A",
|
652
651
|
swapDetails,
|
653
652
|
rebalanceType,
|
654
|
-
priceImpactBps,
|
655
653
|
flashLoan,
|
656
654
|
targetLiqUtilizationRateBps
|
657
655
|
),
|
@@ -662,7 +660,6 @@ export async function buildSolautoRebalanceTransaction(
|
|
662
660
|
"B",
|
663
661
|
swapDetails,
|
664
662
|
rebalanceType,
|
665
|
-
priceImpactBps,
|
666
663
|
flashLoan,
|
667
664
|
targetLiqUtilizationRateBps
|
668
665
|
),
|
@@ -677,7 +674,6 @@ export async function buildSolautoRebalanceTransaction(
|
|
677
674
|
"A",
|
678
675
|
swapDetails,
|
679
676
|
rebalanceType,
|
680
|
-
priceImpactBps,
|
681
677
|
undefined,
|
682
678
|
targetLiqUtilizationRateBps
|
683
679
|
),
|
@@ -686,7 +682,6 @@ export async function buildSolautoRebalanceTransaction(
|
|
686
682
|
"B",
|
687
683
|
swapDetails,
|
688
684
|
rebalanceType,
|
689
|
-
priceImpactBps,
|
690
685
|
undefined,
|
691
686
|
targetLiqUtilizationRateBps
|
692
687
|
),
|
@@ -727,7 +722,7 @@ export async function convertReferralFeesToDestination(
|
|
727
722
|
inputMint: tokenAccountData.mint,
|
728
723
|
outputMint: toWeb3JsPublicKey(referralState.destFeesMint),
|
729
724
|
exactIn: true,
|
730
|
-
slippageIncFactor: 0.
|
725
|
+
slippageIncFactor: 0.25,
|
731
726
|
});
|
732
727
|
|
733
728
|
let tx = transactionBuilder()
|
package/src/utils/solanaUtils.ts
CHANGED
@@ -288,6 +288,7 @@ export async function sendSingleOptimizedTransaction(
|
|
288
288
|
);
|
289
289
|
console.log("Compute unit price: ", feeEstimate);
|
290
290
|
|
291
|
+
let computeUnitLimit = undefined;
|
291
292
|
if (txType !== "skip-simulation") {
|
292
293
|
// TODO: we should only retry simulation if it's not a solauto error
|
293
294
|
const simulationResult = await retryWithExponentialBackoff(
|
@@ -308,8 +309,8 @@ export async function sendSingleOptimizedTransaction(
|
|
308
309
|
3
|
309
310
|
);
|
310
311
|
|
311
|
-
|
312
|
-
|
312
|
+
computeUnitLimit = Math.round(
|
313
|
+
simulationResult.value.unitsConsumed! * 1.1
|
313
314
|
);
|
314
315
|
console.log("Compute unit limit: ", computeUnitLimit);
|
315
316
|
}
|
@@ -320,7 +321,7 @@ export async function sendSingleOptimizedTransaction(
|
|
320
321
|
umi.identity,
|
321
322
|
tx,
|
322
323
|
feeEstimate,
|
323
|
-
|
324
|
+
computeUnitLimit
|
324
325
|
).sendAndConfirm(umi, {
|
325
326
|
send: {
|
326
327
|
skipPreflight: true,
|
@@ -23,6 +23,7 @@ import {
|
|
23
23
|
getLiqUtilzationRateBps,
|
24
24
|
getMaxLiqUtilizationRateBps,
|
25
25
|
getSolautoFeesBps,
|
26
|
+
maxRepayToBps,
|
26
27
|
toBaseUnit,
|
27
28
|
} from "../numberUtils";
|
28
29
|
import { USD_DECIMALS } from "../../constants/generalAccounts";
|
@@ -159,6 +160,7 @@ function getTargetRateAndDcaAmount(
|
|
159
160
|
export interface RebalanceValues {
|
160
161
|
increasingLeverage: boolean;
|
161
162
|
debtAdjustmentUsd: number;
|
163
|
+
repayingCloseToMaxLtv: boolean;
|
162
164
|
amountToDcaIn: number;
|
163
165
|
amountUsdToDcaIn: number;
|
164
166
|
dcaTokenType?: TokenType;
|
@@ -231,9 +233,11 @@ export function getRebalanceValues(
|
|
231
233
|
debtAdjustmentUsd = maxUsageUsd - maxUsageUsd * limitGap;
|
232
234
|
}
|
233
235
|
|
236
|
+
const maxRepayTo = maxRepayToBps(state.maxLtvBps, state.liqThresholdBps);
|
234
237
|
return {
|
235
238
|
increasingLeverage,
|
236
239
|
debtAdjustmentUsd,
|
240
|
+
repayingCloseToMaxLtv: state.liqUtilizationRateBps > maxRepayTo && targetRateBps >= maxRepayTo,
|
237
241
|
amountToDcaIn: amountToDcaIn ?? 0,
|
238
242
|
amountUsdToDcaIn,
|
239
243
|
dcaTokenType: dca?.tokenType,
|
@@ -299,18 +303,14 @@ export function getFlashLoanDetails(
|
|
299
303
|
}
|
300
304
|
|
301
305
|
const exactAmountBaseUnit =
|
302
|
-
jupQuote
|
303
|
-
(jupQuote.swapMode === "ExactOut" || jupQuote.swapMode === "ExactIn")
|
306
|
+
jupQuote.swapMode === "ExactOut" || jupQuote.swapMode === "ExactIn"
|
304
307
|
? BigInt(parseInt(jupQuote.inAmount))
|
305
308
|
: undefined;
|
306
309
|
|
307
310
|
return requiresFlashLoan
|
308
311
|
? {
|
309
312
|
baseUnitAmount: exactAmountBaseUnit
|
310
|
-
? exactAmountBaseUnit
|
311
|
-
BigInt(
|
312
|
-
Math.round(Number(exactAmountBaseUnit) * fromBps(priceImpactBps))
|
313
|
-
)
|
313
|
+
? exactAmountBaseUnit
|
314
314
|
: toBaseUnit(
|
315
315
|
debtAdjustmentWithSlippage / flashLoanTokenPrice,
|
316
316
|
flashLoanToken.decimals
|
@@ -337,12 +337,16 @@ export function getJupSwapRebalanceDetails(
|
|
337
337
|
Math.abs(values.debtAdjustmentUsd) +
|
338
338
|
(values.dcaTokenType === TokenType.Debt ? values.amountUsdToDcaIn : 0);
|
339
339
|
|
340
|
-
const
|
341
|
-
|
342
|
-
|
343
|
-
|
340
|
+
const inputAmount = toBaseUnit(
|
341
|
+
usdToSwap / safeGetPrice(input.mint)!,
|
342
|
+
input.decimals
|
343
|
+
);
|
344
|
+
const outputAmount = toBaseUnit(
|
345
|
+
usdToSwap / safeGetPrice(output.mint)!,
|
346
|
+
output.decimals
|
347
|
+
);
|
344
348
|
|
345
|
-
const exactOut =
|
349
|
+
const exactOut = values.repayingCloseToMaxLtv;
|
346
350
|
const exactIn = !exactOut && targetLiqUtilizationRateBps !== undefined;
|
347
351
|
|
348
352
|
return {
|
@@ -351,14 +355,16 @@ export function getJupSwapRebalanceDetails(
|
|
351
355
|
destinationWallet: client.solautoPosition,
|
352
356
|
slippageIncFactor: 0.5 + (attemptNum ?? 0) * 0.2,
|
353
357
|
amount: exactOut
|
354
|
-
?
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
358
|
+
? outputAmount +
|
359
|
+
(targetLiqUtilizationRateBps === 0
|
360
|
+
? BigInt(
|
361
|
+
Math.round(
|
362
|
+
Number(client.solautoPositionState!.debt.amountUsed.baseUnit) *
|
363
|
+
// Add this small percentage to account for the APR on the debt between now and the transaction
|
364
|
+
0.0001
|
365
|
+
)
|
366
|
+
)
|
367
|
+
: BigInt(0))
|
362
368
|
: inputAmount,
|
363
369
|
exactIn: exactIn,
|
364
370
|
exactOut: exactOut,
|
@@ -21,10 +21,10 @@ import { USDC_MINT } from "../../src/constants";
|
|
21
21
|
import { buildHeliusApiUrl } from "../../src/utils";
|
22
22
|
|
23
23
|
describe("Solauto Marginfi tests", async () => {
|
24
|
-
|
25
|
-
const signer = setupTest("solauto-manager");
|
24
|
+
const signer = setupTest();
|
25
|
+
// const signer = setupTest("solauto-manager");
|
26
26
|
|
27
|
-
const payForTransactions =
|
27
|
+
const payForTransactions = true;
|
28
28
|
const useJitoBundle = false;
|
29
29
|
const positionId = 1;
|
30
30
|
|
@@ -124,7 +124,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
124
124
|
transactionItems.push(
|
125
125
|
new TransactionItem(
|
126
126
|
async (attemptNum) =>
|
127
|
-
await buildSolautoRebalanceTransaction(client,
|
127
|
+
await buildSolautoRebalanceTransaction(client, 7200, attemptNum),
|
128
128
|
"rebalance"
|
129
129
|
)
|
130
130
|
);
|