levr-sdk 0.1.2 → 0.2.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.
Files changed (61) hide show
  1. package/README.md +5 -4
  2. package/dist/esm/client/hook/index.js +5 -9
  3. package/dist/esm/client/hook/index.js.map +1 -1
  4. package/dist/esm/client/hook/use-airdrop.js +19 -0
  5. package/dist/esm/client/hook/use-airdrop.js.map +1 -0
  6. package/dist/esm/client/hook/use-clanker.js +1 -34
  7. package/dist/esm/client/hook/use-clanker.js.map +1 -1
  8. package/dist/esm/client/hook/use-governance.js +2 -2
  9. package/dist/esm/client/hook/use-governance.js.map +1 -1
  10. package/dist/esm/client/hook/use-project.js +30 -6
  11. package/dist/esm/client/hook/use-project.js.map +1 -1
  12. package/dist/esm/client/hook/use-swap.js +0 -2
  13. package/dist/esm/client/hook/use-swap.js.map +1 -1
  14. package/dist/esm/client/levr-provider.js +10 -7
  15. package/dist/esm/client/levr-provider.js.map +1 -1
  16. package/dist/esm/fee-receivers.js +35 -6
  17. package/dist/esm/fee-receivers.js.map +1 -1
  18. package/dist/esm/governance.js +3 -12
  19. package/dist/esm/governance.js.map +1 -1
  20. package/dist/esm/project.js +106 -63
  21. package/dist/esm/project.js.map +1 -1
  22. package/dist/esm/quote/index.js +2 -2
  23. package/dist/esm/quote/v4.js +142 -128
  24. package/dist/esm/quote/v4.js.map +1 -1
  25. package/dist/esm/stake.js +1 -1
  26. package/dist/esm/stake.js.map +1 -1
  27. package/dist/esm/treasury.js +70 -148
  28. package/dist/esm/treasury.js.map +1 -1
  29. package/dist/esm/usd-price.js +21 -4
  30. package/dist/esm/usd-price.js.map +1 -1
  31. package/dist/esm/user.js +1 -1
  32. package/dist/esm/user.js.map +1 -1
  33. package/dist/types/client/hook/index.d.ts +5 -12
  34. package/dist/types/client/hook/index.d.ts.map +1 -1
  35. package/dist/types/client/hook/use-airdrop.d.ts +11 -0
  36. package/dist/types/client/hook/use-airdrop.d.ts.map +1 -0
  37. package/dist/types/client/hook/use-clanker.d.ts +1 -18
  38. package/dist/types/client/hook/use-clanker.d.ts.map +1 -1
  39. package/dist/types/client/hook/use-governance.d.ts +2 -1
  40. package/dist/types/client/hook/use-governance.d.ts.map +1 -1
  41. package/dist/types/client/hook/use-project.d.ts +11 -1
  42. package/dist/types/client/hook/use-project.d.ts.map +1 -1
  43. package/dist/types/client/hook/use-swap.d.ts.map +1 -1
  44. package/dist/types/client/levr-provider.d.ts +3 -10
  45. package/dist/types/client/levr-provider.d.ts.map +1 -1
  46. package/dist/types/fee-receivers.d.ts +514 -0
  47. package/dist/types/fee-receivers.d.ts.map +1 -1
  48. package/dist/types/governance.d.ts +2 -5
  49. package/dist/types/governance.d.ts.map +1 -1
  50. package/dist/types/project.d.ts +25 -6
  51. package/dist/types/project.d.ts.map +1 -1
  52. package/dist/types/quote/index.d.ts +2 -2
  53. package/dist/types/quote/v4.d.ts +5 -7
  54. package/dist/types/quote/v4.d.ts.map +1 -1
  55. package/dist/types/treasury.d.ts +1 -7
  56. package/dist/types/treasury.d.ts.map +1 -1
  57. package/dist/types/usd-price.d.ts +6 -1
  58. package/dist/types/usd-price.d.ts.map +1 -1
  59. package/dist/types/user.d.ts +1 -1
  60. package/dist/types/user.d.ts.map +1 -1
  61. package/package.json +1 -1
