@haven-fi/solauto-sdk 1.0.111 → 1.0.112
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/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +0 -2
- package/dist/generated/instructions/marginfiOpenPosition.d.ts +0 -1
- package/dist/generated/instructions/marginfiOpenPosition.d.ts.map +1 -1
- package/dist/generated/instructions/marginfiOpenPosition.js +15 -20
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +1 -1
- package/dist/utils/numberUtils.d.ts +1 -2
- package/dist/utils/numberUtils.d.ts.map +1 -1
- package/dist/utils/numberUtils.js +2 -3
- 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/clients/solautoMarginfiClient.ts +0 -1
- package/src/generated/instructions/marginfiOpenPosition.ts +15 -21
- package/src/transactions/transactionUtils.ts +0 -3
- package/src/utils/numberUtils.ts +2 -2
- package/src/utils/solauto/rebalanceUtils.ts +1 -2
- package/tests/unit/rebalanceCalculations.ts +1 -2
|
@@ -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,EACb,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;AAWnE,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;IAkE1C,8BAA8B;IA0CpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAU/B,yBAAyB,IAAI,kBAAkB;IAS/C,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;
|
|
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,EACb,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;AAWnE,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;IAkE1C,8BAA8B;IA0CpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAU/B,yBAAyB,IAAI,kBAAkB;IAS/C,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA6C9B,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;IA2DrB,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;CAiBlE"}
|
|
@@ -12,7 +12,6 @@ const generalUtils_1 = require("../utils/generalUtils");
|
|
|
12
12
|
const marginfi_sdk_1 = require("../marginfi-sdk");
|
|
13
13
|
const marginfiUtils_1 = require("../utils/marginfiUtils");
|
|
14
14
|
const numberUtils_1 = require("../utils/numberUtils");
|
|
15
|
-
const constants_1 = require("../constants");
|
|
16
15
|
const utils_1 = require("../utils");
|
|
17
16
|
class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
18
17
|
constructor() {
|
|
@@ -118,7 +117,6 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
118
117
|
return (0, generated_1.marginfiOpenPosition)(this.umi, {
|
|
119
118
|
signer: this.signer,
|
|
120
119
|
marginfiProgram: (0, umi_1.publicKey)(marginfi_sdk_1.MARGINFI_PROGRAM_ID),
|
|
121
|
-
solautoManager: (0, umi_1.publicKey)(constants_1.SOLAUTO_MANAGER),
|
|
122
120
|
solautoFeesWallet: (0, umi_1.publicKey)(this.solautoFeesWallet),
|
|
123
121
|
solautoFeesSupplyTa: (0, umi_1.publicKey)(this.solautoFeesSupplyTa),
|
|
124
122
|
signerReferralState: (0, umi_1.publicKey)(this.referralStateManager.referralState),
|
|
@@ -15,7 +15,6 @@ export type MarginfiOpenPositionInstructionAccounts = {
|
|
|
15
15
|
tokenProgram?: PublicKey | Pda;
|
|
16
16
|
ataProgram?: PublicKey | Pda;
|
|
17
17
|
rent?: PublicKey | Pda;
|
|
18
|
-
solautoManager: PublicKey | Pda;
|
|
19
18
|
solautoFeesWallet: PublicKey | Pda;
|
|
20
19
|
solautoFeesSupplyTa: PublicKey | Pda;
|
|
21
20
|
signerReferralState: PublicKey | Pda;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginfiOpenPosition.d.ts","sourceRoot":"","sources":["../../../src/generated/instructions/marginfiOpenPosition.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,GAAG,EACH,SAAS,EACT,MAAM,EACN,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAMX,MAAM,sCAAsC,CAAC;AAM9C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAEvB,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,uCAAuC,GAAG;IACpD,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,UAAU,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"marginfiOpenPosition.d.ts","sourceRoot":"","sources":["../../../src/generated/instructions/marginfiOpenPosition.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,MAAM,EACN,gBAAgB,EAChB,GAAG,EACH,SAAS,EACT,MAAM,EACN,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAMX,MAAM,sCAAsC,CAAC;AAM9C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAEvB,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,uCAAuC,GAAG;IACpD,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,UAAU,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACvB,iBAAiB,EAAE,SAAS,GAAG,GAAG,CAAC;IACnC,mBAAmB,EAAE,SAAS,GAAG,GAAG,CAAC;IACrC,mBAAmB,EAAE,SAAS,GAAG,GAAG,CAAC;IACrC,eAAe,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAClC,kBAAkB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACrC,eAAe,EAAE,SAAS,GAAG,GAAG,CAAC;IACjC,aAAa,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,eAAe,EAAE,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC;IAC1C,UAAU,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5B,UAAU,EAAE,SAAS,GAAG,GAAG,CAAC;IAC5B,gBAAgB,EAAE,SAAS,GAAG,GAAG,CAAC;IAClC,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC1B,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC;IAC1B,cAAc,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;CAChC,CAAC;AAGF,MAAM,MAAM,mCAAmC,GAAG;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,kBAAkB,CAAC;IACjC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IACpD,YAAY,EAAE,sBAAsB,CAAC;IACrC,sBAAsB,EAAE,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC3D,CAAC;AAEF,wBAAgB,gDAAgD,IAAI,UAAU,CAC5E,uCAAuC,EACvC,mCAAmC,CACpC,CAmBA;AAGD,MAAM,MAAM,mCAAmC,GAC7C,uCAAuC,CAAC;AAG1C,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAClC,KAAK,EAAE,uCAAuC,GAC5C,mCAAmC,GACpC,kBAAkB,CAsKpB"}
|
|
@@ -52,83 +52,78 @@ function marginfiOpenPosition(context, input) {
|
|
|
52
52
|
value: input.ataProgram ?? null,
|
|
53
53
|
},
|
|
54
54
|
rent: { index: 5, isWritable: false, value: input.rent ?? null },
|
|
55
|
-
solautoManager: {
|
|
56
|
-
index: 6,
|
|
57
|
-
isWritable: true,
|
|
58
|
-
value: input.solautoManager ?? null,
|
|
59
|
-
},
|
|
60
55
|
solautoFeesWallet: {
|
|
61
|
-
index:
|
|
56
|
+
index: 6,
|
|
62
57
|
isWritable: false,
|
|
63
58
|
value: input.solautoFeesWallet ?? null,
|
|
64
59
|
},
|
|
65
60
|
solautoFeesSupplyTa: {
|
|
66
|
-
index:
|
|
61
|
+
index: 7,
|
|
67
62
|
isWritable: true,
|
|
68
63
|
value: input.solautoFeesSupplyTa ?? null,
|
|
69
64
|
},
|
|
70
65
|
signerReferralState: {
|
|
71
|
-
index:
|
|
66
|
+
index: 8,
|
|
72
67
|
isWritable: false,
|
|
73
68
|
value: input.signerReferralState ?? null,
|
|
74
69
|
},
|
|
75
70
|
referredByState: {
|
|
76
|
-
index:
|
|
71
|
+
index: 9,
|
|
77
72
|
isWritable: false,
|
|
78
73
|
value: input.referredByState ?? null,
|
|
79
74
|
},
|
|
80
75
|
referredBySupplyTa: {
|
|
81
|
-
index:
|
|
76
|
+
index: 10,
|
|
82
77
|
isWritable: true,
|
|
83
78
|
value: input.referredBySupplyTa ?? null,
|
|
84
79
|
},
|
|
85
80
|
solautoPosition: {
|
|
86
|
-
index:
|
|
81
|
+
index: 11,
|
|
87
82
|
isWritable: true,
|
|
88
83
|
value: input.solautoPosition ?? null,
|
|
89
84
|
},
|
|
90
85
|
marginfiGroup: {
|
|
91
|
-
index:
|
|
86
|
+
index: 12,
|
|
92
87
|
isWritable: false,
|
|
93
88
|
value: input.marginfiGroup ?? null,
|
|
94
89
|
},
|
|
95
90
|
marginfiAccount: {
|
|
96
|
-
index:
|
|
91
|
+
index: 13,
|
|
97
92
|
isWritable: true,
|
|
98
93
|
value: input.marginfiAccount ?? null,
|
|
99
94
|
},
|
|
100
95
|
supplyMint: {
|
|
101
|
-
index:
|
|
96
|
+
index: 14,
|
|
102
97
|
isWritable: false,
|
|
103
98
|
value: input.supplyMint ?? null,
|
|
104
99
|
},
|
|
105
100
|
supplyBank: {
|
|
106
|
-
index:
|
|
101
|
+
index: 15,
|
|
107
102
|
isWritable: false,
|
|
108
103
|
value: input.supplyBank ?? null,
|
|
109
104
|
},
|
|
110
105
|
positionSupplyTa: {
|
|
111
|
-
index:
|
|
106
|
+
index: 16,
|
|
112
107
|
isWritable: true,
|
|
113
108
|
value: input.positionSupplyTa ?? null,
|
|
114
109
|
},
|
|
115
110
|
debtMint: {
|
|
116
|
-
index:
|
|
111
|
+
index: 17,
|
|
117
112
|
isWritable: false,
|
|
118
113
|
value: input.debtMint ?? null,
|
|
119
114
|
},
|
|
120
115
|
debtBank: {
|
|
121
|
-
index:
|
|
116
|
+
index: 18,
|
|
122
117
|
isWritable: false,
|
|
123
118
|
value: input.debtBank ?? null,
|
|
124
119
|
},
|
|
125
120
|
positionDebtTa: {
|
|
126
|
-
index:
|
|
121
|
+
index: 19,
|
|
127
122
|
isWritable: true,
|
|
128
123
|
value: input.positionDebtTa ?? null,
|
|
129
124
|
},
|
|
130
125
|
signerDebtTa: {
|
|
131
|
-
index:
|
|
126
|
+
index: 20,
|
|
132
127
|
isWritable: true,
|
|
133
128
|
value: input.signerDebtTa ?? null,
|
|
134
129
|
},
|
|
@@ -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;
|
|
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,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,CAAC;IACT,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACG,SAAS,CACZ,CAwHA;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"}
|
|
@@ -327,7 +327,7 @@ async function buildSolautoRebalanceTransaction(client, targetLiqUtilizationRate
|
|
|
327
327
|
client.log("Not eligible for a rebalance");
|
|
328
328
|
return undefined;
|
|
329
329
|
}
|
|
330
|
-
const values = (0, rebalanceUtils_1.getRebalanceValues)(client.solautoPositionState, client.solautoPositionSettings(), client.solautoPositionActiveDca(),
|
|
330
|
+
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);
|
|
331
331
|
client.log("Rebalance values: ", values);
|
|
332
332
|
const swapDetails = (0, rebalanceUtils_1.getJupSwapRebalanceDetails)(client, values, targetLiqUtilizationRateBps, attemptNum);
|
|
333
333
|
const { jupQuote, lookupTableAddresses, setupInstructions, tokenLedgerIx, swapIx, } = await (0, jupiterUtils_1.getJupSwapTransaction)(client.signer, swapDetails, attemptNum);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { FeeType } from "../generated";
|
|
2
1
|
export declare function getLiqUtilzationRateBps(supplyUsd: number, debtUsd: number, liqThresholdBps: number): number;
|
|
3
2
|
export declare function toBaseUnit(value: number, decimals: number): bigint;
|
|
4
3
|
export declare function fromBaseUnit(value: bigint, decimals: number): number;
|
|
@@ -7,7 +6,7 @@ export declare function toBps(value: number): number;
|
|
|
7
6
|
export declare function bytesToI80F48(bytes: number[]): number;
|
|
8
7
|
export declare function uint8ArrayToBigInt(uint8Array: Uint8Array): bigint;
|
|
9
8
|
export declare function getDebtAdjustmentUsd(liqThresholdBps: number, supplyUsd: number, debtUsd: number, targetLiqUtilizationRateBps: number, adjustmentFeeBps?: number): number;
|
|
10
|
-
export declare function getSolautoFeesBps(isReferred: boolean,
|
|
9
|
+
export declare function getSolautoFeesBps(isReferred: boolean, targetLiqUtilizationRateBps: number | undefined, positionNetWorthUsd: number): {
|
|
11
10
|
solauto: number;
|
|
12
11
|
referrer: number;
|
|
13
12
|
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":"AAGA,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,2BAA2B,EAAE,MAAM,GAAG,SAAS,EAC/C,mBAAmB,EAAE,MAAM,GAC1B;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAgCA;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAER;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE"}
|
|
@@ -14,7 +14,6 @@ exports.maxRepayFromBps = maxRepayFromBps;
|
|
|
14
14
|
exports.maxRepayToBps = maxRepayToBps;
|
|
15
15
|
exports.maxBoostToBps = maxBoostToBps;
|
|
16
16
|
const constants_1 = require("../constants");
|
|
17
|
-
const generated_1 = require("../generated");
|
|
18
17
|
function getLiqUtilzationRateBps(supplyUsd, debtUsd, liqThresholdBps) {
|
|
19
18
|
if (supplyUsd === 0) {
|
|
20
19
|
return 0;
|
|
@@ -67,14 +66,14 @@ function getDebtAdjustmentUsd(liqThresholdBps, supplyUsd, debtUsd, targetLiqUtil
|
|
|
67
66
|
(1 - targetLiqUtilizationRate * (1 - adjustmentFee) * liqThreshold);
|
|
68
67
|
return debtAdjustmentUsd;
|
|
69
68
|
}
|
|
70
|
-
function getSolautoFeesBps(isReferred,
|
|
69
|
+
function getSolautoFeesBps(isReferred, targetLiqUtilizationRateBps, positionNetWorthUsd) {
|
|
71
70
|
const minSize = 10000; // Minimum position size
|
|
72
71
|
const maxSize = 500000; // Maximum position size
|
|
73
72
|
const maxFeeBps = 500; // Fee in basis points for minSize (5%)
|
|
74
73
|
const minFeeBps = 50; // Fee in basis points for maxSize (0.5%)
|
|
75
74
|
const k = 0.55;
|
|
76
75
|
let feeBps = 0;
|
|
77
|
-
if (
|
|
76
|
+
if (targetLiqUtilizationRateBps !== undefined) {
|
|
78
77
|
feeBps = minFeeBps;
|
|
79
78
|
}
|
|
80
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,
|
|
3
|
+
import { DCASettings, 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,
|
|
12
|
+
export declare function getRebalanceValues(state: PositionState, settings: SolautoSettingsParameters | undefined, dca: DCASettings | undefined, 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,
|
|
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,EAEX,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"}
|
|
@@ -79,7 +79,7 @@ function getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, target
|
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
function getRebalanceValues(state, settings, dca,
|
|
82
|
+
function getRebalanceValues(state, settings, dca, 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, feeType, currentUnixTime, supp
|
|
|
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, targetLiqUtilizationRateBps, (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
|
@@ -241,7 +241,6 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
241
241
|
return marginfiOpenPosition(this.umi, {
|
|
242
242
|
signer: this.signer,
|
|
243
243
|
marginfiProgram: publicKey(MARGINFI_PROGRAM_ID),
|
|
244
|
-
solautoManager: publicKey(SOLAUTO_MANAGER),
|
|
245
244
|
solautoFeesWallet: publicKey(this.solautoFeesWallet),
|
|
246
245
|
solautoFeesSupplyTa: publicKey(this.solautoFeesSupplyTa),
|
|
247
246
|
signerReferralState: publicKey(this.referralStateManager.referralState),
|
|
@@ -44,7 +44,6 @@ export type MarginfiOpenPositionInstructionAccounts = {
|
|
|
44
44
|
tokenProgram?: PublicKey | Pda;
|
|
45
45
|
ataProgram?: PublicKey | Pda;
|
|
46
46
|
rent?: PublicKey | Pda;
|
|
47
|
-
solautoManager: PublicKey | Pda;
|
|
48
47
|
solautoFeesWallet: PublicKey | Pda;
|
|
49
48
|
solautoFeesSupplyTa: PublicKey | Pda;
|
|
50
49
|
signerReferralState: PublicKey | Pda;
|
|
@@ -142,83 +141,78 @@ export function marginfiOpenPosition(
|
|
|
142
141
|
value: input.ataProgram ?? null,
|
|
143
142
|
},
|
|
144
143
|
rent: { index: 5, isWritable: false as boolean, value: input.rent ?? null },
|
|
145
|
-
solautoManager: {
|
|
146
|
-
index: 6,
|
|
147
|
-
isWritable: true as boolean,
|
|
148
|
-
value: input.solautoManager ?? null,
|
|
149
|
-
},
|
|
150
144
|
solautoFeesWallet: {
|
|
151
|
-
index:
|
|
145
|
+
index: 6,
|
|
152
146
|
isWritable: false as boolean,
|
|
153
147
|
value: input.solautoFeesWallet ?? null,
|
|
154
148
|
},
|
|
155
149
|
solautoFeesSupplyTa: {
|
|
156
|
-
index:
|
|
150
|
+
index: 7,
|
|
157
151
|
isWritable: true as boolean,
|
|
158
152
|
value: input.solautoFeesSupplyTa ?? null,
|
|
159
153
|
},
|
|
160
154
|
signerReferralState: {
|
|
161
|
-
index:
|
|
155
|
+
index: 8,
|
|
162
156
|
isWritable: false as boolean,
|
|
163
157
|
value: input.signerReferralState ?? null,
|
|
164
158
|
},
|
|
165
159
|
referredByState: {
|
|
166
|
-
index:
|
|
160
|
+
index: 9,
|
|
167
161
|
isWritable: false as boolean,
|
|
168
162
|
value: input.referredByState ?? null,
|
|
169
163
|
},
|
|
170
164
|
referredBySupplyTa: {
|
|
171
|
-
index:
|
|
165
|
+
index: 10,
|
|
172
166
|
isWritable: true as boolean,
|
|
173
167
|
value: input.referredBySupplyTa ?? null,
|
|
174
168
|
},
|
|
175
169
|
solautoPosition: {
|
|
176
|
-
index:
|
|
170
|
+
index: 11,
|
|
177
171
|
isWritable: true as boolean,
|
|
178
172
|
value: input.solautoPosition ?? null,
|
|
179
173
|
},
|
|
180
174
|
marginfiGroup: {
|
|
181
|
-
index:
|
|
175
|
+
index: 12,
|
|
182
176
|
isWritable: false as boolean,
|
|
183
177
|
value: input.marginfiGroup ?? null,
|
|
184
178
|
},
|
|
185
179
|
marginfiAccount: {
|
|
186
|
-
index:
|
|
180
|
+
index: 13,
|
|
187
181
|
isWritable: true as boolean,
|
|
188
182
|
value: input.marginfiAccount ?? null,
|
|
189
183
|
},
|
|
190
184
|
supplyMint: {
|
|
191
|
-
index:
|
|
185
|
+
index: 14,
|
|
192
186
|
isWritable: false as boolean,
|
|
193
187
|
value: input.supplyMint ?? null,
|
|
194
188
|
},
|
|
195
189
|
supplyBank: {
|
|
196
|
-
index:
|
|
190
|
+
index: 15,
|
|
197
191
|
isWritable: false as boolean,
|
|
198
192
|
value: input.supplyBank ?? null,
|
|
199
193
|
},
|
|
200
194
|
positionSupplyTa: {
|
|
201
|
-
index:
|
|
195
|
+
index: 16,
|
|
202
196
|
isWritable: true as boolean,
|
|
203
197
|
value: input.positionSupplyTa ?? null,
|
|
204
198
|
},
|
|
205
199
|
debtMint: {
|
|
206
|
-
index:
|
|
200
|
+
index: 17,
|
|
207
201
|
isWritable: false as boolean,
|
|
208
202
|
value: input.debtMint ?? null,
|
|
209
203
|
},
|
|
210
204
|
debtBank: {
|
|
211
|
-
index:
|
|
205
|
+
index: 18,
|
|
212
206
|
isWritable: false as boolean,
|
|
213
207
|
value: input.debtBank ?? null,
|
|
214
208
|
},
|
|
215
209
|
positionDebtTa: {
|
|
216
|
-
index:
|
|
210
|
+
index: 19,
|
|
217
211
|
isWritable: true as boolean,
|
|
218
212
|
value: input.positionDebtTa ?? null,
|
|
219
213
|
},
|
|
220
214
|
signerDebtTa: {
|
|
221
|
-
index:
|
|
215
|
+
index: 20,
|
|
222
216
|
isWritable: true as boolean,
|
|
223
217
|
value: input.signerDebtTa ?? null,
|
|
224
218
|
},
|
|
@@ -10,10 +10,8 @@ import { PublicKey, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
|
|
|
10
10
|
import {
|
|
11
11
|
ACCOUNT_SIZE as TOKEN_ACCOUNT_SIZE,
|
|
12
12
|
NATIVE_MINT,
|
|
13
|
-
Account as SplTokenAccount,
|
|
14
13
|
} from "@solana/spl-token";
|
|
15
14
|
import {
|
|
16
|
-
FeeType,
|
|
17
15
|
LendingPlatform,
|
|
18
16
|
ReferralState,
|
|
19
17
|
SOLAUTO_PROGRAM_ID,
|
|
@@ -578,7 +576,6 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
578
576
|
client.solautoPositionState!,
|
|
579
577
|
client.solautoPositionSettings(),
|
|
580
578
|
client.solautoPositionActiveDca(),
|
|
581
|
-
client.solautoPositionData?.feeType ?? FeeType.Small,
|
|
582
579
|
currentUnixSeconds(),
|
|
583
580
|
PRICES[client.supplyMint.toString()].price,
|
|
584
581
|
PRICES[client.debtMint.toString()].price,
|
package/src/utils/numberUtils.ts
CHANGED
|
@@ -89,7 +89,7 @@ export function getDebtAdjustmentUsd(
|
|
|
89
89
|
|
|
90
90
|
export function getSolautoFeesBps(
|
|
91
91
|
isReferred: boolean,
|
|
92
|
-
|
|
92
|
+
targetLiqUtilizationRateBps: number | undefined,
|
|
93
93
|
positionNetWorthUsd: number
|
|
94
94
|
): {
|
|
95
95
|
solauto: number;
|
|
@@ -104,7 +104,7 @@ export function getSolautoFeesBps(
|
|
|
104
104
|
|
|
105
105
|
let feeBps: number = 0;
|
|
106
106
|
|
|
107
|
-
if (
|
|
107
|
+
if (targetLiqUtilizationRateBps !== undefined) {
|
|
108
108
|
feeBps = minFeeBps;
|
|
109
109
|
} else if (positionNetWorthUsd <= minSize) {
|
|
110
110
|
feeBps = maxFeeBps;
|
|
@@ -171,7 +171,6 @@ export function getRebalanceValues(
|
|
|
171
171
|
state: PositionState,
|
|
172
172
|
settings: SolautoSettingsParameters | undefined,
|
|
173
173
|
dca: DCASettings | undefined,
|
|
174
|
-
feeType: FeeType,
|
|
175
174
|
currentUnixTime: number,
|
|
176
175
|
supplyPrice: number,
|
|
177
176
|
debtPrice: number,
|
|
@@ -206,7 +205,7 @@ export function getRebalanceValues(
|
|
|
206
205
|
if (increasingLeverage) {
|
|
207
206
|
adjustmentFeeBps = getSolautoFeesBps(
|
|
208
207
|
false,
|
|
209
|
-
|
|
208
|
+
targetLiqUtilizationRateBps,
|
|
210
209
|
fromBaseUnit(state.netWorth.baseAmountUsdValue, USD_DECIMALS)
|
|
211
210
|
).total;
|
|
212
211
|
}
|
|
@@ -49,7 +49,6 @@ function assertAccurateRebalance(
|
|
|
49
49
|
client.solautoPositionState!,
|
|
50
50
|
client.solautoPositionSettings(),
|
|
51
51
|
client.solautoPositionActiveDca(),
|
|
52
|
-
client.solautoPositionData!.feeType,
|
|
53
52
|
currentUnixSeconds(),
|
|
54
53
|
PRICES[client.supplyMint.toString()].price,
|
|
55
54
|
PRICES[client.debtMint.toString()].price,
|
|
@@ -60,7 +59,7 @@ function assertAccurateRebalance(
|
|
|
60
59
|
if (increasingLeverage) {
|
|
61
60
|
adjustmentFeeBps = getSolautoFeesBps(
|
|
62
61
|
client.referredByState !== undefined,
|
|
63
|
-
|
|
62
|
+
targetLiqUtilizationRateBps,
|
|
64
63
|
fromBaseUnit(
|
|
65
64
|
client.solautoPositionState?.netWorth.baseAmountUsdValue ?? BigInt(0),
|
|
66
65
|
USD_DECIMALS
|