levr-sdk 0.0.2 → 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/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/balance.js +19 -1
- 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 -29
- package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
- package/dist/esm/client/hook/use-governance.js +19 -254
- 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 +24 -9
- 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 -195
- package/dist/esm/client/hook/use-stake.js.map +1 -1
- package/dist/esm/client/hook/use-swap.js +9 -13
- 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 +65 -107
- package/dist/esm/client/levr-provider.js.map +1 -1
- package/dist/esm/client/query-keys.js +9 -21
- package/dist/esm/client/query-keys.js.map +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/fee-receivers.js +25 -13
- package/dist/esm/fee-receivers.js.map +1 -1
- package/dist/esm/governance.js +35 -414
- package/dist/esm/governance.js.map +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pool.js +70 -0
- package/dist/esm/pool.js.map +1 -0
- package/dist/esm/project.js +389 -135
- 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 +2 -2
- package/dist/esm/quote/index.js.map +1 -1
- package/dist/esm/stake.js +34 -299
- 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/user.js +153 -0
- package/dist/esm/user.js.map +1 -0
- 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/balance.d.ts +15 -0
- package/dist/types/balance.d.ts.map +1 -1
- package/dist/types/client/hook/index.d.ts +11 -3
- 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 -98
- 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 +5 -0
- 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 -73
- package/dist/types/client/hook/use-stake.d.ts.map +1 -1
- package/dist/types/client/hook/use-swap.d.ts +3 -8
- 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 +30 -50
- package/dist/types/client/levr-provider.d.ts.map +1 -1
- package/dist/types/client/query-keys.d.ts +13 -25
- package/dist/types/client/query-keys.d.ts.map +1 -1
- package/dist/types/fee-receivers.d.ts +28 -0
- package/dist/types/fee-receivers.d.ts.map +1 -1
- package/dist/types/governance.d.ts +5 -92
- package/dist/types/governance.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/pool.d.ts +590 -0
- package/dist/types/pool.d.ts.map +1 -0
- package/dist/types/project.d.ts +56 -1
- 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 +2 -2
- package/dist/types/quote/index.d.ts.map +1 -1
- package/dist/types/stake.d.ts +16 -41
- 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/user.d.ts +188 -0
- package/dist/types/user.d.ts.map +1 -0
- package/package.json +5 -2
- package/dist/esm/client/hook/use-balance.js +0 -57
- 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 -29
- package/dist/esm/client/hook/use-proposals.js.map +0 -1
- package/dist/esm/projects.js +0 -184
- 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/types/client/hook/use-balance.d.ts +0 -20
- 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/esm/governance.js
CHANGED
|
@@ -1,34 +1,26 @@
|
|
|
1
|
-
import { decodeEventLog,
|
|
2
|
-
import { LevrGovernor_v1 } from "./abis/index.js";
|
|
3
|
-
import
|
|
4
|
-
import { GET_CLANKER_AIRDROP_ADDRESS, TREASURY_AIRDROP_AMOUNTS } from "./constants.js";
|
|
1
|
+
import { decodeEventLog, parseUnits } from "viem";
|
|
2
|
+
import { IClankerAirdrop, LevrGovernor_v1 } from "./abis/index.js";
|
|
3
|
+
import { GET_CLANKER_AIRDROP_ADDRESS } from "./constants.js";
|
|
5
4
|
export class Governance {
|
|
6
5
|
wallet;
|
|
7
6
|
publicClient;
|
|
8
|
-
|
|
9
|
-
tokenDecimals;
|
|
10
|
-
clankerToken;
|
|
11
|
-
userAddress;
|
|
12
|
-
pricing;
|
|
7
|
+
project;
|
|
13
8
|
constructor(config) {
|
|
14
9
|
if (Object.values(config).some((value) => !value))
|
|
15
10
|
throw new Error("Invalid config");
|
|
16
11
|
this.wallet = config.wallet;
|
|
17
12
|
this.publicClient = config.publicClient;
|
|
18
|
-
this.
|
|
19
|
-
this.tokenDecimals = config.tokenDecimals;
|
|
20
|
-
this.clankerToken = config.clankerToken;
|
|
21
|
-
this.userAddress = config.wallet.account.address;
|
|
22
|
-
this.pricing = config.pricing;
|
|
23
|
-
// trustedForwarder reserved for future meta-transaction support
|
|
13
|
+
this.project = config.project;
|
|
24
14
|
}
|
|
25
15
|
/**
|
|
26
16
|
* Propose a transfer from treasury to recipient
|
|
27
17
|
*/
|
|
28
18
|
async proposeTransfer(recipient, amount, description) {
|
|
29
|
-
const parsedAmount = typeof amount === "bigint"
|
|
19
|
+
const parsedAmount = typeof amount === "bigint"
|
|
20
|
+
? amount
|
|
21
|
+
: parseUnits(amount.toString(), this.project.token.decimals);
|
|
30
22
|
const hash = await this.wallet.writeContract({
|
|
31
|
-
address: this.
|
|
23
|
+
address: this.project.governor,
|
|
32
24
|
abi: LevrGovernor_v1,
|
|
33
25
|
functionName: "proposeTransfer",
|
|
34
26
|
args: [recipient, parsedAmount, description],
|
|
@@ -67,9 +59,11 @@ export class Governance {
|
|
|
67
59
|
* Propose a boost from treasury to staking rewards
|
|
68
60
|
*/
|
|
69
61
|
async proposeBoost(amount) {
|
|
70
|
-
const parsedAmount = typeof amount === "bigint"
|
|
62
|
+
const parsedAmount = typeof amount === "bigint"
|
|
63
|
+
? amount
|
|
64
|
+
: parseUnits(amount.toString(), this.project.token.decimals);
|
|
71
65
|
const hash = await this.wallet.writeContract({
|
|
72
|
-
address: this.
|
|
66
|
+
address: this.project.governor,
|
|
73
67
|
abi: LevrGovernor_v1,
|
|
74
68
|
functionName: "proposeBoost",
|
|
75
69
|
args: [parsedAmount],
|
|
@@ -110,7 +104,7 @@ export class Governance {
|
|
|
110
104
|
async vote(proposalId, support) {
|
|
111
105
|
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
112
106
|
const hash = await this.wallet.writeContract({
|
|
113
|
-
address: this.
|
|
107
|
+
address: this.project.governor,
|
|
114
108
|
abi: LevrGovernor_v1,
|
|
115
109
|
functionName: "vote",
|
|
116
110
|
args: [parsedProposalId, support],
|
|
@@ -129,7 +123,7 @@ export class Governance {
|
|
|
129
123
|
async executeProposal(proposalId) {
|
|
130
124
|
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
131
125
|
const hash = await this.wallet.writeContract({
|
|
132
|
-
address: this.
|
|
126
|
+
address: this.project.governor,
|
|
133
127
|
abi: LevrGovernor_v1,
|
|
134
128
|
functionName: "execute",
|
|
135
129
|
args: [parsedProposalId],
|
|
@@ -141,423 +135,50 @@ export class Governance {
|
|
|
141
135
|
}
|
|
142
136
|
return receipt;
|
|
143
137
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Get proposal details by ID
|
|
146
|
-
*/
|
|
147
|
-
async getProposal(proposalId) {
|
|
148
|
-
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
149
|
-
const result = (await this.publicClient.readContract({
|
|
150
|
-
address: this.governorAddress,
|
|
151
|
-
abi: LevrGovernor_v1,
|
|
152
|
-
functionName: "getProposal",
|
|
153
|
-
args: [parsedProposalId],
|
|
154
|
-
}));
|
|
155
|
-
const amountFormatted = formatUnits(result.amount, this.tokenDecimals);
|
|
156
|
-
const yesVotesFormatted = formatUnits(result.yesVotes, this.tokenDecimals);
|
|
157
|
-
const noVotesFormatted = formatUnits(result.noVotes, this.tokenDecimals);
|
|
158
|
-
// Calculate USD values if pricing is available
|
|
159
|
-
const tokenPrice = this.pricing ? parseFloat(this.pricing.tokenUsd) : null;
|
|
160
|
-
return {
|
|
161
|
-
id: result.id,
|
|
162
|
-
proposalType: result.proposalType,
|
|
163
|
-
proposer: result.proposer,
|
|
164
|
-
amount: {
|
|
165
|
-
raw: result.amount,
|
|
166
|
-
formatted: amountFormatted,
|
|
167
|
-
usd: tokenPrice ? (parseFloat(amountFormatted) * tokenPrice).toString() : undefined,
|
|
168
|
-
},
|
|
169
|
-
recipient: result.recipient,
|
|
170
|
-
description: result.description,
|
|
171
|
-
createdAt: {
|
|
172
|
-
timestamp: result.createdAt,
|
|
173
|
-
date: new Date(Number(result.createdAt) * 1000),
|
|
174
|
-
},
|
|
175
|
-
votingStartsAt: {
|
|
176
|
-
timestamp: result.votingStartsAt,
|
|
177
|
-
date: new Date(Number(result.votingStartsAt) * 1000),
|
|
178
|
-
},
|
|
179
|
-
votingEndsAt: {
|
|
180
|
-
timestamp: result.votingEndsAt,
|
|
181
|
-
date: new Date(Number(result.votingEndsAt) * 1000),
|
|
182
|
-
},
|
|
183
|
-
yesVotes: {
|
|
184
|
-
raw: result.yesVotes,
|
|
185
|
-
formatted: yesVotesFormatted,
|
|
186
|
-
usd: tokenPrice ? (parseFloat(yesVotesFormatted) * tokenPrice).toString() : undefined,
|
|
187
|
-
},
|
|
188
|
-
noVotes: {
|
|
189
|
-
raw: result.noVotes,
|
|
190
|
-
formatted: noVotesFormatted,
|
|
191
|
-
usd: tokenPrice ? (parseFloat(noVotesFormatted) * tokenPrice).toString() : undefined,
|
|
192
|
-
},
|
|
193
|
-
totalBalanceVoted: result.totalBalanceVoted,
|
|
194
|
-
executed: result.executed,
|
|
195
|
-
cycleId: result.cycleId,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Get current cycle ID
|
|
200
|
-
*/
|
|
201
|
-
async getCurrentCycleId() {
|
|
202
|
-
return await this.publicClient.readContract({
|
|
203
|
-
address: this.governorAddress,
|
|
204
|
-
abi: LevrGovernor_v1,
|
|
205
|
-
functionName: "currentCycleId",
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Get all proposal IDs for a specific cycle
|
|
210
|
-
*/
|
|
211
|
-
async getProposalsForCycle(cycleId) {
|
|
212
|
-
const parsedCycleId = typeof cycleId === "bigint" ? cycleId : BigInt(cycleId);
|
|
213
|
-
return await this.publicClient.readContract({
|
|
214
|
-
address: this.governorAddress,
|
|
215
|
-
abi: LevrGovernor_v1,
|
|
216
|
-
functionName: "getProposalsForCycle",
|
|
217
|
-
args: [parsedCycleId],
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Get the winner proposal ID for a cycle
|
|
222
|
-
*/
|
|
223
|
-
async getWinner(cycleId) {
|
|
224
|
-
const parsedCycleId = typeof cycleId === "bigint" ? cycleId : BigInt(cycleId);
|
|
225
|
-
return await this.publicClient.readContract({
|
|
226
|
-
address: this.governorAddress,
|
|
227
|
-
abi: LevrGovernor_v1,
|
|
228
|
-
functionName: "getWinner",
|
|
229
|
-
args: [parsedCycleId],
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
138
|
/**
|
|
233
139
|
* Get vote receipt for a user on a proposal
|
|
234
140
|
*/
|
|
235
141
|
async getVoteReceipt(proposalId, voter) {
|
|
236
142
|
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
237
|
-
const voterAddress = voter ?? this.
|
|
143
|
+
const voterAddress = voter ?? this.wallet.account.address;
|
|
238
144
|
return await this.publicClient.readContract({
|
|
239
|
-
address: this.
|
|
145
|
+
address: this.project.governor,
|
|
240
146
|
abi: LevrGovernor_v1,
|
|
241
147
|
functionName: "getVoteReceipt",
|
|
242
148
|
args: [parsedProposalId, voterAddress],
|
|
243
149
|
});
|
|
244
150
|
}
|
|
245
|
-
/**
|
|
246
|
-
* Get voting power snapshot for a user at proposal creation
|
|
247
|
-
*/
|
|
248
|
-
async getVotingPowerSnapshot(proposalId, user) {
|
|
249
|
-
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
250
|
-
const userAddress = user ?? this.userAddress;
|
|
251
|
-
return await this.publicClient.readContract({
|
|
252
|
-
address: this.governorAddress,
|
|
253
|
-
abi: LevrGovernor_v1,
|
|
254
|
-
functionName: "getVotingPowerSnapshot",
|
|
255
|
-
args: [parsedProposalId, userAddress],
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Check if proposal meets quorum
|
|
260
|
-
*/
|
|
261
|
-
async meetsQuorum(proposalId) {
|
|
262
|
-
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
263
|
-
return await this.publicClient.readContract({
|
|
264
|
-
address: this.governorAddress,
|
|
265
|
-
abi: LevrGovernor_v1,
|
|
266
|
-
functionName: "meetsQuorum",
|
|
267
|
-
args: [parsedProposalId],
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Check if proposal meets approval threshold
|
|
272
|
-
*/
|
|
273
|
-
async meetsApproval(proposalId) {
|
|
274
|
-
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
275
|
-
return await this.publicClient.readContract({
|
|
276
|
-
address: this.governorAddress,
|
|
277
|
-
abi: LevrGovernor_v1,
|
|
278
|
-
functionName: "meetsApproval",
|
|
279
|
-
args: [parsedProposalId],
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Get proposal state (Pending, Active, Defeated, Succeeded, Executed)
|
|
284
|
-
*/
|
|
285
|
-
async getProposalState(proposalId) {
|
|
286
|
-
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
287
|
-
return await this.publicClient.readContract({
|
|
288
|
-
address: this.governorAddress,
|
|
289
|
-
abi: LevrGovernor_v1,
|
|
290
|
-
functionName: "state",
|
|
291
|
-
args: [parsedProposalId],
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Get active proposal count for a specific proposal type
|
|
296
|
-
*/
|
|
297
|
-
async getActiveProposalCount(proposalType) {
|
|
298
|
-
return await this.publicClient.readContract({
|
|
299
|
-
address: this.governorAddress,
|
|
300
|
-
abi: LevrGovernor_v1,
|
|
301
|
-
functionName: "activeProposalCount",
|
|
302
|
-
args: [proposalType],
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
* Get factory address
|
|
307
|
-
*/
|
|
308
|
-
async getFactory() {
|
|
309
|
-
return await this.publicClient.readContract({
|
|
310
|
-
address: this.governorAddress,
|
|
311
|
-
abi: LevrGovernor_v1,
|
|
312
|
-
functionName: "factory",
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Get treasury address
|
|
317
|
-
*/
|
|
318
|
-
async getTreasury() {
|
|
319
|
-
return await this.publicClient.readContract({
|
|
320
|
-
address: this.governorAddress,
|
|
321
|
-
abi: LevrGovernor_v1,
|
|
322
|
-
functionName: "treasury",
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
/**
|
|
326
|
-
* Get staked token address
|
|
327
|
-
*/
|
|
328
|
-
async getStakedToken() {
|
|
329
|
-
return await this.publicClient.readContract({
|
|
330
|
-
address: this.governorAddress,
|
|
331
|
-
abi: LevrGovernor_v1,
|
|
332
|
-
functionName: "stakedToken",
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Propose transfer and execute in sequence (for testing convenience)
|
|
337
|
-
*/
|
|
338
|
-
async proposeAndExecuteTransfer(recipient, amount, description) {
|
|
339
|
-
const { receipt: proposeReceipt, proposalId } = await this.proposeTransfer(recipient, amount, description);
|
|
340
|
-
const executeReceipt = await this.executeProposal(proposalId);
|
|
341
|
-
return {
|
|
342
|
-
proposeReceipt,
|
|
343
|
-
executeReceipt,
|
|
344
|
-
proposalId,
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Propose boost and execute in sequence (for testing convenience)
|
|
349
|
-
*/
|
|
350
|
-
async proposeAndExecuteBoost(amount) {
|
|
351
|
-
const { receipt: proposeReceipt, proposalId } = await this.proposeBoost(amount);
|
|
352
|
-
const executeReceipt = await this.executeProposal(proposalId);
|
|
353
|
-
return {
|
|
354
|
-
proposeReceipt,
|
|
355
|
-
executeReceipt,
|
|
356
|
-
proposalId,
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Find treasury airdrop allocation by checking all known amounts using multicall
|
|
361
|
-
*/
|
|
362
|
-
async findTreasuryAllocation() {
|
|
363
|
-
const chainId = this.publicClient.chain?.id;
|
|
364
|
-
const airdropAddress = GET_CLANKER_AIRDROP_ADDRESS(chainId);
|
|
365
|
-
const treasury = await this.getTreasury();
|
|
366
|
-
if (!airdropAddress)
|
|
367
|
-
return null;
|
|
368
|
-
// Prepare multicall for all possible treasury airdrop amounts + treasury balance check
|
|
369
|
-
const amounts = Object.values(TREASURY_AIRDROP_AMOUNTS).map((amountInTokens) => BigInt(amountInTokens) * 10n ** 18n);
|
|
370
|
-
const results = await this.publicClient.multicall({
|
|
371
|
-
contracts: [
|
|
372
|
-
// First check treasury balance
|
|
373
|
-
{
|
|
374
|
-
address: this.clankerToken,
|
|
375
|
-
abi: erc20Abi,
|
|
376
|
-
functionName: "balanceOf",
|
|
377
|
-
args: [treasury],
|
|
378
|
-
},
|
|
379
|
-
// Then check all airdrop amounts
|
|
380
|
-
...amounts.map((amount) => ({
|
|
381
|
-
address: airdropAddress,
|
|
382
|
-
abi: IClankerAirdrop,
|
|
383
|
-
functionName: "amountAvailableToClaim",
|
|
384
|
-
args: [this.clankerToken, treasury, amount],
|
|
385
|
-
})),
|
|
386
|
-
], // Mixed ABIs in multicall
|
|
387
|
-
allowFailure: true,
|
|
388
|
-
});
|
|
389
|
-
// Extract treasury balance from first result
|
|
390
|
-
const treasuryBalanceResult = results[0];
|
|
391
|
-
const treasuryBalance = treasuryBalanceResult && treasuryBalanceResult.status === "success"
|
|
392
|
-
? treasuryBalanceResult.result
|
|
393
|
-
: 0n;
|
|
394
|
-
// Extract airdrop check results (skip first result which is balance)
|
|
395
|
-
const airdropResults = results.slice(1);
|
|
396
|
-
// Collect all valid results first
|
|
397
|
-
const allResults = [];
|
|
398
|
-
for (let i = 0; i < airdropResults.length; i++) {
|
|
399
|
-
const result = airdropResults[i];
|
|
400
|
-
const amount = amounts[i];
|
|
401
|
-
if (result.status === "success" && result.result !== undefined) {
|
|
402
|
-
const available = result.result;
|
|
403
|
-
if (available > 0n) {
|
|
404
|
-
// Available - highest priority (1)
|
|
405
|
-
allResults.push({ amount, available, status: "available", priority: 1 });
|
|
406
|
-
}
|
|
407
|
-
else {
|
|
408
|
-
// Available is 0 - check treasury balance to determine if claimed or locked
|
|
409
|
-
// If treasury has >= this amount, it's likely already claimed
|
|
410
|
-
// Otherwise it's still locked
|
|
411
|
-
const isClaimed = treasuryBalance >= amount;
|
|
412
|
-
const priority = isClaimed ? 4 : 2;
|
|
413
|
-
const status = isClaimed ? "claimed" : "locked";
|
|
414
|
-
const error = isClaimed ? "Treasury airdrop already claimed" : "Airdrop is still locked";
|
|
415
|
-
allResults.push({ amount, available: 0n, status, priority, error });
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
else if (result.status === "failure") {
|
|
419
|
-
const errorMessage = result.error?.message || "";
|
|
420
|
-
// AirdropNotCreated means this amount wasn't configured - skip entirely
|
|
421
|
-
if (errorMessage.includes("AirdropNotCreated")) {
|
|
422
|
-
continue;
|
|
423
|
-
}
|
|
424
|
-
// AirdropNotUnlocked means this amount exists but is locked (priority 2)
|
|
425
|
-
if (errorMessage.includes("AirdropNotUnlocked")) {
|
|
426
|
-
allResults.push({
|
|
427
|
-
amount,
|
|
428
|
-
available: 0n,
|
|
429
|
-
status: "locked",
|
|
430
|
-
error: "Airdrop is still locked",
|
|
431
|
-
priority: 2,
|
|
432
|
-
});
|
|
433
|
-
continue;
|
|
434
|
-
}
|
|
435
|
-
// Already claimed errors (priority 3)
|
|
436
|
-
if (errorMessage.includes("UserMaxClaimed") || errorMessage.includes("TotalMaxClaimed")) {
|
|
437
|
-
allResults.push({
|
|
438
|
-
amount,
|
|
439
|
-
available: 0n,
|
|
440
|
-
status: "claimed",
|
|
441
|
-
error: "Already claimed maximum amount",
|
|
442
|
-
priority: 3,
|
|
443
|
-
});
|
|
444
|
-
continue;
|
|
445
|
-
}
|
|
446
|
-
// Arithmetic underflow/overflow means a different (larger) amount was claimed
|
|
447
|
-
// Skip this result entirely - the correct amount will be detected separately
|
|
448
|
-
if (errorMessage.includes("underflow") || errorMessage.includes("overflow")) {
|
|
449
|
-
continue;
|
|
450
|
-
}
|
|
451
|
-
// Other errors - treat as locked (priority 2)
|
|
452
|
-
allResults.push({
|
|
453
|
-
amount,
|
|
454
|
-
available: 0n,
|
|
455
|
-
status: "locked",
|
|
456
|
-
error: errorMessage,
|
|
457
|
-
priority: 2,
|
|
458
|
-
});
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
// If no results found, return null
|
|
462
|
-
if (allResults.length === 0) {
|
|
463
|
-
return null;
|
|
464
|
-
}
|
|
465
|
-
// Sort by priority (lower is better), then by amount (higher is better for same priority)
|
|
466
|
-
allResults.sort((a, b) => {
|
|
467
|
-
if (a.priority !== b.priority) {
|
|
468
|
-
return a.priority - b.priority;
|
|
469
|
-
}
|
|
470
|
-
// For same priority, prefer larger amounts
|
|
471
|
-
return a.amount > b.amount ? -1 : 1;
|
|
472
|
-
});
|
|
473
|
-
// Return the best result
|
|
474
|
-
const best = allResults[0];
|
|
475
|
-
return {
|
|
476
|
-
amount: best.amount,
|
|
477
|
-
available: best.available,
|
|
478
|
-
status: best.status,
|
|
479
|
-
error: best.error,
|
|
480
|
-
};
|
|
481
|
-
}
|
|
482
|
-
/**
|
|
483
|
-
* Get available airdrop amount for treasury using known amounts
|
|
484
|
-
*/
|
|
485
|
-
async getAvailableAirdropAmount() {
|
|
486
|
-
const allocation = await this.findTreasuryAllocation();
|
|
487
|
-
return allocation?.available || 0n;
|
|
488
|
-
}
|
|
489
|
-
/**
|
|
490
|
-
* Get airdrop status for treasury with detailed status information
|
|
491
|
-
*/
|
|
492
|
-
async getAirdropStatus() {
|
|
493
|
-
const allocation = await this.findTreasuryAllocation();
|
|
494
|
-
if (!allocation) {
|
|
495
|
-
return {
|
|
496
|
-
availableAmount: { raw: 0n, formatted: formatUnits(0n, this.tokenDecimals) },
|
|
497
|
-
allocatedAmount: { raw: 0n, formatted: formatUnits(0n, this.tokenDecimals) },
|
|
498
|
-
isAvailable: false,
|
|
499
|
-
error: "No treasury airdrop found",
|
|
500
|
-
};
|
|
501
|
-
}
|
|
502
|
-
// Generate appropriate error message based on status
|
|
503
|
-
let error;
|
|
504
|
-
switch (allocation.status) {
|
|
505
|
-
case "available":
|
|
506
|
-
error = undefined;
|
|
507
|
-
break;
|
|
508
|
-
case "locked":
|
|
509
|
-
error = allocation.error || "Airdrop is still locked (lockup period not passed)";
|
|
510
|
-
break;
|
|
511
|
-
case "claimed":
|
|
512
|
-
error = "Treasury airdrop already claimed";
|
|
513
|
-
break;
|
|
514
|
-
case "not_found":
|
|
515
|
-
error = "No treasury airdrop found";
|
|
516
|
-
break;
|
|
517
|
-
}
|
|
518
|
-
const availableFormatted = formatUnits(allocation.available, this.tokenDecimals);
|
|
519
|
-
const allocatedFormatted = formatUnits(allocation.amount, this.tokenDecimals);
|
|
520
|
-
const tokenPrice = this.pricing ? parseFloat(this.pricing.tokenUsd) : null;
|
|
521
|
-
return {
|
|
522
|
-
availableAmount: {
|
|
523
|
-
raw: allocation.available,
|
|
524
|
-
formatted: availableFormatted,
|
|
525
|
-
usd: tokenPrice ? (parseFloat(availableFormatted) * tokenPrice).toString() : undefined,
|
|
526
|
-
},
|
|
527
|
-
allocatedAmount: {
|
|
528
|
-
raw: allocation.amount,
|
|
529
|
-
formatted: allocatedFormatted,
|
|
530
|
-
usd: tokenPrice ? (parseFloat(allocatedFormatted) * tokenPrice).toString() : undefined,
|
|
531
|
-
},
|
|
532
|
-
isAvailable: allocation.status === "available" && allocation.available > 0n,
|
|
533
|
-
error,
|
|
534
|
-
};
|
|
535
|
-
}
|
|
536
151
|
/**
|
|
537
152
|
* Claim airdrop for treasury
|
|
153
|
+
* Uses airdrop data from project that was already fetched
|
|
538
154
|
*/
|
|
539
155
|
async claimAirdrop() {
|
|
540
|
-
const allocation = await this.findTreasuryAllocation();
|
|
541
|
-
if (!allocation) {
|
|
542
|
-
throw new Error("No treasury airdrop found to claim");
|
|
543
|
-
}
|
|
544
|
-
if (allocation.status === "claimed") {
|
|
545
|
-
throw new Error("Treasury airdrop already claimed");
|
|
546
|
-
}
|
|
547
|
-
if (allocation.status === "not_found") {
|
|
548
|
-
throw new Error("No treasury airdrop configured for this token");
|
|
549
|
-
}
|
|
550
156
|
const chainId = this.publicClient.chain?.id;
|
|
551
157
|
const airdropAddress = GET_CLANKER_AIRDROP_ADDRESS(chainId);
|
|
552
|
-
const treasury = await this.getTreasury();
|
|
553
158
|
if (!airdropAddress) {
|
|
554
159
|
throw new Error(`No airdrop address found for chain ID ${chainId}`);
|
|
555
160
|
}
|
|
161
|
+
// Use airdrop status from project data
|
|
162
|
+
const airdropStatus = this.project.airdrop;
|
|
163
|
+
if (!airdropStatus) {
|
|
164
|
+
throw new Error("No treasury airdrop found");
|
|
165
|
+
}
|
|
166
|
+
if (airdropStatus.error) {
|
|
167
|
+
throw new Error(airdropStatus.error);
|
|
168
|
+
}
|
|
169
|
+
if (!airdropStatus.isAvailable) {
|
|
170
|
+
throw new Error("No airdrop available to claim");
|
|
171
|
+
}
|
|
556
172
|
const hash = await this.wallet.writeContract({
|
|
557
173
|
address: airdropAddress,
|
|
558
174
|
abi: IClankerAirdrop,
|
|
559
175
|
functionName: "claim",
|
|
560
|
-
args: [
|
|
176
|
+
args: [
|
|
177
|
+
this.project.token.address,
|
|
178
|
+
this.project.treasury,
|
|
179
|
+
airdropStatus.allocatedAmount.raw,
|
|
180
|
+
[],
|
|
181
|
+
],
|
|
561
182
|
chain: this.wallet.chain,
|
|
562
183
|
});
|
|
563
184
|
const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/governance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/governance.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -6,15 +6,17 @@ export * from "./constants.js";
|
|
|
6
6
|
export * from "./deploy-v4.js";
|
|
7
7
|
export * from "./fee-receivers.js";
|
|
8
8
|
export * from "./governance.js";
|
|
9
|
+
export * from "./pool.js";
|
|
9
10
|
export * from "./pool-key.js";
|
|
10
11
|
export * from "./project.js";
|
|
11
|
-
export * from "./
|
|
12
|
-
export * from "./proposals.js";
|
|
12
|
+
export * from "./proposal.js";
|
|
13
13
|
export * from "./quote/index.js";
|
|
14
14
|
export * from "./schema/index.js";
|
|
15
15
|
export * from "./stake.js";
|
|
16
16
|
export * from "./swap-v4.js";
|
|
17
|
+
export * from "./treasury.js";
|
|
17
18
|
export * from "./types.js";
|
|
18
19
|
export * from "./usd-price.js";
|
|
20
|
+
export * from "./user.js";
|
|
19
21
|
export * from "./util.js";
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA"}
|
package/dist/esm/pool.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { StateView } from "./abis/index.js";
|
|
2
|
+
import { UNISWAP_V4_STATE_VIEW } from "./constants.js";
|
|
3
|
+
import { getPoolId } from "./pool-key.js";
|
|
4
|
+
// ========================================
|
|
5
|
+
// HELPER UTILS (for composition in larger multicalls)
|
|
6
|
+
// ========================================
|
|
7
|
+
/**
|
|
8
|
+
* Helper: Get pool state contracts for multicall composition
|
|
9
|
+
*/
|
|
10
|
+
export function poolStateContracts(params) {
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
address: params.stateViewAddress,
|
|
14
|
+
abi: StateView,
|
|
15
|
+
functionName: "getSlot0",
|
|
16
|
+
args: [params.poolId],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
address: params.stateViewAddress,
|
|
20
|
+
abi: StateView,
|
|
21
|
+
functionName: "getLiquidity",
|
|
22
|
+
args: [params.poolId],
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
// ========================================
|
|
27
|
+
// MAIN POOL DATA FUNCTION
|
|
28
|
+
// ========================================
|
|
29
|
+
/**
|
|
30
|
+
* Get pool-specific data including liquidity, price, and fees
|
|
31
|
+
* Uses StateView contract for efficient state queries
|
|
32
|
+
*/
|
|
33
|
+
export async function pool({ publicClient, project }) {
|
|
34
|
+
if (Object.values({ publicClient, project }).some((value) => !value)) {
|
|
35
|
+
throw new Error("Invalid pool params");
|
|
36
|
+
}
|
|
37
|
+
if (!project.pool?.poolKey)
|
|
38
|
+
return null;
|
|
39
|
+
const chainId = publicClient.chain?.id;
|
|
40
|
+
if (!chainId)
|
|
41
|
+
throw new Error("Chain ID not found on public client");
|
|
42
|
+
const stateViewAddress = UNISWAP_V4_STATE_VIEW(chainId);
|
|
43
|
+
if (!stateViewAddress) {
|
|
44
|
+
throw new Error(`StateView address not found for chain ID ${chainId}`);
|
|
45
|
+
}
|
|
46
|
+
const poolKey = project.pool.poolKey;
|
|
47
|
+
const poolId = getPoolId(poolKey);
|
|
48
|
+
// Use helper to get contracts and execute multicall
|
|
49
|
+
const contracts = poolStateContracts({ stateViewAddress, poolId });
|
|
50
|
+
const results = await publicClient.multicall({ contracts });
|
|
51
|
+
const slot0Result = results[0].result;
|
|
52
|
+
const liquidityResult = results[1].result;
|
|
53
|
+
const [sqrtPriceX96, tick, protocolFee, lpFee] = slot0Result;
|
|
54
|
+
const liquidity = liquidityResult;
|
|
55
|
+
// Determine fee display from project
|
|
56
|
+
const feeDisplay = project.pool.feeDisplay;
|
|
57
|
+
return {
|
|
58
|
+
poolKey,
|
|
59
|
+
sqrtPriceX96,
|
|
60
|
+
tick: Number(tick),
|
|
61
|
+
liquidity: {
|
|
62
|
+
raw: liquidity,
|
|
63
|
+
formatted: liquidity.toString(),
|
|
64
|
+
},
|
|
65
|
+
protocolFee: Number(protocolFee),
|
|
66
|
+
lpFee: Number(lpFee),
|
|
67
|
+
feeDisplay,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAmBtC,2CAA2C;AAC3C,sDAAsD;AACtD,2CAA2C;AAE3C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAGlC;IACC,OAAO;QACL;YACE,OAAO,EAAE,MAAM,CAAC,gBAAgB;YAChC,GAAG,EAAE,SAAS;YACd,YAAY,EAAE,UAAmB;YACjC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;SACtB;QACD;YACE,OAAO,EAAE,MAAM,CAAC,gBAAgB;YAChC,GAAG,EAAE,SAAS;YACd,YAAY,EAAE,cAAuB;YACrC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;SACtB;KACF,CAAA;AACH,CAAC;AAED,2CAA2C;AAC3C,0BAA0B;AAC1B,2CAA2C;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,EAAc;IAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,IAAI,CAAA;IAEvC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAA;IACtC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAEpE,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAEjC,oDAAoD;IACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAA;IAClE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAE3D,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAA0C,CAAA;IACzE,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAgB,CAAA;IAEnD,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,WAAW,CAAA;IAC5D,MAAM,SAAS,GAAG,eAAe,CAAA;IAEjC,qCAAqC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAA;IAE1C,OAAO;QACL,OAAO;QACP,YAAY;QACZ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,SAAS,EAAE;YACT,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;SAChC;QACD,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QACpB,UAAU;KACX,CAAA;AACH,CAAC"}
|