@haven-fi/solauto-sdk 1.0.69 → 1.0.70
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/generated/accounts/solautoPosition.d.ts +7 -1
- package/dist/generated/accounts/solautoPosition.d.ts.map +1 -1
- package/dist/generated/accounts/solautoPosition.js +6 -2
- package/dist/generated/types/feeType.d.ts +15 -0
- package/dist/generated/types/feeType.d.ts.map +1 -0
- package/dist/generated/types/feeType.js +20 -0
- package/dist/generated/types/index.d.ts +1 -0
- package/dist/generated/types/index.d.ts.map +1 -1
- package/dist/generated/types/index.js +1 -0
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +1 -1
- package/dist/utils/numberUtils.d.ts +2 -1
- package/dist/utils/numberUtils.d.ts.map +1 -1
- package/dist/utils/numberUtils.js +3 -2
- package/dist/utils/solauto/rebalanceUtils.d.ts +2 -2
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -1
- package/dist/utils/solauto/rebalanceUtils.js +2 -2
- package/package.json +1 -1
- package/src/generated/accounts/solautoPosition.ts +15 -2
- package/src/generated/types/feeType.ts +23 -0
- package/src/generated/types/index.ts +1 -0
- package/src/transactions/transactionUtils.ts +1 -0
- package/src/utils/numberUtils.ts +3 -2
- package/src/utils/solauto/rebalanceUtils.ts +3 -1
- package/tests/transactions/solautoMarginfi.ts +25 -22
- package/tests/unit/rebalanceCalculations.ts +5 -1
@@ -7,7 +7,7 @@
|
|
7
7
|
*/
|
8
8
|
import { Account, Context, Pda, PublicKey, RpcAccount, RpcGetAccountOptions, RpcGetAccountsOptions } from '@metaplex-foundation/umi';
|
9
9
|
import { Serializer } from '@metaplex-foundation/umi/serializers';
|
10
|
-
import { PodBool, PodBoolArgs, PositionData, PositionDataArgs, PositionState, PositionStateArgs, RebalanceData, RebalanceDataArgs } from '../types';
|
10
|
+
import { FeeType, FeeTypeArgs, PodBool, PodBoolArgs, PositionData, PositionDataArgs, PositionState, PositionStateArgs, RebalanceData, RebalanceDataArgs } from '../types';
|
11
11
|
export type SolautoPosition = Account<SolautoPositionAccountData>;
|
12
12
|
export type SolautoPositionAccountData = {
|
13
13
|
bump: Array<number>;
|
@@ -18,6 +18,8 @@ export type SolautoPositionAccountData = {
|
|
18
18
|
position: PositionData;
|
19
19
|
state: PositionState;
|
20
20
|
rebalance: RebalanceData;
|
21
|
+
feeType: FeeType;
|
22
|
+
padding2: Array<number>;
|
21
23
|
padding: Array<number>;
|
22
24
|
};
|
23
25
|
export type SolautoPositionAccountDataArgs = {
|
@@ -29,6 +31,8 @@ export type SolautoPositionAccountDataArgs = {
|
|
29
31
|
position: PositionDataArgs;
|
30
32
|
state: PositionStateArgs;
|
31
33
|
rebalance: RebalanceDataArgs;
|
34
|
+
feeType: FeeTypeArgs;
|
35
|
+
padding2: Array<number>;
|
32
36
|
padding: Array<number>;
|
33
37
|
};
|
34
38
|
export declare function getSolautoPositionAccountDataSerializer(): Serializer<SolautoPositionAccountDataArgs, SolautoPositionAccountData>;
|
@@ -46,6 +50,8 @@ export declare function getSolautoPositionGpaBuilder(context: Pick<Context, 'rpc
|
|
46
50
|
position: PositionDataArgs;
|
47
51
|
state: PositionStateArgs;
|
48
52
|
rebalance: RebalanceDataArgs;
|
53
|
+
feeType: FeeTypeArgs;
|
54
|
+
padding2: Array<number>;
|
49
55
|
padding: Array<number>;
|
50
56
|
}>;
|
51
57
|
export declare function getSolautoPositionSize(): number;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoPosition.d.ts","sourceRoot":"","sources":["../../../src/generated/accounts/solautoPosition.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,OAAO,EACP,GAAG,EACH,SAAS,EACT,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EAKtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAMX,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,OAAO,EACP,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,
|
1
|
+
{"version":3,"file":"solautoPosition.d.ts","sourceRoot":"","sources":["../../../src/generated/accounts/solautoPosition.ts"],"names":[],"mappings":"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"}
|
@@ -28,7 +28,9 @@ function getSolautoPositionAccountDataSerializer() {
|
|
28
28
|
['position', (0, types_1.getPositionDataSerializer)()],
|
29
29
|
['state', (0, types_1.getPositionStateSerializer)()],
|
30
30
|
['rebalance', (0, types_1.getRebalanceDataSerializer)()],
|
31
|
-
['
|
31
|
+
['feeType', (0, types_1.getFeeTypeSerializer)()],
|
32
|
+
['padding2', (0, serializers_1.array)((0, serializers_1.u8)(), { size: 7 })],
|
33
|
+
['padding', (0, serializers_1.array)((0, serializers_1.u32)(), { size: 30 })],
|
32
34
|
], { description: 'SolautoPositionAccountData' });
|
33
35
|
}
|
34
36
|
function deserializeSolautoPosition(rawAccount) {
|
@@ -68,7 +70,9 @@ function getSolautoPositionGpaBuilder(context) {
|
|
68
70
|
position: [40, (0, types_1.getPositionDataSerializer)()],
|
69
71
|
state: [360, (0, types_1.getPositionStateSerializer)()],
|
70
72
|
rebalance: [648, (0, types_1.getRebalanceDataSerializer)()],
|
71
|
-
|
73
|
+
feeType: [704, (0, types_1.getFeeTypeSerializer)()],
|
74
|
+
padding2: [705, (0, serializers_1.array)((0, serializers_1.u8)(), { size: 7 })],
|
75
|
+
padding: [712, (0, serializers_1.array)((0, serializers_1.u32)(), { size: 30 })],
|
72
76
|
})
|
73
77
|
.deserializeUsing((account) => deserializeSolautoPosition(account));
|
74
78
|
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/**
|
2
|
+
* This code was AUTOGENERATED using the kinobi library.
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
4
|
+
* to add features, then rerun kinobi to update it.
|
5
|
+
*
|
6
|
+
* @see https://github.com/metaplex-foundation/kinobi
|
7
|
+
*/
|
8
|
+
import { Serializer } from '@metaplex-foundation/umi/serializers';
|
9
|
+
export declare enum FeeType {
|
10
|
+
Small = 0,
|
11
|
+
Default = 1
|
12
|
+
}
|
13
|
+
export type FeeTypeArgs = FeeType;
|
14
|
+
export declare function getFeeTypeSerializer(): Serializer<FeeTypeArgs, FeeType>;
|
15
|
+
//# sourceMappingURL=feeType.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"feeType.d.ts","sourceRoot":"","sources":["../../../src/generated/types/feeType.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAc,MAAM,sCAAsC,CAAC;AAE9E,oBAAY,OAAO;IACjB,KAAK,IAAA;IACL,OAAO,IAAA;CACR;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;AAElC,wBAAgB,oBAAoB,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAKvE"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* This code was AUTOGENERATED using the kinobi library.
|
4
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
5
|
+
* to add features, then rerun kinobi to update it.
|
6
|
+
*
|
7
|
+
* @see https://github.com/metaplex-foundation/kinobi
|
8
|
+
*/
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
10
|
+
exports.FeeType = void 0;
|
11
|
+
exports.getFeeTypeSerializer = getFeeTypeSerializer;
|
12
|
+
const serializers_1 = require("@metaplex-foundation/umi/serializers");
|
13
|
+
var FeeType;
|
14
|
+
(function (FeeType) {
|
15
|
+
FeeType[FeeType["Small"] = 0] = "Small";
|
16
|
+
FeeType[FeeType["Default"] = 1] = "Default";
|
17
|
+
})(FeeType || (exports.FeeType = FeeType = {}));
|
18
|
+
function getFeeTypeSerializer() {
|
19
|
+
return (0, serializers_1.scalarEnum)(FeeType, { description: 'FeeType' });
|
20
|
+
}
|
@@ -9,6 +9,7 @@ export * from './automationSettings';
|
|
9
9
|
export * from './automationSettingsInp';
|
10
10
|
export * from './dCASettings';
|
11
11
|
export * from './dCASettingsInp';
|
12
|
+
export * from './feeType';
|
12
13
|
export * from './lendingPlatform';
|
13
14
|
export * from './podBool';
|
14
15
|
export * from './positionData';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
@@ -25,6 +25,7 @@ __exportStar(require("./automationSettings"), exports);
|
|
25
25
|
__exportStar(require("./automationSettingsInp"), exports);
|
26
26
|
__exportStar(require("./dCASettings"), exports);
|
27
27
|
__exportStar(require("./dCASettingsInp"), exports);
|
28
|
+
__exportStar(require("./feeType"), exports);
|
28
29
|
__exportStar(require("./lendingPlatform"), exports);
|
29
30
|
__exportStar(require("./podBool"), exports);
|
30
31
|
__exportStar(require("./positionData"), exports);
|
@@ -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;AAGlC,OAAO,EAGL,OAAO,IAAI,eAAe,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,aAAa,EASd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuMzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA8G7B;AAkLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA4BnD;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,
|
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;AAGlC,OAAO,EAGL,OAAO,IAAI,eAAe,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,aAAa,EASd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuMzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA8G7B;AAkLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA4BnD;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,CA2HA;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CA8BzC"}
|
@@ -329,7 +329,7 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
329
329
|
client.log("Not eligible for a rebalance");
|
330
330
|
return undefined;
|
331
331
|
}
|
332
|
-
const values = (0, rebalanceUtils_1.getRebalanceValues)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), (0, generalUtils_1.currentUnixSeconds)(), constants_1.PRICES[client.supplyMint.toString()].price, constants_1.PRICES[client.debtMint.toString()].price, targetLiqUtilizationRateBps);
|
332
|
+
const values = (0, rebalanceUtils_1.getRebalanceValues)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(), client.solautoPositionData.feeType, (0, generalUtils_1.currentUnixSeconds)(), constants_1.PRICES[client.supplyMint.toString()].price, constants_1.PRICES[client.debtMint.toString()].price, targetLiqUtilizationRateBps);
|
333
333
|
client.log("Rebalance values: ", values);
|
334
334
|
const swapDetails = (0, rebalanceUtils_1.getJupSwapRebalanceDetails)(client, values, targetLiqUtilizationRateBps, attemptNum);
|
335
335
|
const { jupQuote, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { FeeType } from "../generated";
|
1
2
|
export declare function getLiqUtilzationRateBps(supplyUsd: number, debtUsd: number, liqThresholdBps: number): number;
|
2
3
|
export declare function toBaseUnit(value: number, decimals: number): bigint;
|
3
4
|
export declare function fromBaseUnit(value: bigint, decimals: number): number;
|
@@ -6,7 +7,7 @@ export declare function toBps(value: number): number;
|
|
6
7
|
export declare function bytesToI80F48(bytes: number[]): number;
|
7
8
|
export declare function uint8ArrayToBigInt(uint8Array: Uint8Array): bigint;
|
8
9
|
export declare function getDebtAdjustmentUsd(liqThresholdBps: number, supplyUsd: number, debtUsd: number, targetLiqUtilizationRateBps: number, adjustmentFeeBps?: number): number;
|
9
|
-
export declare function getSolautoFeesBps(isReferred: boolean,
|
10
|
+
export declare function getSolautoFeesBps(isReferred: boolean, feeType: FeeType, positionNetWorthUsd: number): {
|
10
11
|
solauto: number;
|
11
12
|
referrer: number;
|
12
13
|
total: number;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAejE;AAED,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,2BAA2B,EAAE,MAAM,EACnC,gBAAgB,CAAC,EAAE,MAAM,UAW1B;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,OAAO,EAChB,mBAAmB,EAAE,MAAM,GAC1B;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CA8BA;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAER;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAEvE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE"}
|
@@ -14,6 +14,7 @@ exports.maxBoostToBps = maxBoostToBps;
|
|
14
14
|
exports.maxRepayFromBps = maxRepayFromBps;
|
15
15
|
exports.maxRepayToBps = maxRepayToBps;
|
16
16
|
const constants_1 = require("../constants");
|
17
|
+
const generated_1 = require("../generated");
|
17
18
|
function getLiqUtilzationRateBps(supplyUsd, debtUsd, liqThresholdBps) {
|
18
19
|
if (supplyUsd === 0) {
|
19
20
|
return 0;
|
@@ -66,13 +67,13 @@ function getDebtAdjustmentUsd(liqThresholdBps, supplyUsd, debtUsd, targetLiqUtil
|
|
66
67
|
(1 - targetLiqUtilizationRate * (1 - adjustmentFee) * liqThreshold);
|
67
68
|
return debtAdjustmentUsd;
|
68
69
|
}
|
69
|
-
function getSolautoFeesBps(isReferred,
|
70
|
+
function getSolautoFeesBps(isReferred, feeType, positionNetWorthUsd) {
|
70
71
|
const minSize = 10000; // Minimum position size
|
71
72
|
const maxSize = 1000000; // Maximum position size
|
72
73
|
const maxFeeBps = 500; // Fee in basis points for minSize (5%)
|
73
74
|
const minFeeBps = 100; // Fee in basis points for maxSize (1%)
|
74
75
|
let feeBps = 0;
|
75
|
-
if (
|
76
|
+
if (feeType === generated_1.FeeType.Small) {
|
76
77
|
feeBps = 100;
|
77
78
|
}
|
78
79
|
else if (positionNetWorthUsd <= minSize) {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
2
|
import { SolautoClient } from "../../clients/solautoClient";
|
3
|
-
import { DCASettings, PositionState, SolautoSettingsParameters } from "../../generated";
|
3
|
+
import { DCASettings, FeeType, PositionState, SolautoSettingsParameters } from "../../generated";
|
4
4
|
import { QuoteResponse } from "@jup-ag/api";
|
5
5
|
import { JupSwapDetails } from "../jupiterUtils";
|
6
6
|
export interface RebalanceValues {
|
@@ -9,7 +9,7 @@ export interface RebalanceValues {
|
|
9
9
|
amountToDcaIn: number;
|
10
10
|
amountUsdToDcaIn: number;
|
11
11
|
}
|
12
|
-
export declare function getRebalanceValues(state: PositionState, settings: SolautoSettingsParameters | undefined, dca: DCASettings | undefined, currentUnixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number, limitGapBps?: number): RebalanceValues;
|
12
|
+
export declare function getRebalanceValues(state: PositionState, settings: SolautoSettingsParameters | undefined, dca: DCASettings | undefined, feeType: FeeType, currentUnixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number, limitGapBps?: number): RebalanceValues;
|
13
13
|
export interface FlashLoanDetails {
|
14
14
|
baseUnitAmount: bigint;
|
15
15
|
mint: PublicKey;
|
@@ -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,EAC1B,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAkJjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CA0EjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CAmE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAkChB"}
|
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,OAAO,EACP,aAAa,EAEb,yBAAyB,EAC1B,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAkJjD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CA0EjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CAmE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAkChB"}
|
@@ -79,7 +79,7 @@ function getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, target
|
|
79
79
|
};
|
80
80
|
}
|
81
81
|
}
|
82
|
-
function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps, limitGapBps) {
|
82
|
+
function getRebalanceValues(state, settings, dca, feeType, currentUnixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps, limitGapBps) {
|
83
83
|
if (state === undefined ||
|
84
84
|
state.lastUpdated <
|
85
85
|
BigInt(Math.round((0, generalUtils_2.currentUnixSeconds)() - solautoConstants_1.MIN_POSITION_STATE_FRESHNESS_SECS))) {
|
@@ -91,7 +91,7 @@ function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice,
|
|
91
91
|
const increasingLeverage = amountUsdToDcaIn > 0 || state.liqUtilizationRateBps < targetRateBps;
|
92
92
|
let adjustmentFeeBps = 0;
|
93
93
|
if (increasingLeverage) {
|
94
|
-
adjustmentFeeBps = (0, numberUtils_1.getSolautoFeesBps)(false,
|
94
|
+
adjustmentFeeBps = (0, numberUtils_1.getSolautoFeesBps)(false, feeType, (0, numberUtils_1.fromBaseUnit)(state.netWorth.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS)).total;
|
95
95
|
}
|
96
96
|
const supplyUsd = (0, numberUtils_1.fromBaseUnit)(state.supply.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS) +
|
97
97
|
amountUsdToDcaIn;
|
package/package.json
CHANGED
@@ -28,6 +28,8 @@ import {
|
|
28
28
|
u8,
|
29
29
|
} from '@metaplex-foundation/umi/serializers';
|
30
30
|
import {
|
31
|
+
FeeType,
|
32
|
+
FeeTypeArgs,
|
31
33
|
PodBool,
|
32
34
|
PodBoolArgs,
|
33
35
|
PositionData,
|
@@ -36,6 +38,7 @@ import {
|
|
36
38
|
PositionStateArgs,
|
37
39
|
RebalanceData,
|
38
40
|
RebalanceDataArgs,
|
41
|
+
getFeeTypeSerializer,
|
39
42
|
getPodBoolSerializer,
|
40
43
|
getPositionDataSerializer,
|
41
44
|
getPositionStateSerializer,
|
@@ -53,6 +56,8 @@ export type SolautoPositionAccountData = {
|
|
53
56
|
position: PositionData;
|
54
57
|
state: PositionState;
|
55
58
|
rebalance: RebalanceData;
|
59
|
+
feeType: FeeType;
|
60
|
+
padding2: Array<number>;
|
56
61
|
padding: Array<number>;
|
57
62
|
};
|
58
63
|
|
@@ -65,6 +70,8 @@ export type SolautoPositionAccountDataArgs = {
|
|
65
70
|
position: PositionDataArgs;
|
66
71
|
state: PositionStateArgs;
|
67
72
|
rebalance: RebalanceDataArgs;
|
73
|
+
feeType: FeeTypeArgs;
|
74
|
+
padding2: Array<number>;
|
68
75
|
padding: Array<number>;
|
69
76
|
};
|
70
77
|
|
@@ -82,7 +89,9 @@ export function getSolautoPositionAccountDataSerializer(): Serializer<
|
|
82
89
|
['position', getPositionDataSerializer()],
|
83
90
|
['state', getPositionStateSerializer()],
|
84
91
|
['rebalance', getRebalanceDataSerializer()],
|
85
|
-
['
|
92
|
+
['feeType', getFeeTypeSerializer()],
|
93
|
+
['padding2', array(u8(), { size: 7 })],
|
94
|
+
['padding', array(u32(), { size: 30 })],
|
86
95
|
],
|
87
96
|
{ description: 'SolautoPositionAccountData' }
|
88
97
|
) as Serializer<SolautoPositionAccountDataArgs, SolautoPositionAccountData>;
|
@@ -170,6 +179,8 @@ export function getSolautoPositionGpaBuilder(
|
|
170
179
|
position: PositionDataArgs;
|
171
180
|
state: PositionStateArgs;
|
172
181
|
rebalance: RebalanceDataArgs;
|
182
|
+
feeType: FeeTypeArgs;
|
183
|
+
padding2: Array<number>;
|
173
184
|
padding: Array<number>;
|
174
185
|
}>({
|
175
186
|
bump: [0, array(u8(), { size: 1 })],
|
@@ -180,7 +191,9 @@ export function getSolautoPositionGpaBuilder(
|
|
180
191
|
position: [40, getPositionDataSerializer()],
|
181
192
|
state: [360, getPositionStateSerializer()],
|
182
193
|
rebalance: [648, getRebalanceDataSerializer()],
|
183
|
-
|
194
|
+
feeType: [704, getFeeTypeSerializer()],
|
195
|
+
padding2: [705, array(u8(), { size: 7 })],
|
196
|
+
padding: [712, array(u32(), { size: 30 })],
|
184
197
|
})
|
185
198
|
.deserializeUsing<SolautoPosition>((account) =>
|
186
199
|
deserializeSolautoPosition(account)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
/**
|
2
|
+
* This code was AUTOGENERATED using the kinobi library.
|
3
|
+
* Please DO NOT EDIT THIS FILE, instead use visitors
|
4
|
+
* to add features, then rerun kinobi to update it.
|
5
|
+
*
|
6
|
+
* @see https://github.com/metaplex-foundation/kinobi
|
7
|
+
*/
|
8
|
+
|
9
|
+
import { Serializer, scalarEnum } from '@metaplex-foundation/umi/serializers';
|
10
|
+
|
11
|
+
export enum FeeType {
|
12
|
+
Small,
|
13
|
+
Default,
|
14
|
+
}
|
15
|
+
|
16
|
+
export type FeeTypeArgs = FeeType;
|
17
|
+
|
18
|
+
export function getFeeTypeSerializer(): Serializer<FeeTypeArgs, FeeType> {
|
19
|
+
return scalarEnum<FeeType>(FeeType, { description: 'FeeType' }) as Serializer<
|
20
|
+
FeeTypeArgs,
|
21
|
+
FeeType
|
22
|
+
>;
|
23
|
+
}
|
@@ -10,6 +10,7 @@ export * from './automationSettings';
|
|
10
10
|
export * from './automationSettingsInp';
|
11
11
|
export * from './dCASettings';
|
12
12
|
export * from './dCASettingsInp';
|
13
|
+
export * from './feeType';
|
13
14
|
export * from './lendingPlatform';
|
14
15
|
export * from './podBool';
|
15
16
|
export * from './positionData';
|
@@ -580,6 +580,7 @@ export async function buildSolautoRebalanceTransaction(
|
|
580
580
|
client.solautoPositionState!,
|
581
581
|
client.solautoPositionSettings(),
|
582
582
|
client.solautoPositionActiveDca(),
|
583
|
+
client.solautoPositionData!.feeType,
|
583
584
|
currentUnixSeconds(),
|
584
585
|
PRICES[client.supplyMint.toString()].price,
|
585
586
|
PRICES[client.debtMint.toString()].price,
|
package/src/utils/numberUtils.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { MAX_REPAY_GAP_BPS } from "../constants";
|
2
|
+
import { FeeType } from "../generated";
|
2
3
|
|
3
4
|
export function getLiqUtilzationRateBps(
|
4
5
|
supplyUsd: number,
|
@@ -88,7 +89,7 @@ export function getDebtAdjustmentUsd(
|
|
88
89
|
|
89
90
|
export function getSolautoFeesBps(
|
90
91
|
isReferred: boolean,
|
91
|
-
|
92
|
+
feeType: FeeType,
|
92
93
|
positionNetWorthUsd: number
|
93
94
|
): {
|
94
95
|
solauto: number;
|
@@ -101,7 +102,7 @@ export function getSolautoFeesBps(
|
|
101
102
|
const minFeeBps = 100; // Fee in basis points for maxSize (1%)
|
102
103
|
|
103
104
|
let feeBps: number = 0;
|
104
|
-
if (
|
105
|
+
if (feeType === FeeType.Small) {
|
105
106
|
feeBps = 100;
|
106
107
|
} else if (positionNetWorthUsd <= minSize) {
|
107
108
|
feeBps = maxFeeBps;
|
@@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js";
|
|
2
2
|
import { SolautoClient } from "../../clients/solautoClient";
|
3
3
|
import {
|
4
4
|
DCASettings,
|
5
|
+
FeeType,
|
5
6
|
PositionState,
|
6
7
|
PositionTokenUsage,
|
7
8
|
SolautoSettingsParameters,
|
@@ -170,6 +171,7 @@ export function getRebalanceValues(
|
|
170
171
|
state: PositionState,
|
171
172
|
settings: SolautoSettingsParameters | undefined,
|
172
173
|
dca: DCASettings | undefined,
|
174
|
+
feeType: FeeType,
|
173
175
|
currentUnixTime: number,
|
174
176
|
supplyPrice: number,
|
175
177
|
debtPrice: number,
|
@@ -204,7 +206,7 @@ export function getRebalanceValues(
|
|
204
206
|
if (increasingLeverage) {
|
205
207
|
adjustmentFeeBps = getSolautoFeesBps(
|
206
208
|
false,
|
207
|
-
|
209
|
+
feeType,
|
208
210
|
fromBaseUnit(state.netWorth.baseAmountUsdValue, USD_DECIMALS)
|
209
211
|
).total;
|
210
212
|
}
|
@@ -5,12 +5,11 @@ import {
|
|
5
5
|
SolautoMarginfiClient,
|
6
6
|
} from "../../src/clients/solautoMarginfiClient";
|
7
7
|
import {
|
8
|
-
LendingPlatform,
|
9
8
|
solautoAction,
|
10
9
|
SolautoSettingsParametersInpArgs,
|
11
10
|
} from "../../src/generated";
|
12
11
|
import { buildSolautoRebalanceTransaction } from "../../src/transactions/transactionUtils";
|
13
|
-
import {
|
12
|
+
import { maxBoostToBps, maxRepayFromBps, maxRepayToBps, toBaseUnit } from "../../src/utils/numberUtils";
|
14
13
|
import { NATIVE_MINT } from "@solana/spl-token";
|
15
14
|
import { getTokenPrices } from "../../src/utils/generalUtils";
|
16
15
|
import {
|
@@ -21,12 +20,12 @@ import { PublicKey } from "@solana/web3.js";
|
|
21
20
|
import { USDC_MINT } from "../../src/constants";
|
22
21
|
|
23
22
|
describe("Solauto Marginfi tests", async () => {
|
24
|
-
|
25
|
-
const signer = setupTest("solauto-manager");
|
23
|
+
const signer = setupTest();
|
24
|
+
// const signer = setupTest("solauto-manager");
|
26
25
|
|
27
26
|
const payForTransactions = false;
|
28
27
|
const useJitoBundle = false;
|
29
|
-
const positionId =
|
28
|
+
const positionId = 2;
|
30
29
|
|
31
30
|
it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
|
32
31
|
const client = new SolautoMarginfiClient(process.env.HELIUS_API_KEY!, true);
|
@@ -67,22 +66,26 @@ describe("Solauto Marginfi tests", async () => {
|
|
67
66
|
// }, "open position")
|
68
67
|
// );
|
69
68
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
69
|
+
// const initialSupplyUsd = 150;
|
70
|
+
// transactionItems.push(
|
71
|
+
// new TransactionItem(async () => {
|
72
|
+
// const [supplyPrice] = await getTokenPrices([supply]);
|
73
|
+
// return {
|
74
|
+
// tx: client.protocolInteraction(
|
75
|
+
// solautoAction("Deposit", [
|
76
|
+
// toBaseUnit(initialSupplyUsd / supplyPrice, supplyDecimals),
|
77
|
+
// ])
|
78
|
+
// ),
|
79
|
+
// };
|
80
|
+
// }, "deposit")
|
81
|
+
// );
|
83
82
|
// }
|
84
83
|
|
85
|
-
// const
|
84
|
+
// const maxLtvBps = client.solautoPositionState!.maxLtvBps;
|
85
|
+
// const liqThresholdBps = client.solautoPositionState!.liqThresholdBps;
|
86
|
+
// const maxRepayFrom = maxRepayFromBps(maxLtvBps, liqThresholdBps);
|
87
|
+
// const maxRepayTo = maxRepayToBps(maxLtvBps, liqThresholdBps);
|
88
|
+
// const maxBoostTo = maxBoostToBps(maxLtvBps, liqThresholdBps);
|
86
89
|
// transactionItems.push(
|
87
90
|
// new TransactionItem(
|
88
91
|
// async () => ({
|
@@ -90,10 +93,10 @@ describe("Solauto Marginfi tests", async () => {
|
|
90
93
|
// positionId: client.positionId,
|
91
94
|
// settingParams: some({
|
92
95
|
// ...settingParams,
|
96
|
+
// boostToBps: maxBoostTo,
|
93
97
|
// boostGap: 50,
|
94
|
-
//
|
95
|
-
// repayGap:
|
96
|
-
// repayToBps: maxLiqRate
|
98
|
+
// repayToBps: maxRepayTo,
|
99
|
+
// repayGap: maxRepayFrom - maxRepayTo
|
97
100
|
// }),
|
98
101
|
// dca: null,
|
99
102
|
// }),
|
@@ -9,6 +9,7 @@ import { publicKey } from "@metaplex-foundation/umi";
|
|
9
9
|
import { SolautoClient } from "../../src/clients/solautoClient";
|
10
10
|
import {
|
11
11
|
DCASettings,
|
12
|
+
FeeType,
|
12
13
|
LendingPlatform,
|
13
14
|
SolautoRebalanceType,
|
14
15
|
SolautoSettingsParameters,
|
@@ -48,6 +49,7 @@ function assertAccurateRebalance(
|
|
48
49
|
client.solautoPositionState!,
|
49
50
|
client.solautoPositionSettings(),
|
50
51
|
client.solautoPositionActiveDca(),
|
52
|
+
client.solautoPositionData!.feeType,
|
51
53
|
currentUnixSeconds(),
|
52
54
|
PRICES[client.supplyMint.toString()].price,
|
53
55
|
PRICES[client.debtMint.toString()].price,
|
@@ -58,7 +60,7 @@ function assertAccurateRebalance(
|
|
58
60
|
if (increasingLeverage) {
|
59
61
|
adjustmentFeeBps = getSolautoFeesBps(
|
60
62
|
client.referredByState !== undefined,
|
61
|
-
client.
|
63
|
+
client.solautoPositionData!.feeType,
|
62
64
|
fromBaseUnit(
|
63
65
|
client.solautoPositionState?.netWorth.baseAmountUsdValue ?? BigInt(0),
|
64
66
|
USD_DECIMALS
|
@@ -178,7 +180,9 @@ async function getFakePosition(
|
|
178
180
|
padding2: [],
|
179
181
|
padding: new Uint8Array([]),
|
180
182
|
},
|
183
|
+
feeType: FeeType.Default,
|
181
184
|
padding1: [],
|
185
|
+
padding2: [],
|
182
186
|
padding: [],
|
183
187
|
publicKey: publicKey(PublicKey.default),
|
184
188
|
header: {
|