@@ -1,131 +1,73 @@
1
- import { encodeAbiParameters, encodeFunctionData, formatUnits, keccak256 } from "viem";
2
- import { IClankerHookDynamicFee, IClankerHookStaticFee, V4Quoter } from "../abis/index.js";
3
- import { UNISWAP_V4_QUOTER } from "../constants.js";
1
+ import { encodeFunctionData, formatUnits } from "viem";
2
+ import { IClankerHookDynamicFee, IClankerHookStaticFee, StateView, V4Quoter } from "../abis/index.js";
3
+ import { UNISWAP_V4_QUOTER, UNISWAP_V4_STATE_VIEW } from "../constants.js";
4
+ import { getPoolId } from "../pool-key.js";
4
5
  // ============================================================================
5
6
  // V4 Helper Functions
6
7
  // ============================================================================
7
8
  /**
8
- * @description Try to get static fees from a Clanker hook using multicall
9
+ * @description Convert sqrtPriceX96 to a decimal price (token1/token0)
10
+ * Uses the standard Uniswap formula: price = (sqrtPriceX96 / 2^96)^2
11
+ * Adjusted for token decimals
9
12
  */
10
- const tryGetStaticFees = async (publicClient, hookAddress, poolId) => {
11
- try {
12
- const results = await publicClient.multicall({
13
- contracts: [
14
- {
15
- address: hookAddress,
16
- abi: IClankerHookStaticFee,
17
- functionName: "clankerFee",
18
- args: [poolId],
19
- },
20
- {
21
- address: hookAddress,
22
- abi: IClankerHookStaticFee,
23
- functionName: "pairedFee",
24
- args: [poolId],
25
- },
26
- ],
27
- });
28
- if (results[0].status === "success" && results[1].status === "success") {
29
- return {
30
- clankerFee: Number(results[0].result),
31
- pairedFee: Number(results[1].result),
32
- };
33
- }
34
- return undefined;
35
- }
36
- catch {
37
- return undefined;
38
- }
39
- };
40
- /**
41
- * @description Try to get dynamic fee configuration from a Clanker hook
42
- */
43
- const tryGetDynamicFees = async (publicClient, hookAddress, poolId) => {
44
- try {
45
- const config = await publicClient.readContract({
46
- address: hookAddress,
47
- abi: IClankerHookDynamicFee,
48
- functionName: "poolConfigVars",
49
- args: [poolId],
50
- });
51
- return {
52
- baseFee: Number(config.baseFee),
53
- maxLpFee: Number(config.maxLpFee),
54
- };
55
- }
56
- catch {
57
- return undefined;
58
- }
59
- };
60
- /**
61
- * @description Get hook fee information from Clanker hooks
62
- */
63
- const getHookFees = async (publicClient, poolKey) => {
64
- // Generate pool ID for hook queries (keccak256 of abi.encode(PoolKey))
65
- const poolId = keccak256(encodeAbiParameters([
66
- {
67
- type: "tuple",
68
- components: [
69
- { name: "currency0", type: "address" },
70
- { name: "currency1", type: "address" },
71
- { name: "fee", type: "uint24" },
72
- { name: "tickSpacing", type: "int24" },
73
- { name: "hooks", type: "address" },
74
- ],
75
- },
76
- ], [poolKey]));
77
- // Try static fees first
78
- const staticFees = await tryGetStaticFees(publicClient, poolKey.hooks, poolId);
79
- if (staticFees) {
80
- return {
81
- type: "static",
82
- clankerFee: staticFees.clankerFee,
83
- pairedFee: staticFees.pairedFee,
84
- };
85
- }
86
- // Try dynamic fees
87
- const dynamicFees = await tryGetDynamicFees(publicClient, poolKey.hooks, poolId);
88
- if (dynamicFees) {
89
- return {
90
- type: "dynamic",
91
- baseFee: dynamicFees.baseFee,
92
- maxLpFee: dynamicFees.maxLpFee,
93
- };
13
+ const sqrtPriceX96ToPrice = (sqrtPriceX96, decimals0, decimals1) => {
14
+ // Convert sqrtPriceX96 to a decimal number
15
+ // price = (sqrtPriceX96 / 2^96)^2
16
+ const Q96 = 2n ** 96n;
17
+ const numerator = sqrtPriceX96 * sqrtPriceX96;
18
+ const denominator = Q96 * Q96;
19
+ // Get the price as a float
20
+ let price = Number(numerator) / Number(denominator);
21
+ // Adjust for token decimals: price represents token1/token0
22
+ // If token0 has more decimals, we need to scale up the price
23
+ if (decimals0 !== decimals1) {
24
+ const decimalAdjustment = 10 ** (decimals0 - decimals1);
25
+ price = price * decimalAdjustment;
94
26
  }
95
- return undefined;
27
+ return price;
96
28
  };
97
29
  /**
98
- * @description Calculate price impact using USD pricing
99
- * Compares the execution price to the market spot price
30
+ * @description Calculate price impact using the actual pool state
31
+ * Compares the execution price from the quote to the spot price before the swap
32
+ *
33
+ * This is the standard AMM price impact calculation:
34
+ * - Spot price (before swap): derived from sqrtPriceX96
35
+ * - Execution price: actual rate from quote (amountOut / amountIn)
36
+ * - Price impact: % difference between spot and execution price
37
+ *
38
+ * The execution price inherently accounts for price movement during the swap,
39
+ * as it represents the average price across the entire trade.
100
40
  */
101
- const calculatePriceImpact = (amountIn, amountOut, currency0, currency1, currency0Decimals, currency1Decimals, tokenAddress, pricing, zeroForOne) => {
41
+ const calculatePriceImpact = (sqrtPriceX96, amountIn, amountOut, currency0Decimals, currency1Decimals, zeroForOne) => {
102
42
  try {
103
- // Determine which currency is the token and which is WETH
104
- const currency0IsToken = currency0.toLowerCase() === tokenAddress.toLowerCase();
105
- // Format amounts to decimal strings
106
- const amountInFormatted = parseFloat(formatUnits(amountIn, zeroForOne ? currency0Decimals : currency1Decimals));
107
- const amountOutFormatted = parseFloat(formatUnits(amountOut, zeroForOne ? currency1Decimals : currency0Decimals));
108
- if (amountInFormatted === 0 || amountOutFormatted === 0)
43
+ // Get spot price from sqrtPriceX96 (token1/token0)
44
+ const spotPrice = sqrtPriceX96ToPrice(sqrtPriceX96, currency0Decimals, currency1Decimals);
45
+ if (spotPrice === 0)
109
46
  return undefined;
110
- // Get market spot prices
111
- const wethPrice = parseFloat(pricing.wethUsd);
112
- const tokenPrice = parseFloat(pricing.tokenUsd);
113
- if (tokenPrice === 0 || wethPrice === 0)
47
+ // Calculate execution price from the quote
48
+ // Format amounts to decimals
49
+ const amountInFloat = parseFloat(formatUnits(amountIn, zeroForOne ? currency0Decimals : currency1Decimals));
50
+ const amountOutFloat = parseFloat(formatUnits(amountOut, zeroForOne ? currency1Decimals : currency0Decimals));
51
+ if (amountInFloat === 0 || amountOutFloat === 0)
114
52
  return undefined;
115
- // Calculate execution rate (how many output per input)
116
- const executionRate = amountOutFormatted / amountInFormatted;
117
- // Determine swap direction and calculate market rate
118
- const inputIsToken = zeroForOne ? currency0IsToken : !currency0IsToken;
119
- // Calculate market spot rate (output per input at market prices)
120
- const marketRate = inputIsToken
121
- ? tokenPrice / wethPrice // Token → WETH
122
- : wethPrice / tokenPrice; // WETH → Token
123
- // Getting better or equal rate than market - minimal impact
124
- if (executionRate >= marketRate) {
125
- return 0.1;
53
+ // Execution price depends on swap direction
54
+ let executionPrice;
55
+ if (zeroForOne) {
56
+ // Swapping token0 -> token1
57
+ // Execution price = token1 received / token0 given = token1/token0
58
+ executionPrice = amountOutFloat / amountInFloat;
126
59
  }
127
- // Getting worse rate than market - calculate actual slippage
128
- const impact = (1 - executionRate / marketRate) * 100;
60
+ else {
61
+ // Swapping token1 -> token0
62
+ // Execution price = token0 received / token1 given = token0/token1
63
+ // Convert to token1/token0 to compare with spot price
64
+ executionPrice = 1 / (amountOutFloat / amountInFloat);
65
+ }
66
+ // Calculate price impact: |spotPrice - executionPrice| / spotPrice * 100
67
+ // For zeroForOne: we're buying token1, so price moves up -> execution > spot
68
+ // For oneForZero: we're buying token0, so price (token1/token0) moves down -> execution < spot
69
+ const impact = Math.abs((spotPrice - executionPrice) / spotPrice) * 100;
70
+ // Return impact in basis points-like format (as percentage)
129
71
  return impact;
130
72
  }
131
73
  catch (error) {
@@ -138,6 +80,7 @@ const calculatePriceImpact = (amountIn, amountOut, currency0, currency1, currenc
138
80
  // ============================================================================
139
81
  /**
140
82
  * @description Quote a swap on Uniswap V4 by reading from the quoter contract
83
+ * Uses a single multicall for optimal performance when fetching quote, pool state, and hook fees
141
84
  * @param params Quote parameters including pool key and amount
142
85
  * @returns Quote result with output amount, gas estimate, price impact, and hook fees
143
86
  */
@@ -145,16 +88,22 @@ export const quoteV4Read = async (params) => {
145
88
  if (!params.publicClient) {
146
89
  throw new Error("publicClient is required for read method");
147
90
  }
148
- const { publicClient, poolKey, zeroForOne, amountIn, hookData = "0x", pricing, currency0Decimals = 18, currency1Decimals = 18, tokenAddress, } = params;
91
+ const { publicClient, poolKey, zeroForOne, amountIn, hookData = "0x", currency0Decimals = 18, currency1Decimals = 18, calculatePriceImpact: shouldCalculatePriceImpact = true, } = params;
149
92
  const chainId = publicClient.chain?.id;
150
93
  if (!chainId)
151
94
  throw new Error("Chain ID not found on public client");
152
95
  const quoterAddress = UNISWAP_V4_QUOTER(chainId);
153
96
  if (!quoterAddress)
154
97
  throw new Error(`V4 Quoter address not found for chain ID ${chainId}`);
155
- // Fetch hook fees and quote in parallel
156
- const [{ result }, hookFees] = await Promise.all([
157
- publicClient.simulateContract({
98
+ const stateViewAddress = UNISWAP_V4_STATE_VIEW(chainId);
99
+ if (!stateViewAddress)
100
+ throw new Error(`V4 StateView address not found for chain ID ${chainId}`);
101
+ // Prepare pool ID for pool state and hook fee queries
102
+ const poolId = getPoolId(poolKey);
103
+ // Build multicall contracts array
104
+ const contracts = [
105
+ // Contract 0: Quote
106
+ {
158
107
  address: quoterAddress,
159
108
  abi: V4Quoter,
160
109
  functionName: "quoteExactInputSingle",
@@ -172,15 +121,80 @@ export const quoteV4Read = async (params) => {
172
121
  hookData,
173
122
  },
174
123
  ],
175
- }),
176
- getHookFees(publicClient, poolKey),
177
- ]);
178
- // The quoter returns [amountOut: bigint, gasEstimate: bigint]
179
- const [amountOut, gasEstimate] = result;
180
- // Calculate price impact if pricing and token address are available
181
- const priceImpactBps = pricing && tokenAddress
182
- ? calculatePriceImpact(amountIn, amountOut, poolKey.currency0, poolKey.currency1, currency0Decimals, currency1Decimals, tokenAddress, pricing, zeroForOne)
183
- : undefined;
124
+ },
125
+ // Contract 1: Pool state (sqrtPriceX96) - only if calculating price impact
126
+ ...(shouldCalculatePriceImpact
127
+ ? [
128
+ {
129
+ address: stateViewAddress,
130
+ abi: StateView,
131
+ functionName: "getSlot0",
132
+ args: [poolId],
133
+ },
134
+ ]
135
+ : []),
136
+ // Contracts 2-3: Static hook fees
137
+ {
138
+ address: poolKey.hooks,
139
+ abi: IClankerHookStaticFee,
140
+ functionName: "clankerFee",
141
+ args: [poolId],
142
+ },
143
+ {
144
+ address: poolKey.hooks,
145
+ abi: IClankerHookStaticFee,
146
+ functionName: "pairedFee",
147
+ args: [poolId],
148
+ },
149
+ // Contract 4: Dynamic hook fees
150
+ {
151
+ address: poolKey.hooks,
152
+ abi: IClankerHookDynamicFee,
153
+ functionName: "poolConfigVars",
154
+ args: [poolId],
155
+ },
156
+ ];
157
+ // Execute single multicall
158
+ const results = await publicClient.multicall({ contracts });
159
+ // Parse quote result (always at index 0)
160
+ const quoteResult = results[0];
161
+ if (quoteResult.status !== "success") {
162
+ throw new Error("Quote failed");
163
+ }
164
+ const [amountOut, gasEstimate] = quoteResult.result;
165
+ // Parse pool state result (at index 1 if price impact calculation is enabled)
166
+ let priceImpactBps;
167
+ const poolStateIndex = shouldCalculatePriceImpact ? 1 : -1;
168
+ if (shouldCalculatePriceImpact && results[poolStateIndex]?.status === "success") {
169
+ const poolState = results[poolStateIndex].result;
170
+ priceImpactBps = calculatePriceImpact(poolState[0], // sqrtPriceX96
171
+ amountIn, amountOut, currency0Decimals, currency1Decimals, zeroForOne);
172
+ }
173
+ // Parse hook fees (indices adjust based on whether pool state was fetched)
174
+ const hookFeeBaseIndex = shouldCalculatePriceImpact ? 2 : 1;
175
+ const staticFeeResults = [
176
+ results[hookFeeBaseIndex], // clankerFee
177
+ results[hookFeeBaseIndex + 1], // pairedFee
178
+ ];
179
+ const dynamicFeeResult = results[hookFeeBaseIndex + 2]; // poolConfigVars
180
+ let hookFees;
181
+ // Try static fees first
182
+ if (staticFeeResults[0]?.status === "success" && staticFeeResults[1]?.status === "success") {
183
+ hookFees = {
184
+ type: "static",
185
+ clankerFee: Number(staticFeeResults[0].result),
186
+ pairedFee: Number(staticFeeResults[1].result),
187
+ };
188
+ }
189
+ // Try dynamic fees
190
+ else if (dynamicFeeResult?.status === "success") {
191
+ const config = dynamicFeeResult.result;
192
+ hookFees = {
193
+ type: "dynamic",
194
+ baseFee: Number(config.baseFee),
195
+ maxLpFee: Number(config.maxLpFee),
196
+ };
197
+ }
184
198
  return {
185
199
  amountOut,
186
200
  gasEstimate,
@@ -1 +1 @@
1
- {"version":3,"file":"v4.js","sourceRoot":"","sources":["../../../src/quote/v4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v4.js","sourceRoot":"","sources":["../../../src/quote/v4.ts"],"names":[],"mappings":"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"}
package/dist/esm/stake.js CHANGED
@@ -134,7 +134,7 @@ export class Stake {
134
134
  // Use forwarder's executeMulticall for meta-transaction support
135
135
  const calls = tokenAddresses.map((tokenAddress) => ({
136
136
  target: this.stakingAddress,
137
- allowFailure: false,
137
+ allowFailure: true,
138
138
  value: 0n,
139
139
  callData: encodeFunctionData({
140
140
  abi: LevrStaking_v1,
@@ -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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"}
@@ -1,162 +1,84 @@
1
1
  import { erc20Abi } from "viem";
2
2
  import { IClankerAirdrop } from "./abis/index.js";
3
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) {
4
+ import { GET_CLANKER_AIRDROP_ADDRESS } from "./constants.js";
5
+ export async function getTreasuryAirdropStatus(publicClient, clankerToken, treasury, tokenDecimals, tokenUsdPrice) {
9
6
  const chainId = publicClient.chain?.id;
10
7
  const airdropAddress = GET_CLANKER_AIRDROP_ADDRESS(chainId);
11
- if (!airdropAddress)
8
+ if (!airdropAddress) {
12
9
  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],
10
+ }
11
+ try {
12
+ const currentBlock = await publicClient.getBlockNumber();
13
+ const blocksToSearch = 100000n;
14
+ const fromBlock = currentBlock > blocksToSearch ? currentBlock - blocksToSearch : 0n;
15
+ const logs = await publicClient.getLogs({
16
+ address: airdropAddress,
17
+ event: {
18
+ type: "event",
19
+ name: "AirdropCreated",
20
+ inputs: [
21
+ { name: "token", type: "address", indexed: true },
22
+ { name: "admin", type: "address", indexed: true },
23
+ { name: "merkleRoot", type: "bytes32", indexed: false },
24
+ { name: "supply", type: "uint256", indexed: false },
25
+ { name: "lockupDuration", type: "uint256", indexed: false },
26
+ { name: "vestingDuration", type: "uint256", indexed: false },
27
+ ],
28
+ },
29
+ args: {
30
+ token: clankerToken,
23
31
  },
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
- }
32
+ fromBlock,
33
+ toBlock: "latest",
34
+ });
35
+ if (logs.length === 0) {
36
+ return null;
60
37
  }
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
- });
38
+ const latestLog = logs[logs.length - 1];
39
+ const { supply } = latestLog.args;
40
+ const allocatedAmount = supply;
41
+ const results = await publicClient.multicall({
42
+ contracts: [
43
+ {
44
+ address: airdropAddress,
45
+ abi: IClankerAirdrop,
46
+ functionName: "amountAvailableToClaim",
47
+ args: [clankerToken, treasury, allocatedAmount],
48
+ },
49
+ {
50
+ address: clankerToken,
51
+ abi: erc20Abi,
52
+ functionName: "balanceOf",
53
+ args: [treasury],
54
+ },
55
+ ],
56
+ allowFailure: false,
57
+ });
58
+ const [availableAmount, treasuryBalance] = results;
59
+ if (availableAmount === 0n) {
60
+ const isAlreadyClaimed = treasuryBalance >= allocatedAmount;
61
+ return {
62
+ availableAmount: formatBalanceWithUsd(0n, tokenDecimals, tokenUsdPrice),
63
+ allocatedAmount: formatBalanceWithUsd(allocatedAmount, tokenDecimals, tokenUsdPrice),
64
+ isAvailable: false,
65
+ proof: [],
66
+ error: isAlreadyClaimed
67
+ ? "Treasury airdrop already claimed"
68
+ : "Airdrop is still locked (lockup period not passed)",
69
+ };
101
70
  }
71
+ return {
72
+ availableAmount: formatBalanceWithUsd(availableAmount, tokenDecimals, tokenUsdPrice),
73
+ allocatedAmount: formatBalanceWithUsd(allocatedAmount, tokenDecimals, tokenUsdPrice),
74
+ isAvailable: true,
75
+ proof: [],
76
+ error: undefined,
77
+ };
102
78
  }
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) {
79
+ catch (error) {
80
+ console.error("Failed to fetch airdrop:", error);
130
81
  return null;
131
82
  }
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
83
  }
162
84
  //# sourceMappingURL=treasury.js.map