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.
Files changed (156) hide show
  1. package/README.md +109 -13
  2. package/dist/esm/abis/LevrFactory_v1.js +63 -0
  3. package/dist/esm/abis/LevrGovernor_v1.js +15 -24
  4. package/dist/esm/abis/LevrStaking_v1.js +7 -1
  5. package/dist/esm/abis/StateView.js +149 -0
  6. package/dist/esm/abis/V3QuoterV2.js +26 -0
  7. package/dist/esm/abis/index.js +4 -0
  8. package/dist/esm/balance.js +48 -4
  9. package/dist/esm/balance.js.map +1 -1
  10. package/dist/esm/client/hook/index.js +14 -3
  11. package/dist/esm/client/hook/index.js.map +1 -1
  12. package/dist/esm/client/hook/use-fee-receivers.js +11 -30
  13. package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
  14. package/dist/esm/client/hook/use-governance.js +20 -274
  15. package/dist/esm/client/hook/use-governance.js.map +1 -1
  16. package/dist/esm/client/hook/use-pool.js +26 -0
  17. package/dist/esm/client/hook/use-pool.js.map +1 -0
  18. package/dist/esm/client/hook/use-prepare.js +6 -3
  19. package/dist/esm/client/hook/use-prepare.js.map +1 -1
  20. package/dist/esm/client/hook/use-project.js +28 -16
  21. package/dist/esm/client/hook/use-project.js.map +1 -1
  22. package/dist/esm/client/hook/use-proposal.js +48 -0
  23. package/dist/esm/client/hook/use-proposal.js.map +1 -0
  24. package/dist/esm/client/hook/use-stake.js +29 -215
  25. package/dist/esm/client/hook/use-stake.js.map +1 -1
  26. package/dist/esm/client/hook/use-swap.js +23 -19
  27. package/dist/esm/client/hook/use-swap.js.map +1 -1
  28. package/dist/esm/client/hook/use-user.js +25 -0
  29. package/dist/esm/client/hook/use-user.js.map +1 -0
  30. package/dist/esm/client/levr-provider.js +73 -108
  31. package/dist/esm/client/levr-provider.js.map +1 -1
  32. package/dist/esm/client/query-keys.js +10 -22
  33. package/dist/esm/client/query-keys.js.map +1 -1
  34. package/dist/esm/constants.js +42 -1
  35. package/dist/esm/constants.js.map +1 -1
  36. package/dist/esm/fee-receivers.js +28 -13
  37. package/dist/esm/fee-receivers.js.map +1 -1
  38. package/dist/esm/governance.js +35 -399
  39. package/dist/esm/governance.js.map +1 -1
  40. package/dist/esm/index.js +7 -3
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/pool-key.js +152 -0
  43. package/dist/esm/pool-key.js.map +1 -0
  44. package/dist/esm/pool.js +70 -0
  45. package/dist/esm/pool.js.map +1 -0
  46. package/dist/esm/project.js +415 -118
  47. package/dist/esm/project.js.map +1 -1
  48. package/dist/esm/proposal.js +156 -0
  49. package/dist/esm/proposal.js.map +1 -0
  50. package/dist/esm/quote/index.js +98 -0
  51. package/dist/esm/quote/index.js.map +1 -0
  52. package/dist/esm/quote/v3.js +62 -0
  53. package/dist/esm/quote/v3.js.map +1 -0
  54. package/dist/esm/quote/v4.js +228 -0
  55. package/dist/esm/quote/v4.js.map +1 -0
  56. package/dist/esm/stake.js +34 -237
  57. package/dist/esm/stake.js.map +1 -1
  58. package/dist/esm/treasury.js +162 -0
  59. package/dist/esm/treasury.js.map +1 -0
  60. package/dist/esm/usd-price.js +149 -0
  61. package/dist/esm/usd-price.js.map +1 -0
  62. package/dist/esm/user.js +153 -0
  63. package/dist/esm/user.js.map +1 -0
  64. package/dist/esm/util.js +45 -1
  65. package/dist/esm/util.js.map +1 -1
  66. package/dist/types/abis/LevrFactory_v1.d.ts +48 -0
  67. package/dist/types/abis/LevrGovernor_v1.d.ts +12 -18
  68. package/dist/types/abis/LevrStaking_v1.d.ts +5 -1
  69. package/dist/types/abis/StateView.d.ts +278 -0
  70. package/dist/types/abis/V3QuoterV2.d.ts +39 -0
  71. package/dist/types/abis/index.d.ts +2 -0
  72. package/dist/types/balance.d.ts +19 -6
  73. package/dist/types/balance.d.ts.map +1 -1
  74. package/dist/types/client/hook/index.d.ts +12 -4
  75. package/dist/types/client/hook/index.d.ts.map +1 -1
  76. package/dist/types/client/hook/use-fee-receivers.d.ts +6 -16
  77. package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
  78. package/dist/types/client/hook/use-governance.d.ts +4 -93
  79. package/dist/types/client/hook/use-governance.d.ts.map +1 -1
  80. package/dist/types/client/hook/use-pool.d.ts +12 -0
  81. package/dist/types/client/hook/use-pool.d.ts.map +1 -0
  82. package/dist/types/client/hook/use-prepare.d.ts +1 -2
  83. package/dist/types/client/hook/use-prepare.d.ts.map +1 -1
  84. package/dist/types/client/hook/use-project.d.ts +8 -1
  85. package/dist/types/client/hook/use-project.d.ts.map +1 -1
  86. package/dist/types/client/hook/use-proposal.d.ts +18 -0
  87. package/dist/types/client/hook/use-proposal.d.ts.map +1 -0
  88. package/dist/types/client/hook/use-stake.d.ts +14 -168
  89. package/dist/types/client/hook/use-stake.d.ts.map +1 -1
  90. package/dist/types/client/hook/use-swap.d.ts +5 -9
  91. package/dist/types/client/hook/use-swap.d.ts.map +1 -1
  92. package/dist/types/client/hook/use-user.d.ts +13 -0
  93. package/dist/types/client/hook/use-user.d.ts.map +1 -0
  94. package/dist/types/client/levr-provider.d.ts +41 -68
  95. package/dist/types/client/levr-provider.d.ts.map +1 -1
  96. package/dist/types/client/query-keys.d.ts +14 -26
  97. package/dist/types/client/query-keys.d.ts.map +1 -1
  98. package/dist/types/constants.d.ts +18 -0
  99. package/dist/types/constants.d.ts.map +1 -1
  100. package/dist/types/fee-receivers.d.ts +29 -2
  101. package/dist/types/fee-receivers.d.ts.map +1 -1
  102. package/dist/types/governance.d.ts +8 -108
  103. package/dist/types/governance.d.ts.map +1 -1
  104. package/dist/types/index.d.ts +7 -3
  105. package/dist/types/index.d.ts.map +1 -1
  106. package/dist/types/pool-key.d.ts +121 -0
  107. package/dist/types/pool-key.d.ts.map +1 -0
  108. package/dist/types/pool.d.ts +590 -0
  109. package/dist/types/pool.d.ts.map +1 -0
  110. package/dist/types/project.d.ts +61 -11
  111. package/dist/types/project.d.ts.map +1 -1
  112. package/dist/types/proposal.d.ts +1161 -0
  113. package/dist/types/proposal.d.ts.map +1 -0
  114. package/dist/types/quote/index.d.ts +97 -0
  115. package/dist/types/quote/index.d.ts.map +1 -0
  116. package/dist/types/quote/v3.d.ts +78 -0
  117. package/dist/types/quote/v3.d.ts.map +1 -0
  118. package/dist/types/quote/v4.d.ts +95 -0
  119. package/dist/types/quote/v4.d.ts.map +1 -0
  120. package/dist/types/stake.d.ts +41 -87
  121. package/dist/types/stake.d.ts.map +1 -1
  122. package/dist/types/treasury.d.ts +16 -0
  123. package/dist/types/treasury.d.ts.map +1 -0
  124. package/dist/types/types.d.ts +15 -0
  125. package/dist/types/types.d.ts.map +1 -1
  126. package/dist/types/usd-price.d.ts +141 -0
  127. package/dist/types/usd-price.d.ts.map +1 -0
  128. package/dist/types/user.d.ts +188 -0
  129. package/dist/types/user.d.ts.map +1 -0
  130. package/dist/types/util.d.ts +17 -0
  131. package/dist/types/util.d.ts.map +1 -1
  132. package/package.json +5 -2
  133. package/dist/esm/client/hook/use-balance.js +0 -56
  134. package/dist/esm/client/hook/use-balance.js.map +0 -1
  135. package/dist/esm/client/hook/use-projects.js +0 -22
  136. package/dist/esm/client/hook/use-projects.js.map +0 -1
  137. package/dist/esm/client/hook/use-proposals.js +0 -31
  138. package/dist/esm/client/hook/use-proposals.js.map +0 -1
  139. package/dist/esm/projects.js +0 -212
  140. package/dist/esm/projects.js.map +0 -1
  141. package/dist/esm/proposals.js +0 -98
  142. package/dist/esm/proposals.js.map +0 -1
  143. package/dist/esm/quote-v4.js +0 -169
  144. package/dist/esm/quote-v4.js.map +0 -1
  145. package/dist/types/client/hook/use-balance.d.ts +0 -18
  146. package/dist/types/client/hook/use-balance.d.ts.map +0 -1
  147. package/dist/types/client/hook/use-projects.d.ts +0 -6
  148. package/dist/types/client/hook/use-projects.d.ts.map +0 -1
  149. package/dist/types/client/hook/use-proposals.d.ts +0 -16
  150. package/dist/types/client/hook/use-proposals.d.ts.map +0 -1
  151. package/dist/types/projects.d.ts +0 -20
  152. package/dist/types/projects.d.ts.map +0 -1
  153. package/dist/types/proposals.d.ts +0 -20
  154. package/dist/types/proposals.d.ts.map +0 -1
  155. package/dist/types/quote-v4.d.ts +0 -54
  156. package/dist/types/quote-v4.d.ts.map +0 -1
