levr-sdk 0.0.1
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/LICENSE.md +201 -0
- package/README.md +711 -0
- package/dist/esm/abis/IClankerAirdrop.js +443 -0
- package/dist/esm/abis/IClankerHookDynamicFee.js +198 -0
- package/dist/esm/abis/IClankerHookStaticFee.js +75 -0
- package/dist/esm/abis/IClankerLPLocker.js +402 -0
- package/dist/esm/abis/IClankerLpLockerMultiple.js +609 -0
- package/dist/esm/abis/IClankerToken.js +421 -0
- package/dist/esm/abis/LevrFactory_v1.js +608 -0
- package/dist/esm/abis/LevrForwarder_v1.js +622 -0
- package/dist/esm/abis/LevrGovernor_v1.js +726 -0
- package/dist/esm/abis/LevrStakedToken_v1.js +441 -0
- package/dist/esm/abis/LevrStaking_v1.js +607 -0
- package/dist/esm/abis/LevrTreasury_v1.js +219 -0
- package/dist/esm/abis/Permit2.js +29 -0
- package/dist/esm/abis/V4Quoter.js +466 -0
- package/dist/esm/abis/WETH9.js +153 -0
- package/dist/esm/abis/index.js +23 -0
- package/dist/esm/balance.js +72 -0
- package/dist/esm/balance.js.map +1 -0
- package/dist/esm/build-calldatas-v4.js +98 -0
- package/dist/esm/build-calldatas-v4.js.map +1 -0
- package/dist/esm/build-clanker-v4.js +128 -0
- package/dist/esm/build-clanker-v4.js.map +1 -0
- package/dist/esm/client/hook/index.js +36 -0
- package/dist/esm/client/hook/index.js.map +1 -0
- package/dist/esm/client/hook/use-balance.js +56 -0
- package/dist/esm/client/hook/use-balance.js.map +1 -0
- package/dist/esm/client/hook/use-clanker.js +57 -0
- package/dist/esm/client/hook/use-clanker.js.map +1 -0
- package/dist/esm/client/hook/use-deploy.js +16 -0
- package/dist/esm/client/hook/use-deploy.js.map +1 -0
- package/dist/esm/client/hook/use-fee-receivers.js +54 -0
- package/dist/esm/client/hook/use-fee-receivers.js.map +1 -0
- package/dist/esm/client/hook/use-governance.js +389 -0
- package/dist/esm/client/hook/use-governance.js.map +1 -0
- package/dist/esm/client/hook/use-prepare.js +47 -0
- package/dist/esm/client/hook/use-prepare.js.map +1 -0
- package/dist/esm/client/hook/use-project.js +29 -0
- package/dist/esm/client/hook/use-project.js.map +1 -0
- package/dist/esm/client/hook/use-projects.js +22 -0
- package/dist/esm/client/hook/use-projects.js.map +1 -0
- package/dist/esm/client/hook/use-proposals.js +31 -0
- package/dist/esm/client/hook/use-proposals.js.map +1 -0
- package/dist/esm/client/hook/use-register.js +101 -0
- package/dist/esm/client/hook/use-register.js.map +1 -0
- package/dist/esm/client/hook/use-stake.js +327 -0
- package/dist/esm/client/hook/use-stake.js.map +1 -0
- package/dist/esm/client/hook/use-swap.js +110 -0
- package/dist/esm/client/hook/use-swap.js.map +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/client/levr-provider.js +201 -0
- package/dist/esm/client/levr-provider.js.map +1 -0
- package/dist/esm/client/query-keys.js +61 -0
- package/dist/esm/client/query-keys.js.map +1 -0
- package/dist/esm/constants.js +182 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/deploy-v4.js +46 -0
- package/dist/esm/deploy-v4.js.map +1 -0
- package/dist/esm/fee-receivers.js +52 -0
- package/dist/esm/fee-receivers.js.map +1 -0
- package/dist/esm/governance.js +555 -0
- package/dist/esm/governance.js.map +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/project.js +146 -0
- package/dist/esm/project.js.map +1 -0
- package/dist/esm/projects.js +212 -0
- package/dist/esm/projects.js.map +1 -0
- package/dist/esm/proposals.js +98 -0
- package/dist/esm/proposals.js.map +1 -0
- package/dist/esm/quote-v4.js +169 -0
- package/dist/esm/quote-v4.js.map +1 -0
- package/dist/esm/schema/base.schema.js +11 -0
- package/dist/esm/schema/base.schema.js.map +1 -0
- package/dist/esm/schema/clanker.schema.js +191 -0
- package/dist/esm/schema/clanker.schema.js.map +1 -0
- package/dist/esm/schema/index.js +4 -0
- package/dist/esm/schema/index.js.map +1 -0
- package/dist/esm/schema/levr.schema.js +114 -0
- package/dist/esm/schema/levr.schema.js.map +1 -0
- package/dist/esm/stake.js +384 -0
- package/dist/esm/stake.js.map +1 -0
- package/dist/esm/swap-v4.js +281 -0
- package/dist/esm/swap-v4.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/util.js +19 -0
- package/dist/esm/util.js.map +1 -0
- package/dist/types/abis/IClankerAirdrop.d.ts +348 -0
- package/dist/types/abis/IClankerHookDynamicFee.d.ts +156 -0
- package/dist/types/abis/IClankerHookStaticFee.d.ts +58 -0
- package/dist/types/abis/IClankerLPLocker.d.ts +316 -0
- package/dist/types/abis/IClankerLpLockerMultiple.d.ts +481 -0
- package/dist/types/abis/IClankerToken.d.ts +326 -0
- package/dist/types/abis/LevrFactory_v1.d.ts +471 -0
- package/dist/types/abis/LevrForwarder_v1.d.ts +478 -0
- package/dist/types/abis/LevrGovernor_v1.d.ts +562 -0
- package/dist/types/abis/LevrStakedToken_v1.d.ts +338 -0
- package/dist/types/abis/LevrStaking_v1.d.ts +468 -0
- package/dist/types/abis/LevrTreasury_v1.d.ts +169 -0
- package/dist/types/abis/Permit2.d.ts +54 -0
- package/dist/types/abis/V4Quoter.d.ts +496 -0
- package/dist/types/abis/WETH9.d.ts +244 -0
- package/dist/types/abis/index.d.ts +15 -0
- package/dist/types/balance.d.ts +24 -0
- package/dist/types/balance.d.ts.map +1 -0
- package/dist/types/build-calldatas-v4.d.ts +20 -0
- package/dist/types/build-calldatas-v4.d.ts.map +1 -0
- package/dist/types/build-clanker-v4.d.ts +12 -0
- package/dist/types/build-clanker-v4.d.ts.map +1 -0
- package/dist/types/client/hook/index.d.ts +32 -0
- package/dist/types/client/hook/index.d.ts.map +1 -0
- package/dist/types/client/hook/use-balance.d.ts +18 -0
- package/dist/types/client/hook/use-balance.d.ts.map +1 -0
- package/dist/types/client/hook/use-clanker.d.ts +23 -0
- package/dist/types/client/hook/use-clanker.d.ts.map +1 -0
- package/dist/types/client/hook/use-deploy.d.ts +45 -0
- package/dist/types/client/hook/use-deploy.d.ts.map +1 -0
- package/dist/types/client/hook/use-fee-receivers.d.ts +26 -0
- package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -0
- package/dist/types/client/hook/use-governance.d.ts +145 -0
- package/dist/types/client/hook/use-governance.d.ts.map +1 -0
- package/dist/types/client/hook/use-prepare.d.ts +21 -0
- package/dist/types/client/hook/use-prepare.d.ts.map +1 -0
- package/dist/types/client/hook/use-project.d.ts +11 -0
- package/dist/types/client/hook/use-project.d.ts.map +1 -0
- package/dist/types/client/hook/use-projects.d.ts +6 -0
- package/dist/types/client/hook/use-projects.d.ts.map +1 -0
- package/dist/types/client/hook/use-proposals.d.ts +16 -0
- package/dist/types/client/hook/use-proposals.d.ts.map +1 -0
- package/dist/types/client/hook/use-register.d.ts +31 -0
- package/dist/types/client/hook/use-register.d.ts.map +1 -0
- package/dist/types/client/hook/use-stake.d.ts +195 -0
- package/dist/types/client/hook/use-stake.d.ts.map +1 -0
- package/dist/types/client/hook/use-swap.d.ts +59 -0
- package/dist/types/client/hook/use-swap.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +4 -0
- package/dist/types/client/index.d.ts.map +1 -0
- package/dist/types/client/levr-provider.d.ts +127 -0
- package/dist/types/client/levr-provider.d.ts.map +1 -0
- package/dist/types/client/query-keys.d.ts +61 -0
- package/dist/types/client/query-keys.d.ts.map +1 -0
- package/dist/types/constants.d.ts +101 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/deploy-v4.d.ts +13 -0
- package/dist/types/deploy-v4.d.ts.map +1 -0
- package/dist/types/fee-receivers.d.ts +29 -0
- package/dist/types/fee-receivers.d.ts.map +1 -0
- package/dist/types/governance.d.ts +205 -0
- package/dist/types/governance.d.ts.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/project.d.ts +51 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/projects.d.ts +20 -0
- package/dist/types/projects.d.ts.map +1 -0
- package/dist/types/proposals.d.ts +20 -0
- package/dist/types/proposals.d.ts.map +1 -0
- package/dist/types/quote-v4.d.ts +54 -0
- package/dist/types/quote-v4.d.ts.map +1 -0
- package/dist/types/schema/base.schema.d.ts +5 -0
- package/dist/types/schema/base.schema.d.ts.map +1 -0
- package/dist/types/schema/clanker.schema.d.ts +104 -0
- package/dist/types/schema/clanker.schema.d.ts.map +1 -0
- package/dist/types/schema/index.d.ts +4 -0
- package/dist/types/schema/index.d.ts.map +1 -0
- package/dist/types/schema/levr.schema.d.ts +34 -0
- package/dist/types/schema/levr.schema.d.ts.map +1 -0
- package/dist/types/stake.d.ts +137 -0
- package/dist/types/stake.d.ts.map +1 -0
- package/dist/types/swap-v4.d.ts +97 -0
- package/dist/types/swap-v4.d.ts.map +1 -0
- package/dist/types/types.d.ts +20 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/util.d.ts +5 -0
- package/dist/types/util.d.ts.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,555 @@
|
|
|
1
|
+
import { decodeEventLog, erc20Abi, formatUnits, parseUnits } from "viem";
|
|
2
|
+
import { LevrGovernor_v1 } from "./abis/index.js";
|
|
3
|
+
import IClankerAirdrop from "./abis/IClankerAirdrop.js";
|
|
4
|
+
import { GET_CLANKER_AIRDROP_ADDRESS, TREASURY_AIRDROP_AMOUNTS } from "./constants.js";
|
|
5
|
+
export class Governance {
|
|
6
|
+
wallet;
|
|
7
|
+
publicClient;
|
|
8
|
+
governorAddress;
|
|
9
|
+
tokenDecimals;
|
|
10
|
+
clankerToken;
|
|
11
|
+
userAddress;
|
|
12
|
+
constructor(config) {
|
|
13
|
+
if (Object.values(config).some((value) => !value))
|
|
14
|
+
throw new Error("Invalid config");
|
|
15
|
+
this.wallet = config.wallet;
|
|
16
|
+
this.publicClient = config.publicClient;
|
|
17
|
+
this.governorAddress = config.governorAddress;
|
|
18
|
+
this.tokenDecimals = config.tokenDecimals;
|
|
19
|
+
this.clankerToken = config.clankerToken;
|
|
20
|
+
this.userAddress = config.wallet.account.address;
|
|
21
|
+
// trustedForwarder reserved for future meta-transaction support
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Propose a transfer from treasury to recipient
|
|
25
|
+
*/
|
|
26
|
+
async proposeTransfer(recipient, amount, description) {
|
|
27
|
+
const parsedAmount = typeof amount === "bigint" ? amount : parseUnits(amount.toString(), this.tokenDecimals);
|
|
28
|
+
const hash = await this.wallet.writeContract({
|
|
29
|
+
address: this.governorAddress,
|
|
30
|
+
abi: LevrGovernor_v1,
|
|
31
|
+
functionName: "proposeTransfer",
|
|
32
|
+
args: [recipient, parsedAmount, description],
|
|
33
|
+
chain: this.wallet.chain,
|
|
34
|
+
});
|
|
35
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
|
|
36
|
+
if (receipt.status === "reverted") {
|
|
37
|
+
throw new Error("Propose transfer transaction reverted");
|
|
38
|
+
}
|
|
39
|
+
// Extract proposal ID from ProposalCreated event
|
|
40
|
+
const proposalCreatedLog = receipt.logs.find((log) => {
|
|
41
|
+
try {
|
|
42
|
+
const decoded = decodeEventLog({
|
|
43
|
+
abi: LevrGovernor_v1,
|
|
44
|
+
data: log.data,
|
|
45
|
+
topics: log.topics,
|
|
46
|
+
});
|
|
47
|
+
return decoded.eventName === "ProposalCreated";
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
if (!proposalCreatedLog) {
|
|
54
|
+
throw new Error("ProposalCreated event not found in receipt");
|
|
55
|
+
}
|
|
56
|
+
const decoded = decodeEventLog({
|
|
57
|
+
abi: LevrGovernor_v1,
|
|
58
|
+
data: proposalCreatedLog.data,
|
|
59
|
+
topics: proposalCreatedLog.topics,
|
|
60
|
+
});
|
|
61
|
+
const proposalId = decoded.args.proposalId;
|
|
62
|
+
return { receipt, proposalId };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Propose a boost from treasury to staking rewards
|
|
66
|
+
*/
|
|
67
|
+
async proposeBoost(amount) {
|
|
68
|
+
const parsedAmount = typeof amount === "bigint" ? amount : parseUnits(amount.toString(), this.tokenDecimals);
|
|
69
|
+
const hash = await this.wallet.writeContract({
|
|
70
|
+
address: this.governorAddress,
|
|
71
|
+
abi: LevrGovernor_v1,
|
|
72
|
+
functionName: "proposeBoost",
|
|
73
|
+
args: [parsedAmount],
|
|
74
|
+
chain: this.wallet.chain,
|
|
75
|
+
});
|
|
76
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
|
|
77
|
+
if (receipt.status === "reverted") {
|
|
78
|
+
throw new Error("Propose boost transaction reverted");
|
|
79
|
+
}
|
|
80
|
+
// Extract proposal ID from ProposalCreated event
|
|
81
|
+
const proposalCreatedLog = receipt.logs.find((log) => {
|
|
82
|
+
try {
|
|
83
|
+
const decoded = decodeEventLog({
|
|
84
|
+
abi: LevrGovernor_v1,
|
|
85
|
+
data: log.data,
|
|
86
|
+
topics: log.topics,
|
|
87
|
+
});
|
|
88
|
+
return decoded.eventName === "ProposalCreated";
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
if (!proposalCreatedLog) {
|
|
95
|
+
throw new Error("ProposalCreated event not found in receipt");
|
|
96
|
+
}
|
|
97
|
+
const decoded = decodeEventLog({
|
|
98
|
+
abi: LevrGovernor_v1,
|
|
99
|
+
data: proposalCreatedLog.data,
|
|
100
|
+
topics: proposalCreatedLog.topics,
|
|
101
|
+
});
|
|
102
|
+
const proposalId = decoded.args.proposalId;
|
|
103
|
+
return { receipt, proposalId };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Vote on a proposal
|
|
107
|
+
*/
|
|
108
|
+
async vote(proposalId, support) {
|
|
109
|
+
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
110
|
+
const hash = await this.wallet.writeContract({
|
|
111
|
+
address: this.governorAddress,
|
|
112
|
+
abi: LevrGovernor_v1,
|
|
113
|
+
functionName: "vote",
|
|
114
|
+
args: [parsedProposalId, support],
|
|
115
|
+
chain: this.wallet.chain,
|
|
116
|
+
});
|
|
117
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
|
|
118
|
+
if (receipt.status === "reverted") {
|
|
119
|
+
throw new Error("Vote transaction reverted");
|
|
120
|
+
}
|
|
121
|
+
return receipt;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Execute a proposal by ID
|
|
125
|
+
* Note: Automatically starts a new cycle after successful execution
|
|
126
|
+
*/
|
|
127
|
+
async executeProposal(proposalId) {
|
|
128
|
+
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
129
|
+
const hash = await this.wallet.writeContract({
|
|
130
|
+
address: this.governorAddress,
|
|
131
|
+
abi: LevrGovernor_v1,
|
|
132
|
+
functionName: "execute",
|
|
133
|
+
args: [parsedProposalId],
|
|
134
|
+
chain: this.wallet.chain,
|
|
135
|
+
});
|
|
136
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
|
|
137
|
+
if (receipt.status === "reverted") {
|
|
138
|
+
throw new Error("Execute proposal transaction reverted");
|
|
139
|
+
}
|
|
140
|
+
return receipt;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get proposal details by ID
|
|
144
|
+
*/
|
|
145
|
+
async getProposal(proposalId) {
|
|
146
|
+
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
147
|
+
const result = (await this.publicClient.readContract({
|
|
148
|
+
address: this.governorAddress,
|
|
149
|
+
abi: LevrGovernor_v1,
|
|
150
|
+
functionName: "getProposal",
|
|
151
|
+
args: [parsedProposalId],
|
|
152
|
+
}));
|
|
153
|
+
return {
|
|
154
|
+
id: result.id,
|
|
155
|
+
proposalType: result.proposalType,
|
|
156
|
+
proposer: result.proposer,
|
|
157
|
+
amount: {
|
|
158
|
+
raw: result.amount,
|
|
159
|
+
formatted: formatUnits(result.amount, this.tokenDecimals),
|
|
160
|
+
},
|
|
161
|
+
recipient: result.recipient,
|
|
162
|
+
description: result.description,
|
|
163
|
+
createdAt: {
|
|
164
|
+
timestamp: result.createdAt,
|
|
165
|
+
date: new Date(Number(result.createdAt) * 1000),
|
|
166
|
+
},
|
|
167
|
+
votingStartsAt: {
|
|
168
|
+
timestamp: result.votingStartsAt,
|
|
169
|
+
date: new Date(Number(result.votingStartsAt) * 1000),
|
|
170
|
+
},
|
|
171
|
+
votingEndsAt: {
|
|
172
|
+
timestamp: result.votingEndsAt,
|
|
173
|
+
date: new Date(Number(result.votingEndsAt) * 1000),
|
|
174
|
+
},
|
|
175
|
+
yesVotes: {
|
|
176
|
+
raw: result.yesVotes,
|
|
177
|
+
formatted: formatUnits(result.yesVotes, this.tokenDecimals),
|
|
178
|
+
},
|
|
179
|
+
noVotes: {
|
|
180
|
+
raw: result.noVotes,
|
|
181
|
+
formatted: formatUnits(result.noVotes, this.tokenDecimals),
|
|
182
|
+
},
|
|
183
|
+
totalBalanceVoted: result.totalBalanceVoted,
|
|
184
|
+
executed: result.executed,
|
|
185
|
+
cycleId: result.cycleId,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get current cycle ID
|
|
190
|
+
*/
|
|
191
|
+
async getCurrentCycleId() {
|
|
192
|
+
return await this.publicClient.readContract({
|
|
193
|
+
address: this.governorAddress,
|
|
194
|
+
abi: LevrGovernor_v1,
|
|
195
|
+
functionName: "currentCycleId",
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get all proposal IDs for a specific cycle
|
|
200
|
+
*/
|
|
201
|
+
async getProposalsForCycle(cycleId) {
|
|
202
|
+
const parsedCycleId = typeof cycleId === "bigint" ? cycleId : BigInt(cycleId);
|
|
203
|
+
return await this.publicClient.readContract({
|
|
204
|
+
address: this.governorAddress,
|
|
205
|
+
abi: LevrGovernor_v1,
|
|
206
|
+
functionName: "getProposalsForCycle",
|
|
207
|
+
args: [parsedCycleId],
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get the winner proposal ID for a cycle
|
|
212
|
+
*/
|
|
213
|
+
async getWinner(cycleId) {
|
|
214
|
+
const parsedCycleId = typeof cycleId === "bigint" ? cycleId : BigInt(cycleId);
|
|
215
|
+
return await this.publicClient.readContract({
|
|
216
|
+
address: this.governorAddress,
|
|
217
|
+
abi: LevrGovernor_v1,
|
|
218
|
+
functionName: "getWinner",
|
|
219
|
+
args: [parsedCycleId],
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get vote receipt for a user on a proposal
|
|
224
|
+
*/
|
|
225
|
+
async getVoteReceipt(proposalId, voter) {
|
|
226
|
+
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
227
|
+
const voterAddress = voter ?? this.userAddress;
|
|
228
|
+
return await this.publicClient.readContract({
|
|
229
|
+
address: this.governorAddress,
|
|
230
|
+
abi: LevrGovernor_v1,
|
|
231
|
+
functionName: "getVoteReceipt",
|
|
232
|
+
args: [parsedProposalId, voterAddress],
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Get voting power snapshot for a user at proposal creation
|
|
237
|
+
*/
|
|
238
|
+
async getVotingPowerSnapshot(proposalId, user) {
|
|
239
|
+
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
240
|
+
const userAddress = user ?? this.userAddress;
|
|
241
|
+
return await this.publicClient.readContract({
|
|
242
|
+
address: this.governorAddress,
|
|
243
|
+
abi: LevrGovernor_v1,
|
|
244
|
+
functionName: "getVotingPowerSnapshot",
|
|
245
|
+
args: [parsedProposalId, userAddress],
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Check if proposal meets quorum
|
|
250
|
+
*/
|
|
251
|
+
async meetsQuorum(proposalId) {
|
|
252
|
+
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
253
|
+
return await this.publicClient.readContract({
|
|
254
|
+
address: this.governorAddress,
|
|
255
|
+
abi: LevrGovernor_v1,
|
|
256
|
+
functionName: "meetsQuorum",
|
|
257
|
+
args: [parsedProposalId],
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Check if proposal meets approval threshold
|
|
262
|
+
*/
|
|
263
|
+
async meetsApproval(proposalId) {
|
|
264
|
+
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
265
|
+
return await this.publicClient.readContract({
|
|
266
|
+
address: this.governorAddress,
|
|
267
|
+
abi: LevrGovernor_v1,
|
|
268
|
+
functionName: "meetsApproval",
|
|
269
|
+
args: [parsedProposalId],
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Get proposal state (Pending, Active, Defeated, Succeeded, Executed)
|
|
274
|
+
*/
|
|
275
|
+
async getProposalState(proposalId) {
|
|
276
|
+
const parsedProposalId = typeof proposalId === "bigint" ? proposalId : BigInt(proposalId);
|
|
277
|
+
return await this.publicClient.readContract({
|
|
278
|
+
address: this.governorAddress,
|
|
279
|
+
abi: LevrGovernor_v1,
|
|
280
|
+
functionName: "state",
|
|
281
|
+
args: [parsedProposalId],
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Get active proposal count for a specific proposal type
|
|
286
|
+
*/
|
|
287
|
+
async getActiveProposalCount(proposalType) {
|
|
288
|
+
return await this.publicClient.readContract({
|
|
289
|
+
address: this.governorAddress,
|
|
290
|
+
abi: LevrGovernor_v1,
|
|
291
|
+
functionName: "activeProposalCount",
|
|
292
|
+
args: [proposalType],
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Get factory address
|
|
297
|
+
*/
|
|
298
|
+
async getFactory() {
|
|
299
|
+
return await this.publicClient.readContract({
|
|
300
|
+
address: this.governorAddress,
|
|
301
|
+
abi: LevrGovernor_v1,
|
|
302
|
+
functionName: "factory",
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get treasury address
|
|
307
|
+
*/
|
|
308
|
+
async getTreasury() {
|
|
309
|
+
return await this.publicClient.readContract({
|
|
310
|
+
address: this.governorAddress,
|
|
311
|
+
abi: LevrGovernor_v1,
|
|
312
|
+
functionName: "treasury",
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Get staked token address
|
|
317
|
+
*/
|
|
318
|
+
async getStakedToken() {
|
|
319
|
+
return await this.publicClient.readContract({
|
|
320
|
+
address: this.governorAddress,
|
|
321
|
+
abi: LevrGovernor_v1,
|
|
322
|
+
functionName: "stakedToken",
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Propose transfer and execute in sequence (for testing convenience)
|
|
327
|
+
*/
|
|
328
|
+
async proposeAndExecuteTransfer(recipient, amount, description) {
|
|
329
|
+
const { receipt: proposeReceipt, proposalId } = await this.proposeTransfer(recipient, amount, description);
|
|
330
|
+
const executeReceipt = await this.executeProposal(proposalId);
|
|
331
|
+
return {
|
|
332
|
+
proposeReceipt,
|
|
333
|
+
executeReceipt,
|
|
334
|
+
proposalId,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Propose boost and execute in sequence (for testing convenience)
|
|
339
|
+
*/
|
|
340
|
+
async proposeAndExecuteBoost(amount) {
|
|
341
|
+
const { receipt: proposeReceipt, proposalId } = await this.proposeBoost(amount);
|
|
342
|
+
const executeReceipt = await this.executeProposal(proposalId);
|
|
343
|
+
return {
|
|
344
|
+
proposeReceipt,
|
|
345
|
+
executeReceipt,
|
|
346
|
+
proposalId,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Find treasury airdrop allocation by checking all known amounts using multicall
|
|
351
|
+
*/
|
|
352
|
+
async findTreasuryAllocation() {
|
|
353
|
+
const chainId = this.publicClient.chain?.id;
|
|
354
|
+
const airdropAddress = GET_CLANKER_AIRDROP_ADDRESS(chainId);
|
|
355
|
+
const treasury = await this.getTreasury();
|
|
356
|
+
if (!airdropAddress)
|
|
357
|
+
return null;
|
|
358
|
+
// Prepare multicall for all possible treasury airdrop amounts + treasury balance check
|
|
359
|
+
const amounts = Object.values(TREASURY_AIRDROP_AMOUNTS).map((amountInTokens) => BigInt(amountInTokens) * 10n ** 18n);
|
|
360
|
+
const results = await this.publicClient.multicall({
|
|
361
|
+
contracts: [
|
|
362
|
+
// First check treasury balance
|
|
363
|
+
{
|
|
364
|
+
address: this.clankerToken,
|
|
365
|
+
abi: erc20Abi,
|
|
366
|
+
functionName: "balanceOf",
|
|
367
|
+
args: [treasury],
|
|
368
|
+
},
|
|
369
|
+
// Then check all airdrop amounts
|
|
370
|
+
...amounts.map((amount) => ({
|
|
371
|
+
address: airdropAddress,
|
|
372
|
+
abi: IClankerAirdrop,
|
|
373
|
+
functionName: "amountAvailableToClaim",
|
|
374
|
+
args: [this.clankerToken, treasury, amount],
|
|
375
|
+
})),
|
|
376
|
+
], // Mixed ABIs in multicall
|
|
377
|
+
allowFailure: true,
|
|
378
|
+
});
|
|
379
|
+
// Extract treasury balance from first result
|
|
380
|
+
const treasuryBalanceResult = results[0];
|
|
381
|
+
const treasuryBalance = treasuryBalanceResult && treasuryBalanceResult.status === "success"
|
|
382
|
+
? treasuryBalanceResult.result
|
|
383
|
+
: 0n;
|
|
384
|
+
// Extract airdrop check results (skip first result which is balance)
|
|
385
|
+
const airdropResults = results.slice(1);
|
|
386
|
+
// Collect all valid results first
|
|
387
|
+
const allResults = [];
|
|
388
|
+
for (let i = 0; i < airdropResults.length; i++) {
|
|
389
|
+
const result = airdropResults[i];
|
|
390
|
+
const amount = amounts[i];
|
|
391
|
+
if (result.status === "success" && result.result !== undefined) {
|
|
392
|
+
const available = result.result;
|
|
393
|
+
if (available > 0n) {
|
|
394
|
+
// Available - highest priority (1)
|
|
395
|
+
allResults.push({ amount, available, status: "available", priority: 1 });
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
// Available is 0 - check treasury balance to determine if claimed or locked
|
|
399
|
+
// If treasury has >= this amount, it's likely already claimed
|
|
400
|
+
// Otherwise it's still locked
|
|
401
|
+
const isClaimed = treasuryBalance >= amount;
|
|
402
|
+
const priority = isClaimed ? 4 : 2;
|
|
403
|
+
const status = isClaimed ? "claimed" : "locked";
|
|
404
|
+
const error = isClaimed ? "Treasury airdrop already claimed" : "Airdrop is still locked";
|
|
405
|
+
allResults.push({ amount, available: 0n, status, priority, error });
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
else if (result.status === "failure") {
|
|
409
|
+
const errorMessage = result.error?.message || "";
|
|
410
|
+
// AirdropNotCreated means this amount wasn't configured - skip entirely
|
|
411
|
+
if (errorMessage.includes("AirdropNotCreated")) {
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
414
|
+
// AirdropNotUnlocked means this amount exists but is locked (priority 2)
|
|
415
|
+
if (errorMessage.includes("AirdropNotUnlocked")) {
|
|
416
|
+
allResults.push({
|
|
417
|
+
amount,
|
|
418
|
+
available: 0n,
|
|
419
|
+
status: "locked",
|
|
420
|
+
error: "Airdrop is still locked",
|
|
421
|
+
priority: 2,
|
|
422
|
+
});
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
// Already claimed errors (priority 3)
|
|
426
|
+
if (errorMessage.includes("UserMaxClaimed") || errorMessage.includes("TotalMaxClaimed")) {
|
|
427
|
+
allResults.push({
|
|
428
|
+
amount,
|
|
429
|
+
available: 0n,
|
|
430
|
+
status: "claimed",
|
|
431
|
+
error: "Already claimed maximum amount",
|
|
432
|
+
priority: 3,
|
|
433
|
+
});
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
// Arithmetic underflow/overflow means a different (larger) amount was claimed
|
|
437
|
+
// Skip this result entirely - the correct amount will be detected separately
|
|
438
|
+
if (errorMessage.includes("underflow") || errorMessage.includes("overflow")) {
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
// Other errors - treat as locked (priority 2)
|
|
442
|
+
allResults.push({
|
|
443
|
+
amount,
|
|
444
|
+
available: 0n,
|
|
445
|
+
status: "locked",
|
|
446
|
+
error: errorMessage,
|
|
447
|
+
priority: 2,
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
// If no results found, return null
|
|
452
|
+
if (allResults.length === 0) {
|
|
453
|
+
return null;
|
|
454
|
+
}
|
|
455
|
+
// Sort by priority (lower is better), then by amount (higher is better for same priority)
|
|
456
|
+
allResults.sort((a, b) => {
|
|
457
|
+
if (a.priority !== b.priority) {
|
|
458
|
+
return a.priority - b.priority;
|
|
459
|
+
}
|
|
460
|
+
// For same priority, prefer larger amounts
|
|
461
|
+
return a.amount > b.amount ? -1 : 1;
|
|
462
|
+
});
|
|
463
|
+
// Return the best result
|
|
464
|
+
const best = allResults[0];
|
|
465
|
+
return {
|
|
466
|
+
amount: best.amount,
|
|
467
|
+
available: best.available,
|
|
468
|
+
status: best.status,
|
|
469
|
+
error: best.error,
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Get available airdrop amount for treasury using known amounts
|
|
474
|
+
*/
|
|
475
|
+
async getAvailableAirdropAmount() {
|
|
476
|
+
const allocation = await this.findTreasuryAllocation();
|
|
477
|
+
return allocation?.available || 0n;
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Get airdrop status for treasury with detailed status information
|
|
481
|
+
*/
|
|
482
|
+
async getAirdropStatus() {
|
|
483
|
+
const allocation = await this.findTreasuryAllocation();
|
|
484
|
+
if (!allocation) {
|
|
485
|
+
return {
|
|
486
|
+
availableAmount: { raw: 0n, formatted: formatUnits(0n, this.tokenDecimals) },
|
|
487
|
+
allocatedAmount: { raw: 0n, formatted: formatUnits(0n, this.tokenDecimals) },
|
|
488
|
+
isAvailable: false,
|
|
489
|
+
error: "No treasury airdrop found",
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
// Generate appropriate error message based on status
|
|
493
|
+
let error;
|
|
494
|
+
switch (allocation.status) {
|
|
495
|
+
case "available":
|
|
496
|
+
error = undefined;
|
|
497
|
+
break;
|
|
498
|
+
case "locked":
|
|
499
|
+
error = allocation.error || "Airdrop is still locked (lockup period not passed)";
|
|
500
|
+
break;
|
|
501
|
+
case "claimed":
|
|
502
|
+
error = "Treasury airdrop already claimed";
|
|
503
|
+
break;
|
|
504
|
+
case "not_found":
|
|
505
|
+
error = "No treasury airdrop found";
|
|
506
|
+
break;
|
|
507
|
+
}
|
|
508
|
+
return {
|
|
509
|
+
availableAmount: {
|
|
510
|
+
raw: allocation.available,
|
|
511
|
+
formatted: formatUnits(allocation.available, this.tokenDecimals),
|
|
512
|
+
},
|
|
513
|
+
allocatedAmount: {
|
|
514
|
+
raw: allocation.amount,
|
|
515
|
+
formatted: formatUnits(allocation.amount, this.tokenDecimals),
|
|
516
|
+
},
|
|
517
|
+
isAvailable: allocation.status === "available" && allocation.available > 0n,
|
|
518
|
+
error,
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Claim airdrop for treasury
|
|
523
|
+
*/
|
|
524
|
+
async claimAirdrop() {
|
|
525
|
+
const allocation = await this.findTreasuryAllocation();
|
|
526
|
+
if (!allocation) {
|
|
527
|
+
throw new Error("No treasury airdrop found to claim");
|
|
528
|
+
}
|
|
529
|
+
if (allocation.status === "claimed") {
|
|
530
|
+
throw new Error("Treasury airdrop already claimed");
|
|
531
|
+
}
|
|
532
|
+
if (allocation.status === "not_found") {
|
|
533
|
+
throw new Error("No treasury airdrop configured for this token");
|
|
534
|
+
}
|
|
535
|
+
const chainId = this.publicClient.chain?.id;
|
|
536
|
+
const airdropAddress = GET_CLANKER_AIRDROP_ADDRESS(chainId);
|
|
537
|
+
const treasury = await this.getTreasury();
|
|
538
|
+
if (!airdropAddress) {
|
|
539
|
+
throw new Error(`No airdrop address found for chain ID ${chainId}`);
|
|
540
|
+
}
|
|
541
|
+
const hash = await this.wallet.writeContract({
|
|
542
|
+
address: airdropAddress,
|
|
543
|
+
abi: IClankerAirdrop,
|
|
544
|
+
functionName: "claim",
|
|
545
|
+
args: [this.clankerToken, treasury, allocation.amount, []], // Empty proof for single-leaf merkle tree
|
|
546
|
+
chain: this.wallet.chain,
|
|
547
|
+
});
|
|
548
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash });
|
|
549
|
+
if (receipt.status === "reverted") {
|
|
550
|
+
throw new Error("Claim airdrop transaction reverted");
|
|
551
|
+
}
|
|
552
|
+
return receipt;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
//# sourceMappingURL=governance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/governance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export * from "./abis/index.js";
|
|
2
|
+
export * from "./balance.js";
|
|
3
|
+
export * from "./build-calldatas-v4.js";
|
|
4
|
+
export * from "./build-clanker-v4.js";
|
|
5
|
+
export * from "./constants.js";
|
|
6
|
+
export * from "./deploy-v4.js";
|
|
7
|
+
export * from "./fee-receivers.js";
|
|
8
|
+
export * from "./governance.js";
|
|
9
|
+
export * from "./project.js";
|
|
10
|
+
export * from "./projects.js";
|
|
11
|
+
export * from "./proposals.js";
|
|
12
|
+
export * from "./quote-v4.js";
|
|
13
|
+
export * from "./schema/index.js";
|
|
14
|
+
export * from "./stake.js";
|
|
15
|
+
export * from "./swap-v4.js";
|
|
16
|
+
export * from "./types.js";
|
|
17
|
+
export * from "./util.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA"}
|