@steerprotocol/sdk 1.2.0 → 1.3.0
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/cjs/base/StakingClient.js +345 -0
- package/dist/cjs/base/StakingClient.js.map +1 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/base/StakingClient.js +341 -0
- package/dist/esm/base/StakingClient.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/base/StakingClient.d.ts +81 -0
- package/dist/types/base/StakingClient.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StakingClient = void 0;
|
|
4
|
+
const SubgraphClient_1 = require("./SubgraphClient");
|
|
5
|
+
// ABIs for staking contracts
|
|
6
|
+
const SINGLE_REWARD_ABI = [
|
|
7
|
+
{
|
|
8
|
+
"inputs": [],
|
|
9
|
+
"name": "lastTimeRewardApplicable",
|
|
10
|
+
"outputs": [{ "type": "uint256" }],
|
|
11
|
+
"stateMutability": "view",
|
|
12
|
+
"type": "function"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"inputs": [{ "type": "address" }],
|
|
16
|
+
"name": "earned",
|
|
17
|
+
"outputs": [{ "type": "uint256" }],
|
|
18
|
+
"stateMutability": "view",
|
|
19
|
+
"type": "function"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"inputs": [],
|
|
23
|
+
"name": "totalSupply",
|
|
24
|
+
"outputs": [{ "type": "uint256" }],
|
|
25
|
+
"stateMutability": "view",
|
|
26
|
+
"type": "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"inputs": [{ "type": "address" }],
|
|
30
|
+
"name": "balanceOf",
|
|
31
|
+
"outputs": [{ "type": "uint256" }],
|
|
32
|
+
"stateMutability": "view",
|
|
33
|
+
"type": "function"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"inputs": [{ "type": "uint256" }],
|
|
37
|
+
"name": "stake",
|
|
38
|
+
"outputs": [],
|
|
39
|
+
"stateMutability": "nonpayable",
|
|
40
|
+
"type": "function"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"inputs": [{ "type": "uint256" }],
|
|
44
|
+
"name": "withdraw",
|
|
45
|
+
"outputs": [],
|
|
46
|
+
"stateMutability": "nonpayable",
|
|
47
|
+
"type": "function"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"inputs": [],
|
|
51
|
+
"name": "getReward",
|
|
52
|
+
"outputs": [],
|
|
53
|
+
"stateMutability": "nonpayable",
|
|
54
|
+
"type": "function"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"inputs": [],
|
|
58
|
+
"name": "exit",
|
|
59
|
+
"outputs": [],
|
|
60
|
+
"stateMutability": "nonpayable",
|
|
61
|
+
"type": "function"
|
|
62
|
+
}
|
|
63
|
+
];
|
|
64
|
+
const DUAL_REWARD_ABI = [
|
|
65
|
+
...SINGLE_REWARD_ABI,
|
|
66
|
+
{
|
|
67
|
+
"inputs": [{ "type": "address" }],
|
|
68
|
+
"name": "earnedA",
|
|
69
|
+
"outputs": [{ "type": "uint256" }],
|
|
70
|
+
"stateMutability": "view",
|
|
71
|
+
"type": "function"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"inputs": [{ "type": "address" }],
|
|
75
|
+
"name": "earnedB",
|
|
76
|
+
"outputs": [{ "type": "uint256" }],
|
|
77
|
+
"stateMutability": "view",
|
|
78
|
+
"type": "function"
|
|
79
|
+
}
|
|
80
|
+
];
|
|
81
|
+
class StakingClient extends SubgraphClient_1.SubgraphClient {
|
|
82
|
+
constructor(client) {
|
|
83
|
+
super(client);
|
|
84
|
+
this.stakingPoolsEndpoint = 'https://9i52h964s3.execute-api.us-east-1.amazonaws.com/dev/staking-pools';
|
|
85
|
+
this.publicClient = client;
|
|
86
|
+
this.walletClient = client;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Fetches staking pool data from the API
|
|
90
|
+
* @param chainId Optional chain ID to filter pools
|
|
91
|
+
* @param protocol Optional protocol name to filter pools
|
|
92
|
+
*/
|
|
93
|
+
async getStakingPools(chainId, protocol) {
|
|
94
|
+
try {
|
|
95
|
+
const response = await fetch(this.stakingPoolsEndpoint);
|
|
96
|
+
if (!response.ok) {
|
|
97
|
+
throw new Error('Failed to fetch staking pools');
|
|
98
|
+
}
|
|
99
|
+
let pools = await response.json();
|
|
100
|
+
// Apply filters if provided
|
|
101
|
+
if (chainId) {
|
|
102
|
+
pools = pools.filter(pool => pool.chainId === chainId);
|
|
103
|
+
}
|
|
104
|
+
if (protocol) {
|
|
105
|
+
pools = pools.filter(pool => pool.protocol === protocol);
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
data: pools,
|
|
109
|
+
status: 200,
|
|
110
|
+
success: true,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return {
|
|
115
|
+
data: null,
|
|
116
|
+
status: 500,
|
|
117
|
+
success: false,
|
|
118
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Stakes tokens in a staking pool
|
|
124
|
+
* @param params The staking parameters
|
|
125
|
+
*/
|
|
126
|
+
async stake(params) {
|
|
127
|
+
try {
|
|
128
|
+
const account = await this.walletClient.getAddresses();
|
|
129
|
+
if (!account[0])
|
|
130
|
+
throw new Error('No account found');
|
|
131
|
+
const { request } = await this.publicClient.simulateContract({
|
|
132
|
+
address: params.stakingPool,
|
|
133
|
+
abi: SINGLE_REWARD_ABI,
|
|
134
|
+
functionName: 'stake',
|
|
135
|
+
args: [params.amount],
|
|
136
|
+
account: account[0],
|
|
137
|
+
});
|
|
138
|
+
const hash = await this.walletClient.writeContract(request);
|
|
139
|
+
return {
|
|
140
|
+
data: hash,
|
|
141
|
+
status: 200,
|
|
142
|
+
success: true,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return {
|
|
147
|
+
data: null,
|
|
148
|
+
status: 500,
|
|
149
|
+
success: false,
|
|
150
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Withdraws tokens from a staking pool
|
|
156
|
+
* @param params The withdrawal parameters
|
|
157
|
+
*/
|
|
158
|
+
async withdraw(params) {
|
|
159
|
+
try {
|
|
160
|
+
const account = await this.walletClient.getAddresses();
|
|
161
|
+
if (!account[0])
|
|
162
|
+
throw new Error('No account found');
|
|
163
|
+
const { request } = await this.publicClient.simulateContract({
|
|
164
|
+
address: params.stakingPool,
|
|
165
|
+
abi: SINGLE_REWARD_ABI,
|
|
166
|
+
functionName: 'withdraw',
|
|
167
|
+
args: [params.amount],
|
|
168
|
+
account: account[0],
|
|
169
|
+
});
|
|
170
|
+
const hash = await this.walletClient.writeContract(request);
|
|
171
|
+
return {
|
|
172
|
+
data: hash,
|
|
173
|
+
status: 200,
|
|
174
|
+
success: true,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
return {
|
|
179
|
+
data: null,
|
|
180
|
+
status: 500,
|
|
181
|
+
success: false,
|
|
182
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Claims rewards from a staking pool
|
|
188
|
+
* @param params The reward claim parameters
|
|
189
|
+
*/
|
|
190
|
+
async getReward(params) {
|
|
191
|
+
try {
|
|
192
|
+
const account = await this.walletClient.getAddresses();
|
|
193
|
+
if (!account[0])
|
|
194
|
+
throw new Error('No account found');
|
|
195
|
+
const { request } = await this.publicClient.simulateContract({
|
|
196
|
+
address: params.stakingPool,
|
|
197
|
+
abi: SINGLE_REWARD_ABI,
|
|
198
|
+
functionName: 'getReward',
|
|
199
|
+
args: [],
|
|
200
|
+
account: account[0],
|
|
201
|
+
});
|
|
202
|
+
const hash = await this.walletClient.writeContract(request);
|
|
203
|
+
return {
|
|
204
|
+
data: hash,
|
|
205
|
+
status: 200,
|
|
206
|
+
success: true,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
return {
|
|
211
|
+
data: null,
|
|
212
|
+
status: 500,
|
|
213
|
+
success: false,
|
|
214
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Gets the earned rewards for an account in a staking pool
|
|
220
|
+
* @param stakingPool The staking pool address
|
|
221
|
+
* @param account The account to check rewards for
|
|
222
|
+
*/
|
|
223
|
+
async earned(stakingPool, account) {
|
|
224
|
+
try {
|
|
225
|
+
// First try to read as single reward
|
|
226
|
+
try {
|
|
227
|
+
const reward = await this.publicClient.readContract({
|
|
228
|
+
address: stakingPool,
|
|
229
|
+
abi: SINGLE_REWARD_ABI,
|
|
230
|
+
functionName: 'earned',
|
|
231
|
+
args: [account],
|
|
232
|
+
});
|
|
233
|
+
return {
|
|
234
|
+
data: { rewardA: reward },
|
|
235
|
+
status: 200,
|
|
236
|
+
success: true,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// If single reward fails, try dual rewards
|
|
241
|
+
const [rewardA, rewardB] = await Promise.all([
|
|
242
|
+
this.publicClient.readContract({
|
|
243
|
+
address: stakingPool,
|
|
244
|
+
abi: DUAL_REWARD_ABI,
|
|
245
|
+
functionName: 'earnedA',
|
|
246
|
+
args: [account],
|
|
247
|
+
}),
|
|
248
|
+
this.publicClient.readContract({
|
|
249
|
+
address: stakingPool,
|
|
250
|
+
abi: DUAL_REWARD_ABI,
|
|
251
|
+
functionName: 'earnedB',
|
|
252
|
+
args: [account],
|
|
253
|
+
}),
|
|
254
|
+
]);
|
|
255
|
+
return {
|
|
256
|
+
data: { rewardA, rewardB },
|
|
257
|
+
status: 200,
|
|
258
|
+
success: true,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
return {
|
|
264
|
+
data: null,
|
|
265
|
+
status: 500,
|
|
266
|
+
success: false,
|
|
267
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Gets the total supply of staked tokens in a pool
|
|
273
|
+
* @param stakingPool The staking pool address
|
|
274
|
+
*/
|
|
275
|
+
async totalSupply(stakingPool) {
|
|
276
|
+
try {
|
|
277
|
+
const totalSupply = await this.publicClient.readContract({
|
|
278
|
+
address: stakingPool,
|
|
279
|
+
abi: SINGLE_REWARD_ABI,
|
|
280
|
+
functionName: 'totalSupply',
|
|
281
|
+
});
|
|
282
|
+
return {
|
|
283
|
+
data: totalSupply,
|
|
284
|
+
status: 200,
|
|
285
|
+
success: true,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
return {
|
|
290
|
+
data: null,
|
|
291
|
+
status: 500,
|
|
292
|
+
success: false,
|
|
293
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Gets the staked balance of an account in a pool
|
|
299
|
+
* @param stakingPool The staking pool address
|
|
300
|
+
* @param account The account to check balance for
|
|
301
|
+
*/
|
|
302
|
+
async balanceOf(stakingPool, account) {
|
|
303
|
+
try {
|
|
304
|
+
const balance = await this.publicClient.readContract({
|
|
305
|
+
address: stakingPool,
|
|
306
|
+
abi: SINGLE_REWARD_ABI,
|
|
307
|
+
functionName: 'balanceOf',
|
|
308
|
+
args: [account],
|
|
309
|
+
});
|
|
310
|
+
return {
|
|
311
|
+
data: balance,
|
|
312
|
+
status: 200,
|
|
313
|
+
success: true,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
catch (error) {
|
|
317
|
+
return {
|
|
318
|
+
data: null,
|
|
319
|
+
status: 500,
|
|
320
|
+
success: false,
|
|
321
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Calculates the APR for a staking pool
|
|
327
|
+
* @param pool The staking pool data
|
|
328
|
+
* @param rewardTokenPriceUSD The price of the reward token in USD
|
|
329
|
+
* @param totalStakedUSD The total value staked in USD
|
|
330
|
+
*/
|
|
331
|
+
calculateAPR(pool, rewardTokenPriceUSD, totalStakedUSD) {
|
|
332
|
+
if (totalStakedUSD === 0) {
|
|
333
|
+
return 0;
|
|
334
|
+
}
|
|
335
|
+
const dailyRewardUSD = pool.dailyEmissionRewardA * rewardTokenPriceUSD;
|
|
336
|
+
let apr = (dailyRewardUSD * 365 * 100) / totalStakedUSD;
|
|
337
|
+
if (pool.isDualFactory && pool.dailyEmissionRewardB) {
|
|
338
|
+
const dailyRewardBUSD = pool.dailyEmissionRewardB * rewardTokenPriceUSD;
|
|
339
|
+
apr += (dailyRewardBUSD * 365 * 100) / totalStakedUSD;
|
|
340
|
+
}
|
|
341
|
+
return apr;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
exports.StakingClient = StakingClient;
|
|
345
|
+
//# sourceMappingURL=StakingClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StakingClient.js","sourceRoot":"","sources":["../../../src/base/StakingClient.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -20,6 +20,9 @@ __exportStar(require("./types"), exports);
|
|
|
20
20
|
__exportStar(require("./const"), exports);
|
|
21
21
|
__exportStar(require("./const/subgraph"), exports);
|
|
22
22
|
__exportStar(require("./const/api"), exports);
|
|
23
|
+
__exportStar(require("./base/VaultClient"), exports);
|
|
24
|
+
__exportStar(require("./base/SubgraphClient"), exports);
|
|
25
|
+
__exportStar(require("./base/StakingClient"), exports);
|
|
23
26
|
/**
|
|
24
27
|
* @packageDocumentation
|
|
25
28
|
*
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,mDAAiC;AACjC,8CAA4B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,mDAAiC;AACjC,8CAA4B;AAC5B,qDAAmC;AACnC,wDAAsC;AACtC,uDAAqC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG"}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { SubgraphClient } from './SubgraphClient';
|
|
2
|
+
// ABIs for staking contracts
|
|
3
|
+
const SINGLE_REWARD_ABI = [
|
|
4
|
+
{
|
|
5
|
+
"inputs": [],
|
|
6
|
+
"name": "lastTimeRewardApplicable",
|
|
7
|
+
"outputs": [{ "type": "uint256" }],
|
|
8
|
+
"stateMutability": "view",
|
|
9
|
+
"type": "function"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"inputs": [{ "type": "address" }],
|
|
13
|
+
"name": "earned",
|
|
14
|
+
"outputs": [{ "type": "uint256" }],
|
|
15
|
+
"stateMutability": "view",
|
|
16
|
+
"type": "function"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"inputs": [],
|
|
20
|
+
"name": "totalSupply",
|
|
21
|
+
"outputs": [{ "type": "uint256" }],
|
|
22
|
+
"stateMutability": "view",
|
|
23
|
+
"type": "function"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"inputs": [{ "type": "address" }],
|
|
27
|
+
"name": "balanceOf",
|
|
28
|
+
"outputs": [{ "type": "uint256" }],
|
|
29
|
+
"stateMutability": "view",
|
|
30
|
+
"type": "function"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"inputs": [{ "type": "uint256" }],
|
|
34
|
+
"name": "stake",
|
|
35
|
+
"outputs": [],
|
|
36
|
+
"stateMutability": "nonpayable",
|
|
37
|
+
"type": "function"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"inputs": [{ "type": "uint256" }],
|
|
41
|
+
"name": "withdraw",
|
|
42
|
+
"outputs": [],
|
|
43
|
+
"stateMutability": "nonpayable",
|
|
44
|
+
"type": "function"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"inputs": [],
|
|
48
|
+
"name": "getReward",
|
|
49
|
+
"outputs": [],
|
|
50
|
+
"stateMutability": "nonpayable",
|
|
51
|
+
"type": "function"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"inputs": [],
|
|
55
|
+
"name": "exit",
|
|
56
|
+
"outputs": [],
|
|
57
|
+
"stateMutability": "nonpayable",
|
|
58
|
+
"type": "function"
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
const DUAL_REWARD_ABI = [
|
|
62
|
+
...SINGLE_REWARD_ABI,
|
|
63
|
+
{
|
|
64
|
+
"inputs": [{ "type": "address" }],
|
|
65
|
+
"name": "earnedA",
|
|
66
|
+
"outputs": [{ "type": "uint256" }],
|
|
67
|
+
"stateMutability": "view",
|
|
68
|
+
"type": "function"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"inputs": [{ "type": "address" }],
|
|
72
|
+
"name": "earnedB",
|
|
73
|
+
"outputs": [{ "type": "uint256" }],
|
|
74
|
+
"stateMutability": "view",
|
|
75
|
+
"type": "function"
|
|
76
|
+
}
|
|
77
|
+
];
|
|
78
|
+
export class StakingClient extends SubgraphClient {
|
|
79
|
+
constructor(client) {
|
|
80
|
+
super(client);
|
|
81
|
+
this.stakingPoolsEndpoint = 'https://9i52h964s3.execute-api.us-east-1.amazonaws.com/dev/staking-pools';
|
|
82
|
+
this.publicClient = client;
|
|
83
|
+
this.walletClient = client;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Fetches staking pool data from the API
|
|
87
|
+
* @param chainId Optional chain ID to filter pools
|
|
88
|
+
* @param protocol Optional protocol name to filter pools
|
|
89
|
+
*/
|
|
90
|
+
async getStakingPools(chainId, protocol) {
|
|
91
|
+
try {
|
|
92
|
+
const response = await fetch(this.stakingPoolsEndpoint);
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
throw new Error('Failed to fetch staking pools');
|
|
95
|
+
}
|
|
96
|
+
let pools = await response.json();
|
|
97
|
+
// Apply filters if provided
|
|
98
|
+
if (chainId) {
|
|
99
|
+
pools = pools.filter(pool => pool.chainId === chainId);
|
|
100
|
+
}
|
|
101
|
+
if (protocol) {
|
|
102
|
+
pools = pools.filter(pool => pool.protocol === protocol);
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
data: pools,
|
|
106
|
+
status: 200,
|
|
107
|
+
success: true,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
return {
|
|
112
|
+
data: null,
|
|
113
|
+
status: 500,
|
|
114
|
+
success: false,
|
|
115
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Stakes tokens in a staking pool
|
|
121
|
+
* @param params The staking parameters
|
|
122
|
+
*/
|
|
123
|
+
async stake(params) {
|
|
124
|
+
try {
|
|
125
|
+
const account = await this.walletClient.getAddresses();
|
|
126
|
+
if (!account[0])
|
|
127
|
+
throw new Error('No account found');
|
|
128
|
+
const { request } = await this.publicClient.simulateContract({
|
|
129
|
+
address: params.stakingPool,
|
|
130
|
+
abi: SINGLE_REWARD_ABI,
|
|
131
|
+
functionName: 'stake',
|
|
132
|
+
args: [params.amount],
|
|
133
|
+
account: account[0],
|
|
134
|
+
});
|
|
135
|
+
const hash = await this.walletClient.writeContract(request);
|
|
136
|
+
return {
|
|
137
|
+
data: hash,
|
|
138
|
+
status: 200,
|
|
139
|
+
success: true,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
return {
|
|
144
|
+
data: null,
|
|
145
|
+
status: 500,
|
|
146
|
+
success: false,
|
|
147
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Withdraws tokens from a staking pool
|
|
153
|
+
* @param params The withdrawal parameters
|
|
154
|
+
*/
|
|
155
|
+
async withdraw(params) {
|
|
156
|
+
try {
|
|
157
|
+
const account = await this.walletClient.getAddresses();
|
|
158
|
+
if (!account[0])
|
|
159
|
+
throw new Error('No account found');
|
|
160
|
+
const { request } = await this.publicClient.simulateContract({
|
|
161
|
+
address: params.stakingPool,
|
|
162
|
+
abi: SINGLE_REWARD_ABI,
|
|
163
|
+
functionName: 'withdraw',
|
|
164
|
+
args: [params.amount],
|
|
165
|
+
account: account[0],
|
|
166
|
+
});
|
|
167
|
+
const hash = await this.walletClient.writeContract(request);
|
|
168
|
+
return {
|
|
169
|
+
data: hash,
|
|
170
|
+
status: 200,
|
|
171
|
+
success: true,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
return {
|
|
176
|
+
data: null,
|
|
177
|
+
status: 500,
|
|
178
|
+
success: false,
|
|
179
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Claims rewards from a staking pool
|
|
185
|
+
* @param params The reward claim parameters
|
|
186
|
+
*/
|
|
187
|
+
async getReward(params) {
|
|
188
|
+
try {
|
|
189
|
+
const account = await this.walletClient.getAddresses();
|
|
190
|
+
if (!account[0])
|
|
191
|
+
throw new Error('No account found');
|
|
192
|
+
const { request } = await this.publicClient.simulateContract({
|
|
193
|
+
address: params.stakingPool,
|
|
194
|
+
abi: SINGLE_REWARD_ABI,
|
|
195
|
+
functionName: 'getReward',
|
|
196
|
+
args: [],
|
|
197
|
+
account: account[0],
|
|
198
|
+
});
|
|
199
|
+
const hash = await this.walletClient.writeContract(request);
|
|
200
|
+
return {
|
|
201
|
+
data: hash,
|
|
202
|
+
status: 200,
|
|
203
|
+
success: true,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return {
|
|
208
|
+
data: null,
|
|
209
|
+
status: 500,
|
|
210
|
+
success: false,
|
|
211
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Gets the earned rewards for an account in a staking pool
|
|
217
|
+
* @param stakingPool The staking pool address
|
|
218
|
+
* @param account The account to check rewards for
|
|
219
|
+
*/
|
|
220
|
+
async earned(stakingPool, account) {
|
|
221
|
+
try {
|
|
222
|
+
// First try to read as single reward
|
|
223
|
+
try {
|
|
224
|
+
const reward = await this.publicClient.readContract({
|
|
225
|
+
address: stakingPool,
|
|
226
|
+
abi: SINGLE_REWARD_ABI,
|
|
227
|
+
functionName: 'earned',
|
|
228
|
+
args: [account],
|
|
229
|
+
});
|
|
230
|
+
return {
|
|
231
|
+
data: { rewardA: reward },
|
|
232
|
+
status: 200,
|
|
233
|
+
success: true,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// If single reward fails, try dual rewards
|
|
238
|
+
const [rewardA, rewardB] = await Promise.all([
|
|
239
|
+
this.publicClient.readContract({
|
|
240
|
+
address: stakingPool,
|
|
241
|
+
abi: DUAL_REWARD_ABI,
|
|
242
|
+
functionName: 'earnedA',
|
|
243
|
+
args: [account],
|
|
244
|
+
}),
|
|
245
|
+
this.publicClient.readContract({
|
|
246
|
+
address: stakingPool,
|
|
247
|
+
abi: DUAL_REWARD_ABI,
|
|
248
|
+
functionName: 'earnedB',
|
|
249
|
+
args: [account],
|
|
250
|
+
}),
|
|
251
|
+
]);
|
|
252
|
+
return {
|
|
253
|
+
data: { rewardA, rewardB },
|
|
254
|
+
status: 200,
|
|
255
|
+
success: true,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
return {
|
|
261
|
+
data: null,
|
|
262
|
+
status: 500,
|
|
263
|
+
success: false,
|
|
264
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Gets the total supply of staked tokens in a pool
|
|
270
|
+
* @param stakingPool The staking pool address
|
|
271
|
+
*/
|
|
272
|
+
async totalSupply(stakingPool) {
|
|
273
|
+
try {
|
|
274
|
+
const totalSupply = await this.publicClient.readContract({
|
|
275
|
+
address: stakingPool,
|
|
276
|
+
abi: SINGLE_REWARD_ABI,
|
|
277
|
+
functionName: 'totalSupply',
|
|
278
|
+
});
|
|
279
|
+
return {
|
|
280
|
+
data: totalSupply,
|
|
281
|
+
status: 200,
|
|
282
|
+
success: true,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
return {
|
|
287
|
+
data: null,
|
|
288
|
+
status: 500,
|
|
289
|
+
success: false,
|
|
290
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Gets the staked balance of an account in a pool
|
|
296
|
+
* @param stakingPool The staking pool address
|
|
297
|
+
* @param account The account to check balance for
|
|
298
|
+
*/
|
|
299
|
+
async balanceOf(stakingPool, account) {
|
|
300
|
+
try {
|
|
301
|
+
const balance = await this.publicClient.readContract({
|
|
302
|
+
address: stakingPool,
|
|
303
|
+
abi: SINGLE_REWARD_ABI,
|
|
304
|
+
functionName: 'balanceOf',
|
|
305
|
+
args: [account],
|
|
306
|
+
});
|
|
307
|
+
return {
|
|
308
|
+
data: balance,
|
|
309
|
+
status: 200,
|
|
310
|
+
success: true,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
return {
|
|
315
|
+
data: null,
|
|
316
|
+
status: 500,
|
|
317
|
+
success: false,
|
|
318
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Calculates the APR for a staking pool
|
|
324
|
+
* @param pool The staking pool data
|
|
325
|
+
* @param rewardTokenPriceUSD The price of the reward token in USD
|
|
326
|
+
* @param totalStakedUSD The total value staked in USD
|
|
327
|
+
*/
|
|
328
|
+
calculateAPR(pool, rewardTokenPriceUSD, totalStakedUSD) {
|
|
329
|
+
if (totalStakedUSD === 0) {
|
|
330
|
+
return 0;
|
|
331
|
+
}
|
|
332
|
+
const dailyRewardUSD = pool.dailyEmissionRewardA * rewardTokenPriceUSD;
|
|
333
|
+
let apr = (dailyRewardUSD * 365 * 100) / totalStakedUSD;
|
|
334
|
+
if (pool.isDualFactory && pool.dailyEmissionRewardB) {
|
|
335
|
+
const dailyRewardBUSD = pool.dailyEmissionRewardB * rewardTokenPriceUSD;
|
|
336
|
+
apr += (dailyRewardBUSD * 365 * 100) / totalStakedUSD;
|
|
337
|
+
}
|
|
338
|
+
return apr;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=StakingClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StakingClient.js","sourceRoot":"","sources":["../../../src/base/StakingClient.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -4,6 +4,9 @@ export * from './types';
|
|
|
4
4
|
export * from './const';
|
|
5
5
|
export * from './const/subgraph';
|
|
6
6
|
export * from './const/api';
|
|
7
|
+
export * from './base/VaultClient';
|
|
8
|
+
export * from './base/SubgraphClient';
|
|
9
|
+
export * from './base/StakingClient';
|
|
7
10
|
/**
|
|
8
11
|
* @packageDocumentation
|
|
9
12
|
*
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { Address, Hash, PublicClient, WalletClient } from 'viem';
|
|
2
|
+
import { SteerResponse } from '../types';
|
|
3
|
+
import { SubgraphClient } from './SubgraphClient';
|
|
4
|
+
export interface StakingPool {
|
|
5
|
+
chainId: number;
|
|
6
|
+
stakingPool: string;
|
|
7
|
+
protocol: string;
|
|
8
|
+
isDualFactory: boolean;
|
|
9
|
+
dailyEmissionRewardA: number;
|
|
10
|
+
dailyEmissionRewardB: number;
|
|
11
|
+
rewardTokenA: string;
|
|
12
|
+
rewardTokenB: string;
|
|
13
|
+
periodFinish: string;
|
|
14
|
+
rewardsDuration: string;
|
|
15
|
+
}
|
|
16
|
+
export interface StakeParams {
|
|
17
|
+
stakingPool: Address;
|
|
18
|
+
amount: bigint;
|
|
19
|
+
}
|
|
20
|
+
export interface WithdrawParams {
|
|
21
|
+
stakingPool: Address;
|
|
22
|
+
amount: bigint;
|
|
23
|
+
}
|
|
24
|
+
export interface GetRewardParams {
|
|
25
|
+
stakingPool: Address;
|
|
26
|
+
}
|
|
27
|
+
export declare class StakingClient extends SubgraphClient {
|
|
28
|
+
protected readonly publicClient: PublicClient;
|
|
29
|
+
protected readonly walletClient: WalletClient;
|
|
30
|
+
private readonly stakingPoolsEndpoint;
|
|
31
|
+
constructor(client: PublicClient & WalletClient);
|
|
32
|
+
/**
|
|
33
|
+
* Fetches staking pool data from the API
|
|
34
|
+
* @param chainId Optional chain ID to filter pools
|
|
35
|
+
* @param protocol Optional protocol name to filter pools
|
|
36
|
+
*/
|
|
37
|
+
getStakingPools(chainId?: number, protocol?: string): Promise<SteerResponse<StakingPool[]>>;
|
|
38
|
+
/**
|
|
39
|
+
* Stakes tokens in a staking pool
|
|
40
|
+
* @param params The staking parameters
|
|
41
|
+
*/
|
|
42
|
+
stake(params: StakeParams): Promise<SteerResponse<Hash>>;
|
|
43
|
+
/**
|
|
44
|
+
* Withdraws tokens from a staking pool
|
|
45
|
+
* @param params The withdrawal parameters
|
|
46
|
+
*/
|
|
47
|
+
withdraw(params: WithdrawParams): Promise<SteerResponse<Hash>>;
|
|
48
|
+
/**
|
|
49
|
+
* Claims rewards from a staking pool
|
|
50
|
+
* @param params The reward claim parameters
|
|
51
|
+
*/
|
|
52
|
+
getReward(params: GetRewardParams): Promise<SteerResponse<Hash>>;
|
|
53
|
+
/**
|
|
54
|
+
* Gets the earned rewards for an account in a staking pool
|
|
55
|
+
* @param stakingPool The staking pool address
|
|
56
|
+
* @param account The account to check rewards for
|
|
57
|
+
*/
|
|
58
|
+
earned(stakingPool: Address, account: Address): Promise<SteerResponse<{
|
|
59
|
+
rewardA: bigint;
|
|
60
|
+
rewardB?: bigint;
|
|
61
|
+
}>>;
|
|
62
|
+
/**
|
|
63
|
+
* Gets the total supply of staked tokens in a pool
|
|
64
|
+
* @param stakingPool The staking pool address
|
|
65
|
+
*/
|
|
66
|
+
totalSupply(stakingPool: Address): Promise<SteerResponse<bigint>>;
|
|
67
|
+
/**
|
|
68
|
+
* Gets the staked balance of an account in a pool
|
|
69
|
+
* @param stakingPool The staking pool address
|
|
70
|
+
* @param account The account to check balance for
|
|
71
|
+
*/
|
|
72
|
+
balanceOf(stakingPool: Address, account: Address): Promise<SteerResponse<bigint>>;
|
|
73
|
+
/**
|
|
74
|
+
* Calculates the APR for a staking pool
|
|
75
|
+
* @param pool The staking pool data
|
|
76
|
+
* @param rewardTokenPriceUSD The price of the reward token in USD
|
|
77
|
+
* @param totalStakedUSD The total value staked in USD
|
|
78
|
+
*/
|
|
79
|
+
calculateAPR(pool: StakingPool, rewardTokenPriceUSD: number, totalStakedUSD: number): number;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=StakingClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StakingClient.d.ts","sourceRoot":"","sources":["../../../src/base/StakingClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;CACtB;AAgFD,qBAAa,aAAc,SAAQ,cAAc;IAC/C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8E;gBAEvG,MAAM,EAAE,YAAY,GAAG,YAAY;IAM/C;;;;OAIG;IACU,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;IAgCxG;;;OAGG;IACU,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IA8BrE;;;OAGG;IACU,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IA8B3E;;;OAGG;IACU,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IA8B7E;;;;OAIG;IACU,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAiD1H;;;OAGG;IACU,WAAW,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAuB9E;;;;OAIG;IACU,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAwB9F;;;;;OAKG;IACI,YAAY,CACjB,IAAI,EAAE,WAAW,EACjB,mBAAmB,EAAE,MAAM,EAC3B,cAAc,EAAE,MAAM,GACrB,MAAM;CAeV"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ export * from './types';
|
|
|
4
4
|
export * from './const';
|
|
5
5
|
export * from './const/subgraph';
|
|
6
6
|
export * from './const/api';
|
|
7
|
+
export * from './base/VaultClient';
|
|
8
|
+
export * from './base/SubgraphClient';
|
|
9
|
+
export * from './base/StakingClient';
|
|
7
10
|
/**
|
|
8
11
|
* @packageDocumentation
|
|
9
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG"}
|