package/dist/esm/stake.js CHANGED
@@ -1,7 +1,7 @@
1
- import { encodeFunctionData, erc20Abi, formatUnits, parseUnits } from "viem";
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
- if (Object.values(config).some((value) => !value))
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.stakingAddress;
20
- this.tokenAddress = config.tokenAddress;
21
- this.tokenDecimals = config.tokenDecimals;
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.trustedForwarder;
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 hash = await this.wallet.writeContract({
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 receipt;
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
- * Calculate WETH APR using pool price and reward rates
325
- * Formula: (wethRewardRatePerSecond * secondsPerYear * wethPriceInUnderlying / totalStaked) * 10000
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 calculateWethApr(poolKey) {
331
- const wethAddress = WETH(this.chainId)?.address;
332
- if (!wethAddress) {
333
- throw new Error("WETH address not found for this chain");
334
- }
335
- // Get pool data and WETH reward rate
336
- const [poolData, wethRewardRate] = await Promise.all([
337
- this.getPoolData(),
338
- this.getRewardRatePerSecond(wethAddress),
339
- ]);
340
- const totalStaked = poolData.totalStaked.raw;
341
- // If no stakers or no WETH rewards, APR is 0
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
- raw: aprBps,
380
- percentage: Number(aprBps) / 100, // Convert bps to percentage
176
+ tokenDays,
177
+ formatted: tokenDays.toLocaleString(),
381
178
  };
382
179
  }
383
180
  }
@@ -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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"}