levr-sdk 0.0.1 → 0.1.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/README.md +109 -13
- package/dist/esm/abis/LevrFactory_v1.js +63 -0
- package/dist/esm/abis/LevrGovernor_v1.js +15 -24
- package/dist/esm/abis/LevrStaking_v1.js +7 -1
- package/dist/esm/abis/StateView.js +149 -0
- package/dist/esm/abis/V3QuoterV2.js +26 -0
- package/dist/esm/abis/index.js +4 -0
- package/dist/esm/balance.js +48 -4
- package/dist/esm/balance.js.map +1 -1
- package/dist/esm/client/hook/index.js +14 -3
- package/dist/esm/client/hook/index.js.map +1 -1
- package/dist/esm/client/hook/use-fee-receivers.js +11 -30
- package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
- package/dist/esm/client/hook/use-governance.js +20 -274
- package/dist/esm/client/hook/use-governance.js.map +1 -1
- package/dist/esm/client/hook/use-pool.js +26 -0
- package/dist/esm/client/hook/use-pool.js.map +1 -0
- package/dist/esm/client/hook/use-prepare.js +6 -3
- package/dist/esm/client/hook/use-prepare.js.map +1 -1
- package/dist/esm/client/hook/use-project.js +28 -16
- package/dist/esm/client/hook/use-project.js.map +1 -1
- package/dist/esm/client/hook/use-proposal.js +48 -0
- package/dist/esm/client/hook/use-proposal.js.map +1 -0
- package/dist/esm/client/hook/use-stake.js +29 -215
- package/dist/esm/client/hook/use-stake.js.map +1 -1
- package/dist/esm/client/hook/use-swap.js +23 -19
- package/dist/esm/client/hook/use-swap.js.map +1 -1
- package/dist/esm/client/hook/use-user.js +25 -0
- package/dist/esm/client/hook/use-user.js.map +1 -0
- package/dist/esm/client/levr-provider.js +73 -108
- package/dist/esm/client/levr-provider.js.map +1 -1
- package/dist/esm/client/query-keys.js +10 -22
- package/dist/esm/client/query-keys.js.map +1 -1
- package/dist/esm/constants.js +42 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/fee-receivers.js +28 -13
- package/dist/esm/fee-receivers.js.map +1 -1
- package/dist/esm/governance.js +35 -399
- package/dist/esm/governance.js.map +1 -1
- package/dist/esm/index.js +7 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pool-key.js +152 -0
- package/dist/esm/pool-key.js.map +1 -0
- package/dist/esm/pool.js +70 -0
- package/dist/esm/pool.js.map +1 -0
- package/dist/esm/project.js +415 -118
- package/dist/esm/project.js.map +1 -1
- package/dist/esm/proposal.js +156 -0
- package/dist/esm/proposal.js.map +1 -0
- package/dist/esm/quote/index.js +98 -0
- package/dist/esm/quote/index.js.map +1 -0
- package/dist/esm/quote/v3.js +62 -0
- package/dist/esm/quote/v3.js.map +1 -0
- package/dist/esm/quote/v4.js +228 -0
- package/dist/esm/quote/v4.js.map +1 -0
- package/dist/esm/stake.js +34 -237
- package/dist/esm/stake.js.map +1 -1
- package/dist/esm/treasury.js +162 -0
- package/dist/esm/treasury.js.map +1 -0
- package/dist/esm/usd-price.js +149 -0
- package/dist/esm/usd-price.js.map +1 -0
- package/dist/esm/user.js +153 -0
- package/dist/esm/user.js.map +1 -0
- package/dist/esm/util.js +45 -1
- package/dist/esm/util.js.map +1 -1
- package/dist/types/abis/LevrFactory_v1.d.ts +48 -0
- package/dist/types/abis/LevrGovernor_v1.d.ts +12 -18
- package/dist/types/abis/LevrStaking_v1.d.ts +5 -1
- package/dist/types/abis/StateView.d.ts +278 -0
- package/dist/types/abis/V3QuoterV2.d.ts +39 -0
- package/dist/types/abis/index.d.ts +2 -0
- package/dist/types/balance.d.ts +19 -6
- package/dist/types/balance.d.ts.map +1 -1
- package/dist/types/client/hook/index.d.ts +12 -4
- package/dist/types/client/hook/index.d.ts.map +1 -1
- package/dist/types/client/hook/use-fee-receivers.d.ts +6 -16
- package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
- package/dist/types/client/hook/use-governance.d.ts +4 -93
- package/dist/types/client/hook/use-governance.d.ts.map +1 -1
- package/dist/types/client/hook/use-pool.d.ts +12 -0
- package/dist/types/client/hook/use-pool.d.ts.map +1 -0
- package/dist/types/client/hook/use-prepare.d.ts +1 -2
- package/dist/types/client/hook/use-prepare.d.ts.map +1 -1
- package/dist/types/client/hook/use-project.d.ts +8 -1
- package/dist/types/client/hook/use-project.d.ts.map +1 -1
- package/dist/types/client/hook/use-proposal.d.ts +18 -0
- package/dist/types/client/hook/use-proposal.d.ts.map +1 -0
- package/dist/types/client/hook/use-stake.d.ts +14 -168
- package/dist/types/client/hook/use-stake.d.ts.map +1 -1
- package/dist/types/client/hook/use-swap.d.ts +5 -9
- package/dist/types/client/hook/use-swap.d.ts.map +1 -1
- package/dist/types/client/hook/use-user.d.ts +13 -0
- package/dist/types/client/hook/use-user.d.ts.map +1 -0
- package/dist/types/client/levr-provider.d.ts +41 -68
- package/dist/types/client/levr-provider.d.ts.map +1 -1
- package/dist/types/client/query-keys.d.ts +14 -26
- package/dist/types/client/query-keys.d.ts.map +1 -1
- package/dist/types/constants.d.ts +18 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/fee-receivers.d.ts +29 -2
- package/dist/types/fee-receivers.d.ts.map +1 -1
- package/dist/types/governance.d.ts +8 -108
- package/dist/types/governance.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/pool-key.d.ts +121 -0
- package/dist/types/pool-key.d.ts.map +1 -0
- package/dist/types/pool.d.ts +590 -0
- package/dist/types/pool.d.ts.map +1 -0
- package/dist/types/project.d.ts +61 -11
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/proposal.d.ts +1161 -0
- package/dist/types/proposal.d.ts.map +1 -0
- package/dist/types/quote/index.d.ts +97 -0
- package/dist/types/quote/index.d.ts.map +1 -0
- package/dist/types/quote/v3.d.ts +78 -0
- package/dist/types/quote/v3.d.ts.map +1 -0
- package/dist/types/quote/v4.d.ts +95 -0
- package/dist/types/quote/v4.d.ts.map +1 -0
- package/dist/types/stake.d.ts +41 -87
- package/dist/types/stake.d.ts.map +1 -1
- package/dist/types/treasury.d.ts +16 -0
- package/dist/types/treasury.d.ts.map +1 -0
- package/dist/types/types.d.ts +15 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/usd-price.d.ts +141 -0
- package/dist/types/usd-price.d.ts.map +1 -0
- package/dist/types/user.d.ts +188 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/util.d.ts +17 -0
- package/dist/types/util.d.ts.map +1 -1
- package/package.json +5 -2
- package/dist/esm/client/hook/use-balance.js +0 -56
- package/dist/esm/client/hook/use-balance.js.map +0 -1
- package/dist/esm/client/hook/use-projects.js +0 -22
- package/dist/esm/client/hook/use-projects.js.map +0 -1
- package/dist/esm/client/hook/use-proposals.js +0 -31
- package/dist/esm/client/hook/use-proposals.js.map +0 -1
- package/dist/esm/projects.js +0 -212
- package/dist/esm/projects.js.map +0 -1
- package/dist/esm/proposals.js +0 -98
- package/dist/esm/proposals.js.map +0 -1
- package/dist/esm/quote-v4.js +0 -169
- package/dist/esm/quote-v4.js.map +0 -1
- package/dist/types/client/hook/use-balance.d.ts +0 -18
- package/dist/types/client/hook/use-balance.d.ts.map +0 -1
- package/dist/types/client/hook/use-projects.d.ts +0 -6
- package/dist/types/client/hook/use-projects.d.ts.map +0 -1
- package/dist/types/client/hook/use-proposals.d.ts +0 -16
- package/dist/types/client/hook/use-proposals.d.ts.map +0 -1
- package/dist/types/projects.d.ts +0 -20
- package/dist/types/projects.d.ts.map +0 -1
- package/dist/types/proposals.d.ts +0 -20
- package/dist/types/proposals.d.ts.map +0 -1
- package/dist/types/quote-v4.d.ts +0 -54
- package/dist/types/quote-v4.d.ts.map +0 -1
package/dist/esm/stake.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { omit } from "lodash";
|
|
2
|
+
import { encodeFunctionData, erc20Abi, parseUnits } from "viem";
|
|
2
3
|
import { LevrForwarder_v1, LevrStaking_v1 } from "./abis/index.js";
|
|
3
4
|
import { WETH } from "./constants.js";
|
|
4
|
-
import { quoteV4 } from "./quote-v4.js";
|
|
5
5
|
export class Stake {
|
|
6
6
|
wallet;
|
|
7
7
|
publicClient;
|
|
@@ -12,16 +12,17 @@ export class Stake {
|
|
|
12
12
|
userAddress;
|
|
13
13
|
trustedForwarder;
|
|
14
14
|
constructor(config) {
|
|
15
|
-
|
|
15
|
+
// Validate required fields only (not optional fields like trustedForwarder, pricing)
|
|
16
|
+
if (Object.values(omit(config, ["pricing"])).some((value) => !value))
|
|
16
17
|
throw new Error("Invalid config");
|
|
17
18
|
this.wallet = config.wallet;
|
|
18
19
|
this.publicClient = config.publicClient;
|
|
19
|
-
this.stakingAddress = config.
|
|
20
|
-
this.tokenAddress = config.
|
|
21
|
-
this.tokenDecimals = config.
|
|
20
|
+
this.stakingAddress = config.project.staking;
|
|
21
|
+
this.tokenAddress = config.project.token.address;
|
|
22
|
+
this.tokenDecimals = config.project.token.decimals;
|
|
22
23
|
this.chainId = config.publicClient.chain?.id ?? 1; // Get chainId from publicClient
|
|
23
24
|
this.userAddress = config.wallet.account.address;
|
|
24
|
-
this.trustedForwarder = config.
|
|
25
|
+
this.trustedForwarder = config.project.forwarder;
|
|
25
26
|
}
|
|
26
27
|
/**
|
|
27
28
|
* Approve ERC20 tokens for spending by the staking contract
|
|
@@ -61,21 +62,27 @@ export class Stake {
|
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
63
64
|
* Unstake tokens from the staking contract
|
|
65
|
+
* @returns Transaction receipt with the new voting power after unstake
|
|
64
66
|
*/
|
|
65
67
|
async unstake({ amount, to }) {
|
|
66
68
|
const parsedAmount = typeof amount === "bigint" ? amount : parseUnits(amount.toString(), this.tokenDecimals);
|
|
67
|
-
const
|
|
69
|
+
const params = {
|
|
68
70
|
address: this.stakingAddress,
|
|
69
71
|
abi: LevrStaking_v1,
|
|
70
72
|
functionName: "unstake",
|
|
71
73
|
args: [parsedAmount, to ?? this.userAddress],
|
|
72
74
|
chain: this.wallet.chain,
|
|
73
|
-
}
|
|
75
|
+
};
|
|
76
|
+
const { result: newVotingPower } = await this.publicClient.simulateContract(params);
|
|
77
|
+
const hash = await this.wallet.writeContract(params);
|
|
74
78
|
const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
|
|
75
79
|
if (receipt.status === "reverted") {
|
|
76
80
|
throw new Error("Unstake transaction reverted");
|
|
77
81
|
}
|
|
78
|
-
return
|
|
82
|
+
return {
|
|
83
|
+
receipt,
|
|
84
|
+
newVotingPower,
|
|
85
|
+
};
|
|
79
86
|
}
|
|
80
87
|
/**
|
|
81
88
|
* Claim rewards from the staking contract
|
|
@@ -100,178 +107,6 @@ export class Stake {
|
|
|
100
107
|
}
|
|
101
108
|
return receipt;
|
|
102
109
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Get allowance for a token and spender
|
|
105
|
-
*/
|
|
106
|
-
async getAllowance() {
|
|
107
|
-
const result = await this.publicClient.readContract({
|
|
108
|
-
address: this.tokenAddress,
|
|
109
|
-
abi: erc20Abi,
|
|
110
|
-
functionName: "allowance",
|
|
111
|
-
args: [this.userAddress, this.stakingAddress],
|
|
112
|
-
});
|
|
113
|
-
return {
|
|
114
|
-
raw: result,
|
|
115
|
-
formatted: formatUnits(result, 18), // Assuming 18 decimals, should be passed as param if needed
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Get pool data from staking contract
|
|
120
|
-
*/
|
|
121
|
-
async getPoolData() {
|
|
122
|
-
// Get current block to use blockchain time
|
|
123
|
-
const currentBlock = await this.publicClient.getBlock();
|
|
124
|
-
const blockTime = currentBlock.timestamp;
|
|
125
|
-
const results = await this.publicClient.multicall({
|
|
126
|
-
contracts: [
|
|
127
|
-
{
|
|
128
|
-
address: this.stakingAddress,
|
|
129
|
-
abi: LevrStaking_v1,
|
|
130
|
-
functionName: "totalStaked",
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
address: this.stakingAddress,
|
|
134
|
-
abi: LevrStaking_v1,
|
|
135
|
-
functionName: "escrowBalance",
|
|
136
|
-
args: [this.tokenAddress],
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
address: this.stakingAddress,
|
|
140
|
-
abi: LevrStaking_v1,
|
|
141
|
-
functionName: "streamWindowSeconds",
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
address: this.stakingAddress,
|
|
145
|
-
abi: LevrStaking_v1,
|
|
146
|
-
functionName: "streamStart",
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
address: this.stakingAddress,
|
|
150
|
-
abi: LevrStaking_v1,
|
|
151
|
-
functionName: "streamEnd",
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
address: this.stakingAddress,
|
|
155
|
-
abi: LevrStaking_v1,
|
|
156
|
-
functionName: "rewardRatePerSecond",
|
|
157
|
-
args: [this.tokenAddress],
|
|
158
|
-
},
|
|
159
|
-
],
|
|
160
|
-
});
|
|
161
|
-
const [totalStaked, escrowBalance, windowSeconds, streamStart, streamEnd, rewardRate] = results.map((r) => r.result);
|
|
162
|
-
return {
|
|
163
|
-
totalStaked: {
|
|
164
|
-
raw: totalStaked,
|
|
165
|
-
formatted: formatUnits(totalStaked, this.tokenDecimals),
|
|
166
|
-
},
|
|
167
|
-
escrowBalance: {
|
|
168
|
-
raw: escrowBalance,
|
|
169
|
-
formatted: formatUnits(escrowBalance, this.tokenDecimals),
|
|
170
|
-
},
|
|
171
|
-
streamParams: {
|
|
172
|
-
windowSeconds: windowSeconds,
|
|
173
|
-
streamStart: streamStart,
|
|
174
|
-
streamEnd: streamEnd,
|
|
175
|
-
isActive: blockTime < streamEnd,
|
|
176
|
-
},
|
|
177
|
-
rewardRatePerSecond: {
|
|
178
|
-
raw: rewardRate,
|
|
179
|
-
formatted: formatUnits(rewardRate, this.tokenDecimals),
|
|
180
|
-
},
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Get user data from staking contract
|
|
185
|
-
*/
|
|
186
|
-
async getUserData() {
|
|
187
|
-
const results = await this.publicClient.multicall({
|
|
188
|
-
contracts: [
|
|
189
|
-
{
|
|
190
|
-
address: this.stakingAddress,
|
|
191
|
-
abi: LevrStaking_v1,
|
|
192
|
-
functionName: "stakedBalanceOf",
|
|
193
|
-
args: [this.userAddress],
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
address: this.stakingAddress,
|
|
197
|
-
abi: LevrStaking_v1,
|
|
198
|
-
functionName: "aprBps",
|
|
199
|
-
args: [],
|
|
200
|
-
},
|
|
201
|
-
],
|
|
202
|
-
});
|
|
203
|
-
const stakedBalance = results[0].result;
|
|
204
|
-
const aprBps = results[1].result;
|
|
205
|
-
return {
|
|
206
|
-
stakedBalance: {
|
|
207
|
-
raw: stakedBalance,
|
|
208
|
-
formatted: formatUnits(stakedBalance, this.tokenDecimals),
|
|
209
|
-
},
|
|
210
|
-
aprBps: {
|
|
211
|
-
raw: aprBps,
|
|
212
|
-
percentage: Number(aprBps) / 100,
|
|
213
|
-
},
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Get outstanding rewards for the token (for accrual purposes)
|
|
218
|
-
*/
|
|
219
|
-
async getOutstandingRewards(tokenAddress) {
|
|
220
|
-
const token = tokenAddress ?? this.tokenAddress;
|
|
221
|
-
const decimals = token === this.tokenAddress ? this.tokenDecimals : 18; // Assume 18 for other tokens
|
|
222
|
-
const result = await this.publicClient.readContract({
|
|
223
|
-
address: this.stakingAddress,
|
|
224
|
-
abi: LevrStaking_v1,
|
|
225
|
-
functionName: "outstandingRewards",
|
|
226
|
-
args: [token],
|
|
227
|
-
});
|
|
228
|
-
return {
|
|
229
|
-
available: {
|
|
230
|
-
raw: result[0],
|
|
231
|
-
formatted: formatUnits(result[0], decimals),
|
|
232
|
-
},
|
|
233
|
-
pending: {
|
|
234
|
-
raw: result[1],
|
|
235
|
-
formatted: formatUnits(result[1], decimals),
|
|
236
|
-
},
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Get claimable rewards for the current user and token
|
|
241
|
-
*/
|
|
242
|
-
async getClaimableRewards(tokenAddress) {
|
|
243
|
-
const token = tokenAddress ?? this.tokenAddress;
|
|
244
|
-
const decimals = token === this.tokenAddress ? this.tokenDecimals : 18; // Assume 18 for other tokens
|
|
245
|
-
const result = await this.publicClient.readContract({
|
|
246
|
-
address: this.stakingAddress,
|
|
247
|
-
abi: LevrStaking_v1,
|
|
248
|
-
functionName: "claimableRewards",
|
|
249
|
-
args: [this.userAddress, token],
|
|
250
|
-
});
|
|
251
|
-
return {
|
|
252
|
-
claimable: {
|
|
253
|
-
raw: result,
|
|
254
|
-
formatted: formatUnits(result, decimals),
|
|
255
|
-
},
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Get reward rate per second for a specific token
|
|
260
|
-
*/
|
|
261
|
-
async getRewardRatePerSecond(tokenAddress) {
|
|
262
|
-
const token = tokenAddress ?? this.tokenAddress;
|
|
263
|
-
const decimals = token === this.tokenAddress ? this.tokenDecimals : 18; // Assume 18 for other tokens
|
|
264
|
-
const result = await this.publicClient.readContract({
|
|
265
|
-
address: this.stakingAddress,
|
|
266
|
-
abi: LevrStaking_v1,
|
|
267
|
-
functionName: "rewardRatePerSecond",
|
|
268
|
-
args: [token],
|
|
269
|
-
});
|
|
270
|
-
return {
|
|
271
|
-
raw: result,
|
|
272
|
-
formatted: formatUnits(result, decimals),
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
110
|
/**
|
|
276
111
|
* Accrue rewards by triggering automatic collection from LP locker and claiming from ClankerFeeLocker
|
|
277
112
|
*/
|
|
@@ -321,63 +156,25 @@ export class Stake {
|
|
|
321
156
|
return receipt;
|
|
322
157
|
}
|
|
323
158
|
/**
|
|
324
|
-
*
|
|
325
|
-
*
|
|
326
|
-
*
|
|
327
|
-
* @param poolKey - The Uniswap V4 pool key for price discovery
|
|
328
|
-
* @returns WETH APR in basis points and percentage
|
|
159
|
+
* Simulate voting power after an unstake (without executing the transaction)
|
|
160
|
+
* @param amount Amount to unstake
|
|
161
|
+
* @returns Predicted voting power in token-days after the unstake
|
|
329
162
|
*/
|
|
330
|
-
async
|
|
331
|
-
const
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
if (totalStaked === 0n || wethRewardRate.raw === 0n) {
|
|
343
|
-
return { raw: 0n, percentage: 0 };
|
|
344
|
-
}
|
|
345
|
-
// Quote 1 WETH to determine price in underlying tokens
|
|
346
|
-
// Determine swap direction: WETH -> underlying
|
|
347
|
-
const wethIsCurrency0 = wethAddress.toLowerCase() < this.tokenAddress.toLowerCase();
|
|
348
|
-
const zeroForOne = wethIsCurrency0; // Swap WETH for underlying
|
|
349
|
-
// Quote 1 WETH (18 decimals)
|
|
350
|
-
const oneWeth = parseUnits("1", 18);
|
|
351
|
-
let wethPriceInUnderlying;
|
|
352
|
-
try {
|
|
353
|
-
const quote = await quoteV4({
|
|
354
|
-
publicClient: this.publicClient,
|
|
355
|
-
chainId: this.chainId,
|
|
356
|
-
poolKey,
|
|
357
|
-
zeroForOne,
|
|
358
|
-
amountIn: oneWeth,
|
|
359
|
-
});
|
|
360
|
-
// amountOut is how many underlying tokens we get for 1 WETH
|
|
361
|
-
wethPriceInUnderlying = quote.amountOut;
|
|
362
|
-
}
|
|
363
|
-
catch (error) {
|
|
364
|
-
// If quote fails, return 0 APR
|
|
365
|
-
console.error("Failed to quote WETH price:", error);
|
|
366
|
-
return { raw: 0n, percentage: 0 };
|
|
367
|
-
}
|
|
368
|
-
// Calculate annual WETH rewards (rewards per second * seconds per year)
|
|
369
|
-
const secondsPerYear = BigInt(365 * 24 * 60 * 60);
|
|
370
|
-
const annualWethRewards = wethRewardRate.raw * secondsPerYear;
|
|
371
|
-
// Convert WETH rewards to underlying token equivalent
|
|
372
|
-
// wethPriceInUnderlying is already in underlying token decimals from the quote
|
|
373
|
-
// annualWethRewards is in WETH (18 decimals)
|
|
374
|
-
// Both need to be normalized to underlying token decimals
|
|
375
|
-
const annualRewardsInUnderlying = (annualWethRewards * wethPriceInUnderlying) / BigInt(1000000000000000000);
|
|
376
|
-
// Calculate APR: (annualRewardsInUnderlying / totalStaked) * 10000
|
|
377
|
-
const aprBps = (annualRewardsInUnderlying * 10000n) / totalStaked;
|
|
163
|
+
async votingPowerOnUnstake(amount, userAddress) {
|
|
164
|
+
const user = userAddress ?? this.userAddress;
|
|
165
|
+
const parsedAmount = typeof amount === "bigint" ? amount : parseUnits(amount.toString(), this.tokenDecimals);
|
|
166
|
+
// Use simulateContract to get the return value without executing
|
|
167
|
+
const simulation = await this.publicClient.simulateContract({
|
|
168
|
+
address: this.stakingAddress,
|
|
169
|
+
abi: LevrStaking_v1,
|
|
170
|
+
functionName: "unstake",
|
|
171
|
+
args: [parsedAmount, user],
|
|
172
|
+
account: user,
|
|
173
|
+
});
|
|
174
|
+
const tokenDays = simulation.result;
|
|
378
175
|
return {
|
|
379
|
-
|
|
380
|
-
|
|
176
|
+
tokenDays,
|
|
177
|
+
formatted: tokenDays.toLocaleString(),
|
|
381
178
|
};
|
|
382
179
|
}
|
|
383
180
|
}
|
package/dist/esm/stake.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stake.js","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stake.js","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { erc20Abi } from "viem";
|
|
2
|
+
import { IClankerAirdrop } from "./abis/index.js";
|
|
3
|
+
import { formatBalanceWithUsd } from "./balance.js";
|
|
4
|
+
import { GET_CLANKER_AIRDROP_ADDRESS, TREASURY_AIRDROP_AMOUNTS } from "./constants.js";
|
|
5
|
+
/**
|
|
6
|
+
* Find treasury airdrop allocation by checking all known amounts using multicall
|
|
7
|
+
*/
|
|
8
|
+
async function findTreasuryAllocation(publicClient, clankerToken, treasury) {
|
|
9
|
+
const chainId = publicClient.chain?.id;
|
|
10
|
+
const airdropAddress = GET_CLANKER_AIRDROP_ADDRESS(chainId);
|
|
11
|
+
if (!airdropAddress)
|
|
12
|
+
return null;
|
|
13
|
+
// Prepare multicall for all possible treasury airdrop amounts + treasury balance check
|
|
14
|
+
const amounts = Object.values(TREASURY_AIRDROP_AMOUNTS).map((amountInTokens) => BigInt(amountInTokens) * 10n ** 18n);
|
|
15
|
+
const results = await publicClient.multicall({
|
|
16
|
+
contracts: [
|
|
17
|
+
// First check treasury balance
|
|
18
|
+
{
|
|
19
|
+
address: clankerToken,
|
|
20
|
+
abi: erc20Abi,
|
|
21
|
+
functionName: "balanceOf",
|
|
22
|
+
args: [treasury],
|
|
23
|
+
},
|
|
24
|
+
// Then check all airdrop amounts
|
|
25
|
+
...amounts.map((amount) => ({
|
|
26
|
+
address: airdropAddress,
|
|
27
|
+
abi: IClankerAirdrop,
|
|
28
|
+
functionName: "amountAvailableToClaim",
|
|
29
|
+
args: [clankerToken, treasury, amount],
|
|
30
|
+
})),
|
|
31
|
+
], // Mixed ABIs in multicall
|
|
32
|
+
allowFailure: true,
|
|
33
|
+
});
|
|
34
|
+
// Extract treasury balance from first result
|
|
35
|
+
const treasuryBalanceResult = results[0];
|
|
36
|
+
const treasuryBalance = treasuryBalanceResult && treasuryBalanceResult.status === "success"
|
|
37
|
+
? treasuryBalanceResult.result
|
|
38
|
+
: 0n;
|
|
39
|
+
// Extract airdrop check results (skip first result which is balance)
|
|
40
|
+
const airdropResults = results.slice(1);
|
|
41
|
+
// Collect all valid results
|
|
42
|
+
const allResults = [];
|
|
43
|
+
for (let i = 0; i < airdropResults.length; i++) {
|
|
44
|
+
const result = airdropResults[i];
|
|
45
|
+
const amount = amounts[i];
|
|
46
|
+
if (result.status === "success" && result.result !== undefined) {
|
|
47
|
+
const available = result.result;
|
|
48
|
+
if (available > 0n) {
|
|
49
|
+
// Available - highest priority (1)
|
|
50
|
+
allResults.push({ amount, available, status: "available", priority: 1 });
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// Available is 0 - check treasury balance to determine if claimed or locked
|
|
54
|
+
const isClaimed = treasuryBalance >= amount;
|
|
55
|
+
const priority = isClaimed ? 4 : 2;
|
|
56
|
+
const status = isClaimed ? "claimed" : "locked";
|
|
57
|
+
const error = isClaimed ? "Treasury airdrop already claimed" : "Airdrop is still locked";
|
|
58
|
+
allResults.push({ amount, available: 0n, status, priority, error });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (result.status === "failure") {
|
|
62
|
+
const errorMessage = result.error?.message || "";
|
|
63
|
+
// AirdropNotCreated means this amount wasn't configured - skip entirely
|
|
64
|
+
if (errorMessage.includes("AirdropNotCreated")) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// AirdropNotUnlocked means this amount exists but is locked (priority 2)
|
|
68
|
+
if (errorMessage.includes("AirdropNotUnlocked")) {
|
|
69
|
+
allResults.push({
|
|
70
|
+
amount,
|
|
71
|
+
available: 0n,
|
|
72
|
+
status: "locked",
|
|
73
|
+
error: "Airdrop is still locked",
|
|
74
|
+
priority: 2,
|
|
75
|
+
});
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
// Already claimed errors (priority 3)
|
|
79
|
+
if (errorMessage.includes("UserMaxClaimed") || errorMessage.includes("TotalMaxClaimed")) {
|
|
80
|
+
allResults.push({
|
|
81
|
+
amount,
|
|
82
|
+
available: 0n,
|
|
83
|
+
status: "claimed",
|
|
84
|
+
error: "Already claimed maximum amount",
|
|
85
|
+
priority: 3,
|
|
86
|
+
});
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
// Arithmetic underflow/overflow means a different amount was claimed - skip
|
|
90
|
+
if (errorMessage.includes("underflow") || errorMessage.includes("overflow")) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
// Other errors - treat as locked (priority 2)
|
|
94
|
+
allResults.push({
|
|
95
|
+
amount,
|
|
96
|
+
available: 0n,
|
|
97
|
+
status: "locked",
|
|
98
|
+
error: errorMessage,
|
|
99
|
+
priority: 2,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// If no results found, return null
|
|
104
|
+
if (allResults.length === 0) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
// Sort by priority (lower is better), then by amount (higher is better for same priority)
|
|
108
|
+
allResults.sort((a, b) => {
|
|
109
|
+
if (a.priority !== b.priority) {
|
|
110
|
+
return a.priority - b.priority;
|
|
111
|
+
}
|
|
112
|
+
// For same priority, prefer larger amounts
|
|
113
|
+
return a.amount > b.amount ? -1 : 1;
|
|
114
|
+
});
|
|
115
|
+
// Return the best result
|
|
116
|
+
const best = allResults[0];
|
|
117
|
+
return {
|
|
118
|
+
amount: best.amount,
|
|
119
|
+
available: best.available,
|
|
120
|
+
status: best.status,
|
|
121
|
+
error: best.error,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get treasury airdrop status
|
|
126
|
+
*/
|
|
127
|
+
export async function getTreasuryAirdropStatus(publicClient, clankerToken, treasury, tokenDecimals, tokenUsdPrice) {
|
|
128
|
+
const allocation = await findTreasuryAllocation(publicClient, clankerToken, treasury);
|
|
129
|
+
if (!allocation) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
// Generate appropriate error message based on status
|
|
133
|
+
let error;
|
|
134
|
+
switch (allocation.status) {
|
|
135
|
+
case "available":
|
|
136
|
+
error = undefined;
|
|
137
|
+
break;
|
|
138
|
+
case "locked":
|
|
139
|
+
error = allocation.error || "Airdrop is still locked (lockup period not passed)";
|
|
140
|
+
break;
|
|
141
|
+
case "claimed":
|
|
142
|
+
error = "Treasury airdrop already claimed";
|
|
143
|
+
break;
|
|
144
|
+
case "not_found":
|
|
145
|
+
error = "No treasury airdrop found";
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
availableAmount: formatBalanceWithUsd(allocation.available, tokenDecimals, tokenUsdPrice),
|
|
150
|
+
allocatedAmount: formatBalanceWithUsd(allocation.amount, tokenDecimals, tokenUsdPrice),
|
|
151
|
+
isAvailable: allocation.status === "available" && allocation.available > 0n,
|
|
152
|
+
error,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get available airdrop amount for treasury
|
|
157
|
+
*/
|
|
158
|
+
export async function getTreasuryAirdropAvailable(publicClient, clankerToken, treasury) {
|
|
159
|
+
const allocation = await findTreasuryAllocation(publicClient, clankerToken, treasury);
|
|
160
|
+
return allocation?.available || 0n;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=treasury.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"treasury.js","sourceRoot":"","sources":["../../src/treasury.ts"],"names":[],"mappings":"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"}
|