@haven-fi/solauto-sdk 1.0.225 → 1.0.227
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/generated/instructions/claimReferralFees.d.ts +1 -0
- package/dist/generated/instructions/claimReferralFees.d.ts.map +1 -1
- package/dist/generated/instructions/claimReferralFees.js +15 -6
- package/dist/utils/numberUtils.d.ts.map +1 -1
- package/dist/utils/numberUtils.js +12 -2
- package/package.json +1 -1
- package/src/generated/instructions/claimReferralFees.ts +19 -6
- package/src/utils/numberUtils.ts +23 -4
|
@@ -12,6 +12,7 @@ export type ClaimReferralFeesInstructionAccounts = {
|
|
|
12
12
|
signerWsolTa?: PublicKey | Pda;
|
|
13
13
|
systemProgram?: PublicKey | Pda;
|
|
14
14
|
tokenProgram?: PublicKey | Pda;
|
|
15
|
+
ataProgram?: PublicKey | Pda;
|
|
15
16
|
rent?: PublicKey | Pda;
|
|
16
17
|
referralState: PublicKey | Pda;
|
|
17
18
|
referralFeesDestTa: PublicKey | Pda;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claimReferralFees.d.ts","sourceRoot":"","sources":["../../../src/generated/instructions/claimReferralFees.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,GAAG,EACH,SAAS,EACT,MAAM,EACN,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAIX,MAAM,sCAAsC,CAAC;AAQ9C,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACvB,aAAa,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,kBAAkB,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,oBAAoB,EAAE,SAAS,GAAG,GAAG,CAAC;IACtC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;CACrC,CAAC;AAGF,MAAM,MAAM,gCAAgC,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAEtD,wBAAgB,6CAA6C,IAAI,UAAU,CACzE,oCAAoC,EACpC,gCAAgC,CACjC,CAcA;AAGD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAClC,KAAK,EAAE,oCAAoC,GAC1C,kBAAkB,
|
|
1
|
+
{"version":3,"file":"claimReferralFees.d.ts","sourceRoot":"","sources":["../../../src/generated/instructions/claimReferralFees.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,GAAG,EACH,SAAS,EACT,MAAM,EACN,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAIX,MAAM,sCAAsC,CAAC;AAQ9C,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,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,aAAa,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,kBAAkB,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,oBAAoB,EAAE,SAAS,GAAG,GAAG,CAAC;IACtC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;CACrC,CAAC;AAGF,MAAM,MAAM,gCAAgC,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAEtD,wBAAgB,6CAA6C,IAAI,UAAU,CACzE,oCAAoC,EACpC,gCAAgC,CACjC,CAcA;AAGD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAClC,KAAK,EAAE,oCAAoC,GAC1C,kBAAkB,CA+GpB"}
|
|
@@ -43,29 +43,34 @@ function claimReferralFees(context, input) {
|
|
|
43
43
|
isWritable: false,
|
|
44
44
|
value: input.tokenProgram ?? null,
|
|
45
45
|
},
|
|
46
|
-
|
|
46
|
+
ataProgram: {
|
|
47
|
+
index: 4,
|
|
48
|
+
isWritable: false,
|
|
49
|
+
value: input.ataProgram ?? null,
|
|
50
|
+
},
|
|
51
|
+
rent: { index: 5, isWritable: false, value: input.rent ?? null },
|
|
47
52
|
referralState: {
|
|
48
|
-
index:
|
|
53
|
+
index: 6,
|
|
49
54
|
isWritable: false,
|
|
50
55
|
value: input.referralState ?? null,
|
|
51
56
|
},
|
|
52
57
|
referralFeesDestTa: {
|
|
53
|
-
index:
|
|
58
|
+
index: 7,
|
|
54
59
|
isWritable: true,
|
|
55
60
|
value: input.referralFeesDestTa ?? null,
|
|
56
61
|
},
|
|
57
62
|
referralFeesDestMint: {
|
|
58
|
-
index:
|
|
63
|
+
index: 8,
|
|
59
64
|
isWritable: false,
|
|
60
65
|
value: input.referralFeesDestMint ?? null,
|
|
61
66
|
},
|
|
62
67
|
referralAuthority: {
|
|
63
|
-
index:
|
|
68
|
+
index: 9,
|
|
64
69
|
isWritable: true,
|
|
65
70
|
value: input.referralAuthority ?? null,
|
|
66
71
|
},
|
|
67
72
|
feesDestinationTa: {
|
|
68
|
-
index:
|
|
73
|
+
index: 10,
|
|
69
74
|
isWritable: true,
|
|
70
75
|
value: input.feesDestinationTa ?? null,
|
|
71
76
|
},
|
|
@@ -79,6 +84,10 @@ function claimReferralFees(context, input) {
|
|
|
79
84
|
resolvedAccounts.tokenProgram.value = context.programs.getPublicKey('splToken', 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');
|
|
80
85
|
resolvedAccounts.tokenProgram.isWritable = false;
|
|
81
86
|
}
|
|
87
|
+
if (!resolvedAccounts.ataProgram.value) {
|
|
88
|
+
resolvedAccounts.ataProgram.value = context.programs.getPublicKey('splAssociatedToken', 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');
|
|
89
|
+
resolvedAccounts.ataProgram.isWritable = false;
|
|
90
|
+
}
|
|
82
91
|
if (!resolvedAccounts.rent.value) {
|
|
83
92
|
resolvedAccounts.rent.value = (0, umi_1.publicKey)('SysvarRent111111111111111111111111111111111');
|
|
84
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,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,EAC3B,kBAAkB,EAAE,kBAAkB,GACrC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,
|
|
1
|
+
{"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,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,EAC3B,kBAAkB,EAAE,kBAAkB,GACrC;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAgDA;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;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"}
|
|
@@ -73,8 +73,17 @@ function getSolautoFeesBps(isReferred, targetLiqUtilizationRateBps, positionNetW
|
|
|
73
73
|
const maxFeeBps = 200; // Fee in basis points for minSize (2%)
|
|
74
74
|
const minFeeBps = 50; // Fee in basis points for maxSize (0.5%)
|
|
75
75
|
const k = 1.5;
|
|
76
|
+
if (targetLiqUtilizationRateBps !== undefined &&
|
|
77
|
+
targetLiqUtilizationRateBps === 0) {
|
|
78
|
+
return {
|
|
79
|
+
solauto: 0,
|
|
80
|
+
referrer: 0,
|
|
81
|
+
total: 0,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
76
84
|
let feeBps = 0;
|
|
77
|
-
if (targetLiqUtilizationRateBps !== undefined ||
|
|
85
|
+
if (targetLiqUtilizationRateBps !== undefined ||
|
|
86
|
+
rebalanceDirection === generated_1.RebalanceDirection.Repay) {
|
|
78
87
|
feeBps = 25;
|
|
79
88
|
}
|
|
80
89
|
else if (positionNetWorthUsd <= minSize) {
|
|
@@ -99,7 +108,8 @@ function getSolautoFeesBps(isReferred, targetLiqUtilizationRateBps, positionNetW
|
|
|
99
108
|
};
|
|
100
109
|
}
|
|
101
110
|
function getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, offsetFromMaxLtv) {
|
|
102
|
-
return toBps((fromBps(maxLtvBps) - offsetFromMaxLtv) / fromBps(liqThresholdBps)) -
|
|
111
|
+
return (toBps((fromBps(maxLtvBps) - offsetFromMaxLtv) / fromBps(liqThresholdBps)) -
|
|
112
|
+
1); // -1 to account for any rounding issues
|
|
103
113
|
}
|
|
104
114
|
function maxRepayFromBps(maxLtvBps, liqThresholdBps) {
|
|
105
115
|
return Math.min(9000, getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps - 1000, 0.01));
|
package/package.json
CHANGED
|
@@ -33,6 +33,7 @@ export type ClaimReferralFeesInstructionAccounts = {
|
|
|
33
33
|
signerWsolTa?: PublicKey | Pda;
|
|
34
34
|
systemProgram?: PublicKey | Pda;
|
|
35
35
|
tokenProgram?: PublicKey | Pda;
|
|
36
|
+
ataProgram?: PublicKey | Pda;
|
|
36
37
|
rent?: PublicKey | Pda;
|
|
37
38
|
referralState: PublicKey | Pda;
|
|
38
39
|
referralFeesDestTa: PublicKey | Pda;
|
|
@@ -98,29 +99,34 @@ export function claimReferralFees(
|
|
|
98
99
|
isWritable: false as boolean,
|
|
99
100
|
value: input.tokenProgram ?? null,
|
|
100
101
|
},
|
|
101
|
-
|
|
102
|
+
ataProgram: {
|
|
103
|
+
index: 4,
|
|
104
|
+
isWritable: false as boolean,
|
|
105
|
+
value: input.ataProgram ?? null,
|
|
106
|
+
},
|
|
107
|
+
rent: { index: 5, isWritable: false as boolean, value: input.rent ?? null },
|
|
102
108
|
referralState: {
|
|
103
|
-
index:
|
|
109
|
+
index: 6,
|
|
104
110
|
isWritable: false as boolean,
|
|
105
111
|
value: input.referralState ?? null,
|
|
106
112
|
},
|
|
107
113
|
referralFeesDestTa: {
|
|
108
|
-
index:
|
|
114
|
+
index: 7,
|
|
109
115
|
isWritable: true as boolean,
|
|
110
116
|
value: input.referralFeesDestTa ?? null,
|
|
111
117
|
},
|
|
112
118
|
referralFeesDestMint: {
|
|
113
|
-
index:
|
|
119
|
+
index: 8,
|
|
114
120
|
isWritable: false as boolean,
|
|
115
121
|
value: input.referralFeesDestMint ?? null,
|
|
116
122
|
},
|
|
117
123
|
referralAuthority: {
|
|
118
|
-
index:
|
|
124
|
+
index: 9,
|
|
119
125
|
isWritable: true as boolean,
|
|
120
126
|
value: input.referralAuthority ?? null,
|
|
121
127
|
},
|
|
122
128
|
feesDestinationTa: {
|
|
123
|
-
index:
|
|
129
|
+
index: 10,
|
|
124
130
|
isWritable: true as boolean,
|
|
125
131
|
value: input.feesDestinationTa ?? null,
|
|
126
132
|
},
|
|
@@ -141,6 +147,13 @@ export function claimReferralFees(
|
|
|
141
147
|
);
|
|
142
148
|
resolvedAccounts.tokenProgram.isWritable = false;
|
|
143
149
|
}
|
|
150
|
+
if (!resolvedAccounts.ataProgram.value) {
|
|
151
|
+
resolvedAccounts.ataProgram.value = context.programs.getPublicKey(
|
|
152
|
+
'splAssociatedToken',
|
|
153
|
+
'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'
|
|
154
|
+
);
|
|
155
|
+
resolvedAccounts.ataProgram.isWritable = false;
|
|
156
|
+
}
|
|
144
157
|
if (!resolvedAccounts.rent.value) {
|
|
145
158
|
resolvedAccounts.rent.value = publicKey(
|
|
146
159
|
'SysvarRent111111111111111111111111111111111'
|
package/src/utils/numberUtils.ts
CHANGED
|
@@ -103,9 +103,23 @@ export function getSolautoFeesBps(
|
|
|
103
103
|
const minFeeBps = 50; // Fee in basis points for maxSize (0.5%)
|
|
104
104
|
const k = 1.5;
|
|
105
105
|
|
|
106
|
+
if (
|
|
107
|
+
targetLiqUtilizationRateBps !== undefined &&
|
|
108
|
+
targetLiqUtilizationRateBps === 0
|
|
109
|
+
) {
|
|
110
|
+
return {
|
|
111
|
+
solauto: 0,
|
|
112
|
+
referrer: 0,
|
|
113
|
+
total: 0,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
106
117
|
let feeBps: number = 0;
|
|
107
118
|
|
|
108
|
-
if (
|
|
119
|
+
if (
|
|
120
|
+
targetLiqUtilizationRateBps !== undefined ||
|
|
121
|
+
rebalanceDirection === RebalanceDirection.Repay
|
|
122
|
+
) {
|
|
109
123
|
feeBps = 25;
|
|
110
124
|
} else if (positionNetWorthUsd <= minSize) {
|
|
111
125
|
feeBps = maxFeeBps;
|
|
@@ -115,7 +129,9 @@ export function getSolautoFeesBps(
|
|
|
115
129
|
const t =
|
|
116
130
|
(Math.log(positionNetWorthUsd) - Math.log(minSize)) /
|
|
117
131
|
(Math.log(maxSize) - Math.log(minSize));
|
|
118
|
-
feeBps = Math.round(
|
|
132
|
+
feeBps = Math.round(
|
|
133
|
+
minFeeBps + (maxFeeBps - minFeeBps) * (1 - Math.pow(t, k))
|
|
134
|
+
);
|
|
119
135
|
}
|
|
120
136
|
|
|
121
137
|
let referrer = 0;
|
|
@@ -135,7 +151,10 @@ export function getMaxLiqUtilizationRateBps(
|
|
|
135
151
|
liqThresholdBps: number,
|
|
136
152
|
offsetFromMaxLtv: number
|
|
137
153
|
): number {
|
|
138
|
-
return
|
|
154
|
+
return (
|
|
155
|
+
toBps((fromBps(maxLtvBps) - offsetFromMaxLtv) / fromBps(liqThresholdBps)) -
|
|
156
|
+
1
|
|
157
|
+
); // -1 to account for any rounding issues
|
|
139
158
|
}
|
|
140
159
|
|
|
141
160
|
export function maxRepayFromBps(maxLtvBps: number, liqThresholdBps: number) {
|
|
@@ -157,4 +176,4 @@ export function maxBoostToBps(maxLtvBps: number, liqThresholdBps: number) {
|
|
|
157
176
|
maxRepayToBps(maxLtvBps, liqThresholdBps),
|
|
158
177
|
getMaxLiqUtilizationRateBps(maxLtvBps, liqThresholdBps, 0.01)
|
|
159
178
|
);
|
|
160
|
-
}
|
|
179
|
+
}
|