levr-sdk 0.3.0 → 0.4.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/IClankerFeeLocker.js +215 -0
- package/dist/esm/abis/IClankerLpLockerFeeConversion.js +26 -0
- package/dist/esm/abis/LevrDeployer_v1.js +86 -0
- package/dist/esm/abis/LevrFactory_v1.js +603 -66
- package/dist/esm/abis/LevrFeeSplitter_v1.js +5 -58
- package/dist/esm/abis/LevrGovernor_v1.js +215 -14
- package/dist/esm/abis/LevrStakedToken_v1.js +15 -0
- package/dist/esm/abis/LevrStaking_v1.js +318 -63
- package/dist/esm/abis/LevrTreasury_v1.js +34 -38
- package/dist/esm/abis/index.js +2 -0
- package/dist/esm/airdrop.js +29 -14
- package/dist/esm/airdrop.js.map +1 -1
- package/dist/esm/build-calldatas-v4.js +2 -1
- package/dist/esm/build-calldatas-v4.js.map +1 -1
- package/dist/esm/build-clanker-v4.js +6 -1
- package/dist/esm/build-clanker-v4.js.map +1 -1
- package/dist/esm/client/hook/use-project.js +6 -3
- package/dist/esm/client/hook/use-project.js.map +1 -1
- package/dist/esm/client/hook/use-register.js +1 -1
- package/dist/esm/client/hook/use-stake.js +1 -1
- package/dist/esm/client/levr-provider.js +43 -72
- package/dist/esm/client/levr-provider.js.map +1 -1
- package/dist/esm/client/query-keys.js +1 -1
- package/dist/esm/client/query-keys.js.map +1 -1
- package/dist/esm/constants/clanker.js +84 -0
- package/dist/esm/constants/clanker.js.map +1 -0
- package/dist/esm/constants/config.js +71 -0
- package/dist/esm/constants/config.js.map +1 -0
- package/dist/esm/constants/index.js +52 -0
- package/dist/esm/constants/index.js.map +1 -0
- package/dist/esm/constants/levr.js +34 -0
- package/dist/esm/constants/levr.js.map +1 -0
- package/dist/esm/constants/uniswap.js +86 -0
- package/dist/esm/constants/uniswap.js.map +1 -0
- package/dist/esm/deploy-v4.js +1 -1
- package/dist/esm/factory.js +84 -7
- package/dist/esm/factory.js.map +1 -1
- package/dist/esm/fee-receivers.js +1 -1
- package/dist/esm/fee-splitter.js +1 -1
- package/dist/esm/governance.js +4 -3
- package/dist/esm/governance.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/pool-key.js +1 -1
- package/dist/esm/pool.js +1 -1
- package/dist/esm/project.js +194 -55
- package/dist/esm/project.js.map +1 -1
- package/dist/esm/proposal.js +1 -0
- package/dist/esm/proposal.js.map +1 -1
- package/dist/esm/quote/v4.js +1 -1
- package/dist/esm/schema/levr.schema.js +37 -10
- package/dist/esm/schema/levr.schema.js.map +1 -1
- package/dist/esm/stake.js +137 -61
- package/dist/esm/stake.js.map +1 -1
- package/dist/esm/swap-v4.js +1 -1
- package/dist/esm/usd-price.js +1 -1
- package/dist/esm/user.js +13 -6
- package/dist/esm/user.js.map +1 -1
- package/dist/esm/util.js +58 -2
- package/dist/esm/util.js.map +1 -1
- package/dist/esm/vault.js +1 -1
- package/dist/types/abis/IClankerFeeLocker.d.ts +169 -0
- package/dist/types/abis/IClankerLpLockerFeeConversion.d.ts +20 -0
- package/dist/types/abis/LevrDeployer_v1.d.ts +67 -0
- package/dist/types/abis/LevrFactory_v1.d.ts +454 -39
- package/dist/types/abis/LevrFeeSplitter_v1.d.ts +4 -44
- package/dist/types/abis/LevrGovernor_v1.d.ts +172 -14
- package/dist/types/abis/LevrStakedToken_v1.d.ts +12 -0
- package/dist/types/abis/LevrStaking_v1.d.ts +258 -61
- package/dist/types/abis/LevrTreasury_v1.d.ts +29 -31
- package/dist/types/abis/index.d.ts +2 -0
- package/dist/types/airdrop.d.ts +2 -1
- package/dist/types/airdrop.d.ts.map +1 -1
- package/dist/types/build-calldatas-v4.d.ts +1 -0
- package/dist/types/build-calldatas-v4.d.ts.map +1 -1
- package/dist/types/build-clanker-v4.d.ts +2 -1
- package/dist/types/build-clanker-v4.d.ts.map +1 -1
- package/dist/types/client/hook/use-factory.d.ts +2 -0
- package/dist/types/client/hook/use-factory.d.ts.map +1 -1
- package/dist/types/client/hook/use-project.d.ts.map +1 -1
- package/dist/types/client/levr-provider.d.ts.map +1 -1
- package/dist/types/client/query-keys.d.ts +1 -1
- package/dist/types/client/query-keys.d.ts.map +1 -1
- package/dist/types/constants/clanker.d.ts +31 -0
- package/dist/types/constants/clanker.d.ts.map +1 -0
- package/dist/types/constants/config.d.ts +71 -0
- package/dist/types/constants/config.d.ts.map +1 -0
- package/dist/types/constants/index.d.ts +35 -0
- package/dist/types/constants/index.d.ts.map +1 -0
- package/dist/types/constants/levr.d.ts +17 -0
- package/dist/types/constants/levr.d.ts.map +1 -0
- package/dist/types/constants/uniswap.d.ts +37 -0
- package/dist/types/constants/uniswap.d.ts.map +1 -0
- package/dist/types/factory.d.ts +20 -3
- package/dist/types/factory.d.ts.map +1 -1
- package/dist/types/fee-receivers.d.ts +17 -177
- package/dist/types/fee-receivers.d.ts.map +1 -1
- package/dist/types/governance.d.ts +2 -0
- package/dist/types/governance.d.ts.map +1 -1
- package/dist/types/project.d.ts +17 -2
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/proposal.d.ts +344 -28
- package/dist/types/proposal.d.ts.map +1 -1
- package/dist/types/schema/levr.schema.d.ts +21 -0
- package/dist/types/schema/levr.schema.d.ts.map +1 -1
- package/dist/types/stake.d.ts +20 -34
- package/dist/types/stake.d.ts.map +1 -1
- package/dist/types/user.d.ts +813 -1
- package/dist/types/user.d.ts.map +1 -1
- package/dist/types/util.d.ts +4 -0
- package/dist/types/util.d.ts.map +1 -1
- package/package.json +2 -1
- package/dist/esm/constants.js +0 -300
- package/dist/esm/constants.js.map +0 -1
- package/dist/types/constants.d.ts +0 -177
- package/dist/types/constants.d.ts.map +0 -1
package/dist/esm/airdrop.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { StandardMerkleTree } from "@openzeppelin/merkle-tree";
|
|
2
2
|
import ClankerAirdropV2 from "./abis/ClankerAirdropV2.js";
|
|
3
3
|
import { formatBalanceWithUsd } from "./balance.js";
|
|
4
|
-
import { GET_CLANKER_AIRDROP_ADDRESS } from "./constants.js";
|
|
4
|
+
import { GET_CLANKER_AIRDROP_ADDRESS } from "./constants/index.js";
|
|
5
5
|
import { retrieveMerkleTreeFromIPFS } from "./ipfs-merkle-tree.js";
|
|
6
6
|
export async function getAirdropStatus(publicClient, clankerToken, treasury, tokenDecimals, tokenUsdPrice, ipfsSearchUrl, // Full URL to /api/ipfs-search
|
|
7
|
-
ipfsJsonUrl // Full URL to /api/ipfs-json
|
|
7
|
+
ipfsJsonUrl, // Full URL to /api/ipfs-json
|
|
8
|
+
maxBlocksToSearch // Optional: limit block range for getLogs (default: 100k)
|
|
8
9
|
) {
|
|
9
10
|
const chainId = publicClient.chain?.id;
|
|
10
11
|
const airdropAddress = GET_CLANKER_AIRDROP_ADDRESS(chainId);
|
|
@@ -65,22 +66,36 @@ ipfsJsonUrl // Full URL to /api/ipfs-json
|
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
// Get current block number for claim event search
|
|
69
|
+
// PERFORMANCE FIX: Reduce block search range to prevent timeouts
|
|
70
|
+
// Base produces ~2 blocks/sec, so:
|
|
71
|
+
// - 50k blocks = ~18 hours (covers recent airdrops)
|
|
72
|
+
// - 100k blocks = ~1.5 days
|
|
73
|
+
// - Airdrops are typically claimed within hours of deployment
|
|
68
74
|
const currentBlockNumber = await publicClient.getBlockNumber();
|
|
69
|
-
const blocksToSearch =
|
|
75
|
+
const blocksToSearch = maxBlocksToSearch ?? 50000n; // Default: last 50k blocks (~18 hours on Base)
|
|
70
76
|
const fromBlock = currentBlockNumber > blocksToSearch ? currentBlockNumber - blocksToSearch : 0n;
|
|
71
77
|
// Get AirdropClaimed events to check who has actually claimed
|
|
72
78
|
const airdropClaimedEvent = ClankerAirdropV2.find((item) => item.type === "event" && item.name === "AirdropClaimed");
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
let claimLogs = [];
|
|
80
|
+
try {
|
|
81
|
+
claimLogs = airdropClaimedEvent
|
|
82
|
+
? await publicClient.getLogs({
|
|
83
|
+
address: airdropAddress,
|
|
84
|
+
event: airdropClaimedEvent,
|
|
85
|
+
args: {
|
|
86
|
+
token: clankerToken,
|
|
87
|
+
},
|
|
88
|
+
fromBlock,
|
|
89
|
+
toBlock: "latest",
|
|
90
|
+
})
|
|
91
|
+
: [];
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
// If getLogs times out, continue without claim status
|
|
95
|
+
// This is acceptable - we can still show allocated amounts
|
|
96
|
+
console.warn("[AIRDROP] Failed to fetch claim logs (timeout or RPC limit):", error.message);
|
|
97
|
+
claimLogs = [];
|
|
98
|
+
}
|
|
84
99
|
// Track which addresses have claimed
|
|
85
100
|
const claimedAddresses = new Set(claimLogs.map((log) => log.args.user.toLowerCase()));
|
|
86
101
|
// Batch check available amounts for all recipients
|
package/dist/esm/airdrop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airdrop.js","sourceRoot":"","sources":["../../src/airdrop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAA+B,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAmB5F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAA6B,EAC7B,YAA2B,EAC3B,QAAuB,EACvB,aAAqB,EACrB,aAA4B,EAC5B,aAAsB,EAAE,+BAA+B;AACvD,WAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"airdrop.js","sourceRoot":"","sources":["../../src/airdrop.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ export const buildCalldatasV4 = async ({ c, clanker, publicClient, wallet, facto
|
|
|
37
37
|
functionName: "prepareForDeployment",
|
|
38
38
|
data: result.data,
|
|
39
39
|
});
|
|
40
|
-
const { config, merkleTree } = buildClankerV4({
|
|
40
|
+
const { config, merkleTree, liquidityPercentage } = buildClankerV4({
|
|
41
41
|
c,
|
|
42
42
|
treasuryAddress: treasury,
|
|
43
43
|
deployer,
|
|
@@ -95,6 +95,7 @@ export const buildCalldatasV4 = async ({ c, clanker, publicClient, wallet, facto
|
|
|
95
95
|
totalValue: devBuyValue, // Total ETH to send with executeMulticall
|
|
96
96
|
merkleTree,
|
|
97
97
|
treasury,
|
|
98
|
+
liquidityPercentage,
|
|
98
99
|
};
|
|
99
100
|
};
|
|
100
101
|
//# sourceMappingURL=build-calldatas-v4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-calldatas-v4.js","sourceRoot":"","sources":["../../src/build-calldatas-v4.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAC/D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"build-calldatas-v4.js","sourceRoot":"","sources":["../../src/build-calldatas-v4.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createMerkleTree, FEE_CONFIGS } from "clanker-sdk";
|
|
2
2
|
import { omit } from "lodash";
|
|
3
|
-
import { LEVR_TEAM_LP_FEE_PERCENTAGE, LEVR_TEAM_WALLET, STAKING_REWARDS, STATIC_FEE_TIERS, TREASURY_AIRDROP_AMOUNTS, VAULT_LOCKUP_PERIODS, VAULT_VESTING_PERIODS, } from "./constants.js";
|
|
3
|
+
import { LEVR_TEAM_LP_FEE_PERCENTAGE, LEVR_TEAM_WALLET, STAKING_REWARDS, STATIC_FEE_TIERS, TREASURY_AIRDROP_AMOUNTS, VAULT_LOCKUP_PERIODS, VAULT_VESTING_PERIODS, } from "./constants/index.js";
|
|
4
|
+
import { calculateAllocationBreakdown, } from "./schema/index.js";
|
|
4
5
|
export const buildClankerV4 = ({ c, treasuryAddress, deployer, staking, chainId, }) => {
|
|
5
6
|
const { airdrop, merkleTree } = getAirdrop(c.airdrop, treasuryAddress, c.treasuryFunding);
|
|
6
7
|
const devBuy = getDevBuy(c.devBuy);
|
|
@@ -8,6 +9,9 @@ export const buildClankerV4 = ({ c, treasuryAddress, deployer, staking, chainId,
|
|
|
8
9
|
const fees = getFees(c.fees);
|
|
9
10
|
const rewards = getRewards(deployer, staking, c.stakingReward, c.rewards);
|
|
10
11
|
const vault = getVault(c.vault);
|
|
12
|
+
const { liquidityPercentage } = calculateAllocationBreakdown(c, {
|
|
13
|
+
fallbackTreasuryPercentage: 0,
|
|
14
|
+
});
|
|
11
15
|
const config = {
|
|
12
16
|
...omit(c, "treasuryFunding", "stakingReward"),
|
|
13
17
|
tokenAdmin: deployer,
|
|
@@ -23,6 +27,7 @@ export const buildClankerV4 = ({ c, treasuryAddress, deployer, staking, chainId,
|
|
|
23
27
|
return {
|
|
24
28
|
config,
|
|
25
29
|
merkleTree,
|
|
30
|
+
liquidityPercentage,
|
|
26
31
|
};
|
|
27
32
|
};
|
|
28
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-clanker-v4.js","sourceRoot":"","sources":["../../src/build-clanker-v4.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"build-clanker-v4.js","sourceRoot":"","sources":["../../src/build-clanker-v4.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export function useStaticProjectQuery({ clankerToken, enabled: e = true, }) {
|
|
|
13
13
|
const chainId = publicClient?.chain?.id;
|
|
14
14
|
const enabled = !!publicClient && !!clankerToken && !!chainId && e;
|
|
15
15
|
return useQuery({
|
|
16
|
-
queryKey: queryKeys.staticProject(clankerToken, chainId),
|
|
16
|
+
queryKey: queryKeys.staticProject(clankerToken, chainId, userAddress ?? null),
|
|
17
17
|
enabled,
|
|
18
18
|
queryFn: () => getStaticProject({
|
|
19
19
|
publicClient: publicClient,
|
|
@@ -36,13 +36,16 @@ export function useProjectQuery({ clankerToken, oraclePublicClient, enabled: e =
|
|
|
36
36
|
clankerToken,
|
|
37
37
|
enabled: e,
|
|
38
38
|
});
|
|
39
|
-
const
|
|
39
|
+
const registeredStaticProject = staticProject?.isRegistered
|
|
40
|
+
? staticProject
|
|
41
|
+
: null;
|
|
42
|
+
const enabled = !!publicClient && !!clankerToken && !!chainId && !!registeredStaticProject && e;
|
|
40
43
|
const query = useQuery({
|
|
41
44
|
queryKey: queryKeys.project(clankerToken, chainId),
|
|
42
45
|
enabled,
|
|
43
46
|
queryFn: () => getProject({
|
|
44
47
|
publicClient: publicClient,
|
|
45
|
-
staticProject:
|
|
48
|
+
staticProject: registeredStaticProject,
|
|
46
49
|
oraclePublicClient: oraclePublicClient,
|
|
47
50
|
}),
|
|
48
51
|
staleTime: 30000, // 30 seconds cache for dynamic data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-project.js","sourceRoot":"","sources":["../../../../src/client/hook/use-project.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAGnD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAOzC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,YAAY,EACZ,OAAO,EAAE,CAAC,GAAG,IAAI,GACW;IAC5B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IACtC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAAA;IAC7C,MAAM,OAAO,GAAG,YAAY,EAAE,KAAK,EAAE,EAAE,CAAA;IAEvC,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAA;IAElE,OAAO,QAAQ,CAAuB;QACpC,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,YAAa,EAAE,OAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"use-project.js","sourceRoot":"","sources":["../../../../src/client/hook/use-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { useMutation } from "@tanstack/react-query";
|
|
|
3
3
|
import { decodeEventLog, encodeFunctionData } from "viem";
|
|
4
4
|
import { usePublicClient, useWalletClient } from "wagmi";
|
|
5
5
|
import { LevrFactory_v1, LevrForwarder_v1 } from "../../abis/index.js";
|
|
6
|
-
import { GET_FACTORY_ADDRESS } from "../../constants.js";
|
|
6
|
+
import { GET_FACTORY_ADDRESS } from "../../constants/index.js";
|
|
7
7
|
/**
|
|
8
8
|
* Registers a project with the Levr factory.
|
|
9
9
|
* @param factoryAddress - The address of the Levr factory.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { useMutation } from "@tanstack/react-query";
|
|
3
3
|
import { useMemo } from "react";
|
|
4
4
|
import { useChainId, usePublicClient, useWalletClient } from "wagmi";
|
|
5
|
-
import { WETH } from "../../constants.js";
|
|
5
|
+
import { WETH } from "../../constants/index.js";
|
|
6
6
|
import { Stake } from "../../stake.js";
|
|
7
7
|
import { needsApproval } from "../../util.js";
|
|
8
8
|
import { useLevrContext } from "../levr-provider.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useQueryClient } from "@tanstack/react-query";
|
|
4
|
-
import React, { createContext, useContext, useEffect, useMemo } from "react";
|
|
4
|
+
import React, { createContext, useCallback, useContext, useEffect, useMemo } from "react";
|
|
5
5
|
import { base } from "viem/chains";
|
|
6
6
|
import { useAccount, useChainId } from "wagmi";
|
|
7
7
|
import { getPublicClient } from "../util.js";
|
|
@@ -44,85 +44,56 @@ export function LevrProvider({ children, enabled = true, oracleChainId = base.id
|
|
|
44
44
|
enabled,
|
|
45
45
|
});
|
|
46
46
|
const factoryConfig = useFactoryConfigQuery({ enabled });
|
|
47
|
+
const projectRefetch = project.refetch;
|
|
48
|
+
const userRefetch = userQuery.refetch;
|
|
49
|
+
const poolRefetch = poolQuery.refetch;
|
|
50
|
+
const proposalsRefetch = proposalsQuery.refetch;
|
|
51
|
+
const airdropRefetch = airdropStatus.refetch;
|
|
52
|
+
const refetchAll = useCallback(async () => {
|
|
53
|
+
await queryClient.invalidateQueries({ refetchType: "active" });
|
|
54
|
+
}, [queryClient]);
|
|
55
|
+
const runRefetchChain = useCallback(async (...refetchFns) => {
|
|
56
|
+
for (const refetchFn of refetchFns) {
|
|
57
|
+
if (!refetchFn)
|
|
58
|
+
continue;
|
|
59
|
+
await refetchFn();
|
|
60
|
+
}
|
|
61
|
+
}, []);
|
|
47
62
|
// ========================================
|
|
48
63
|
// REFETCH METHODS
|
|
49
64
|
// ========================================
|
|
50
65
|
const refetchMethods = useMemo(() => ({
|
|
51
66
|
// Core refetches
|
|
52
|
-
all:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
58
|
-
project: async () => {
|
|
59
|
-
await project.refetch();
|
|
60
|
-
},
|
|
61
|
-
pool: async () => {
|
|
62
|
-
await poolQuery.refetch();
|
|
63
|
-
},
|
|
64
|
-
proposals: async () => {
|
|
65
|
-
await proposalsQuery.refetch();
|
|
66
|
-
},
|
|
67
|
+
all: refetchAll,
|
|
68
|
+
user: () => runRefetchChain(userRefetch),
|
|
69
|
+
project: () => runRefetchChain(projectRefetch),
|
|
70
|
+
pool: () => runRefetchChain(poolRefetch),
|
|
71
|
+
proposals: () => runRefetchChain(proposalsRefetch),
|
|
67
72
|
// Action-based refetches
|
|
68
|
-
afterTrade:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
},
|
|
87
|
-
afterClaim: async () => {
|
|
88
|
-
await userQuery.refetch(); // Balances, claimable rewards changed
|
|
89
|
-
},
|
|
90
|
-
afterAccrue: async () => {
|
|
91
|
-
await Promise.all([
|
|
92
|
-
project.refetch(), // Outstanding rewards changed (pool-level)
|
|
93
|
-
]);
|
|
94
|
-
},
|
|
95
|
-
afterVote: async () => {
|
|
96
|
-
await Promise.all([
|
|
97
|
-
userQuery.refetch(), // User governance data (vote receipt)
|
|
98
|
-
proposalsQuery.refetch(), // Proposal votes updated
|
|
99
|
-
]);
|
|
100
|
-
},
|
|
101
|
-
afterProposal: async () => {
|
|
102
|
-
await Promise.all([
|
|
103
|
-
proposalsQuery.refetch(), // New proposal added
|
|
104
|
-
project.refetch(), // currentCycleId might have changed
|
|
105
|
-
]);
|
|
106
|
-
},
|
|
107
|
-
afterExecute: async () => {
|
|
108
|
-
await Promise.all([
|
|
109
|
-
project.refetch(), // Treasury changed + currentCycleId (new cycle starts)
|
|
110
|
-
proposalsQuery.refetch(), // Proposal executed
|
|
111
|
-
]);
|
|
112
|
-
},
|
|
113
|
-
afterAirdrop: async () => {
|
|
114
|
-
await Promise.all([
|
|
115
|
-
project.refetch(), // Treasury changed
|
|
116
|
-
airdropStatus.refetch(), // Treasury balance, airdrop status changed
|
|
117
|
-
]);
|
|
118
|
-
},
|
|
119
|
-
}), [queryClient, project, userQuery, poolQuery, proposalsQuery, airdropStatus]);
|
|
73
|
+
afterTrade: () => runRefetchChain(userRefetch, poolRefetch, projectRefetch),
|
|
74
|
+
afterStake: () => runRefetchChain(userRefetch, projectRefetch),
|
|
75
|
+
afterUnstake: () => runRefetchChain(userRefetch, projectRefetch),
|
|
76
|
+
afterClaim: () => runRefetchChain(userRefetch, projectRefetch),
|
|
77
|
+
afterAccrue: () => runRefetchChain(projectRefetch),
|
|
78
|
+
afterVote: () => runRefetchChain(userRefetch, proposalsRefetch),
|
|
79
|
+
afterProposal: () => runRefetchChain(proposalsRefetch, projectRefetch),
|
|
80
|
+
afterExecute: () => runRefetchChain(projectRefetch, proposalsRefetch),
|
|
81
|
+
afterAirdrop: () => runRefetchChain(projectRefetch, airdropRefetch),
|
|
82
|
+
}), [
|
|
83
|
+
refetchAll,
|
|
84
|
+
runRefetchChain,
|
|
85
|
+
userRefetch,
|
|
86
|
+
projectRefetch,
|
|
87
|
+
poolRefetch,
|
|
88
|
+
proposalsRefetch,
|
|
89
|
+
airdropRefetch,
|
|
90
|
+
]);
|
|
120
91
|
// Auto-refetch on wallet/chain change
|
|
121
92
|
useEffect(() => {
|
|
122
|
-
if (enabled)
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}, [userAddress, chainId]);
|
|
93
|
+
if (!enabled)
|
|
94
|
+
return;
|
|
95
|
+
refetchAll();
|
|
96
|
+
}, [enabled, refetchAll, userAddress, chainId]);
|
|
126
97
|
const contextValue = useMemo(() => ({
|
|
127
98
|
clankerToken,
|
|
128
99
|
setClankerToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"levr-provider.js","sourceRoot":"","sources":["../../../src/client/levr-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"levr-provider.js","sourceRoot":"","sources":["../../../src/client/levr-provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export const queryKeys = {
|
|
|
7
7
|
/**
|
|
8
8
|
* Static project query key (doesn't change frequently - includes feeSplitter config)
|
|
9
9
|
*/
|
|
10
|
-
staticProject: (token, chainId) => ['static-project', token, chainId],
|
|
10
|
+
staticProject: (token, chainId, userAddress) => ['static-project', token, chainId, userAddress ?? null],
|
|
11
11
|
/**
|
|
12
12
|
* Project query key (dynamic data - treasury stats, staking stats, etc.)
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-keys.js","sourceRoot":"","sources":["../../../src/client/query-keys.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAIZ;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;;OAEG;IACH,aAAa,EAAE,CAAC,KAAc,EAAE,OAAe,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"query-keys.js","sourceRoot":"","sources":["../../../src/client/query-keys.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAIZ;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;;OAEG;IACH,aAAa,EAAE,CAAC,KAAc,EAAE,OAAe,EAAE,WAA4B,EAAE,EAAE,CAC/E,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,CAAU;IAElE;;OAEG;IACH,OAAO,EAAE,CAAC,KAAc,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAU;IAElF;;OAEG;IACH,IAAI,EAAE,CAAC,WAAoB,EAAE,KAAc,EAAE,OAAgB,EAAE,QAAiB,EAAE,EAAE,CAClF,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU;IAE1D;;OAEG;IACH,IAAI,EAAE,CAAC,OAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAU;IAEvD;;OAEG;IACH,OAAO,EAAE,CAAC,OAAgB,EAAE,aAAuB,EAAE,EAAE,CACrD,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAU;IAE9C,YAAY,EAAE,CAAC,YAAsB,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,YAAY,CAAU;IAElF;;OAEG;IACH,UAAU,EAAE;QACV,QAAQ,EAAE,CAAC,eAAyB,EAAE,UAAmB,EAAE,EAAE,CAC3D,CAAC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,CAAU;QAClE,iBAAiB,EAAE,CAAC,eAAyB,EAAE,OAAgB,EAAE,EAAE,CACjE,CAAC,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,OAAO,CAAU;QACxE,MAAM,EAAE,CAAC,eAAyB,EAAE,OAAgB,EAAE,EAAE,CACtD,CAAC,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAU;QAC7D,eAAe,EAAE,CAAC,eAAyB,EAAE,OAAgB,EAAE,WAAqB,EAAE,EAAE,CACtF,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,CAAU;KACpF;IAED;;OAEG;IACH,SAAS,EAAE,CAAC,OAAgB,EAAE,OAAgB,EAAE,WAAqB,EAAE,EAAE,CACvE,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAU;IAEvD,QAAQ,EAAE,CAAC,OAAgB,EAAE,OAAgB,EAAE,UAAmB,EAAE,EAAE,CACpE,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAU;IAErD;;OAEG;IACH,QAAQ,EAAE,CAAC,cAAwB,EAAE,OAAgB,EAAE,EAAE,CACvD,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAU;IAEhD;;OAEG;IACH,IAAI,EAAE;QACJ,KAAK,EAAE,CACL,OAAgB,EAChB,OAAiB,EACjB,UAAoB,EACpB,QAAiB,EACjB,gBAAyB,EACzB,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAU;KAC1F;IAED;;OAEG;IACH,aAAa,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAU;IAEzE;;OAEG;IACH,KAAK,EAAE,CAAC,KAAe,EAAE,OAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAU;CACxE,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { CLANKERS } from 'clanker-sdk';
|
|
2
|
+
import { anvil, base, baseSepolia } from 'viem/chains';
|
|
3
|
+
/**
|
|
4
|
+
* Get the LP locker address for a given chain ID
|
|
5
|
+
* @param chainId - The chain ID
|
|
6
|
+
* @returns The LP locker address
|
|
7
|
+
*/
|
|
8
|
+
export const GET_LP_LOCKER_ADDRESS = (chainId) => {
|
|
9
|
+
if (!chainId)
|
|
10
|
+
return undefined;
|
|
11
|
+
const chainMap = {
|
|
12
|
+
// In our dev monorepo, we have a clanker_v4_anvil contract, but in the remote package, it's not defined
|
|
13
|
+
[anvil.id]: CLANKERS?.clanker_v4_anvil?.related?.locker,
|
|
14
|
+
[base.id]: CLANKERS.clanker_v4.related.locker,
|
|
15
|
+
[baseSepolia.id]: CLANKERS.clanker_v4_sepolia.related.locker,
|
|
16
|
+
};
|
|
17
|
+
return chainMap?.[chainId];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Get the Fee locker address for a given chain ID
|
|
21
|
+
* @param chainId - The chain ID
|
|
22
|
+
* @returns The Fee locker address
|
|
23
|
+
*/
|
|
24
|
+
export const GET_FEE_LOCKER_ADDRESS = (chainId) => {
|
|
25
|
+
if (!chainId)
|
|
26
|
+
return undefined;
|
|
27
|
+
const chainMap = {
|
|
28
|
+
// In our dev monorepo, we have a clanker_v4_anvil contract, but in the remote package, it's not defined
|
|
29
|
+
[anvil.id]: CLANKERS?.clanker_v4_anvil?.related?.feeLocker,
|
|
30
|
+
[base.id]: CLANKERS.clanker_v4.related.feeLocker,
|
|
31
|
+
[baseSepolia.id]: CLANKERS.clanker_v4_sepolia.related.feeLocker,
|
|
32
|
+
};
|
|
33
|
+
return chainMap?.[chainId];
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Get the Clanker Factory address for a given chain ID
|
|
37
|
+
* @param chainId - The chain ID
|
|
38
|
+
* @returns The Clanker Factory address (same on Base mainnet and Base Sepolia)
|
|
39
|
+
*/
|
|
40
|
+
export const GET_CLANKER_FACTORY_ADDRESS = (chainId) => {
|
|
41
|
+
if (!chainId)
|
|
42
|
+
return undefined;
|
|
43
|
+
const chainMap = {
|
|
44
|
+
// In our dev monorepo, we have a clanker_v4_anvil contract, but in the remote package, it's not defined
|
|
45
|
+
[anvil.id]: CLANKERS?.clanker_v4_anvil?.factoryAddress,
|
|
46
|
+
// Same address on both Base mainnet (8453) and Base Sepolia (84532)
|
|
47
|
+
[base.id]: '0xE85A59c628F7d27878ACeB4bf3b35733630083a9',
|
|
48
|
+
[baseSepolia.id]: '0xE85A59c628F7d27878ACeB4bf3b35733630083a9',
|
|
49
|
+
};
|
|
50
|
+
return chainMap?.[chainId];
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Get the Clanker Airdrop address for a given chain ID
|
|
54
|
+
* @param chainId - The chain ID
|
|
55
|
+
* @returns The Clanker Airdrop address
|
|
56
|
+
*/
|
|
57
|
+
export const GET_CLANKER_AIRDROP_ADDRESS = (chainId) => {
|
|
58
|
+
if (!chainId)
|
|
59
|
+
return undefined;
|
|
60
|
+
const chainMap = {
|
|
61
|
+
// In our dev monorepo, we have a clanker_v4_anvil contract, but in the remote package, it's not defined
|
|
62
|
+
[anvil.id]: CLANKERS?.clanker_v4_anvil?.related?.airdrop,
|
|
63
|
+
[base.id]: CLANKERS.clanker_v4.related.airdrop,
|
|
64
|
+
[baseSepolia.id]: CLANKERS.clanker_v4_sepolia.related.airdrop,
|
|
65
|
+
};
|
|
66
|
+
return chainMap?.[chainId];
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Get the Vault address for a given chain ID
|
|
70
|
+
* @param chainId - The chain ID
|
|
71
|
+
* @returns The Vault address
|
|
72
|
+
*/
|
|
73
|
+
export const GET_VAULT_ADDRESS = (chainId) => {
|
|
74
|
+
if (!chainId)
|
|
75
|
+
return undefined;
|
|
76
|
+
const chainMap = {
|
|
77
|
+
// In our dev monorepo, we have a clanker_v4_anvil contract, but in the remote package, it's not defined
|
|
78
|
+
[anvil.id]: CLANKERS?.clanker_v4_anvil?.related?.vault,
|
|
79
|
+
[base.id]: CLANKERS.clanker_v4.related.vault,
|
|
80
|
+
[baseSepolia.id]: CLANKERS.clanker_v4_sepolia.related.vault,
|
|
81
|
+
};
|
|
82
|
+
return chainMap?.[chainId];
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=clanker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clanker.js","sourceRoot":"","sources":["../../../src/constants/clanker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Percentage of LP fees allocated to Levr team (0-100)
|
|
3
|
+
* This is automatically included in all deployments via the UI
|
|
4
|
+
*/
|
|
5
|
+
export const LEVR_TEAM_LP_FEE_PERCENTAGE = 2;
|
|
6
|
+
/**
|
|
7
|
+
* Staking rewards in basis points
|
|
8
|
+
* User-facing percentages of LP fees allocated to staking (before team fee is subtracted)
|
|
9
|
+
* Note: Team fee is automatically deducted in the deployment logic
|
|
10
|
+
*/
|
|
11
|
+
export const STAKING_REWARDS = {
|
|
12
|
+
'100%': 10_000, // 100% of rewards to staking
|
|
13
|
+
'90%': 9_000, // 90% of rewards to staking
|
|
14
|
+
'80%': 8_000, // 80% of rewards to staking
|
|
15
|
+
'70%': 7_000, // 70% of rewards to staking
|
|
16
|
+
'60%': 6_000, // 60% of rewards to staking
|
|
17
|
+
'50%': 5_000, // 50% of rewards to staking
|
|
18
|
+
'40%': 4_000, // 40% of rewards to staking
|
|
19
|
+
};
|
|
20
|
+
export const STATIC_FEE_TIERS = {
|
|
21
|
+
'1%': 100,
|
|
22
|
+
'2%': 200,
|
|
23
|
+
'3%': 300,
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Vault lockup period options (in days)
|
|
27
|
+
* Tokens are locked for this period and cannot be claimed
|
|
28
|
+
*/
|
|
29
|
+
export const VAULT_LOCKUP_PERIODS = {
|
|
30
|
+
'30 days': 30,
|
|
31
|
+
'90 days': 90,
|
|
32
|
+
'180 days': 180,
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Vault vesting period options (in days)
|
|
36
|
+
* Linear vesting occurs between end of lockup and end of vesting period
|
|
37
|
+
* 'instant' means tokens are claimable immediately once lockup ends (no vesting period)
|
|
38
|
+
*/
|
|
39
|
+
export const VAULT_VESTING_PERIODS = {
|
|
40
|
+
instant: 0,
|
|
41
|
+
'30 days': 30,
|
|
42
|
+
'180 days': 180,
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Vault allocation percentage options
|
|
46
|
+
* Percentage of total token supply (100B tokens) allocated to vault
|
|
47
|
+
*/
|
|
48
|
+
export const VAULT_PERCENTAGES = {
|
|
49
|
+
'5%': 5,
|
|
50
|
+
'10%': 10,
|
|
51
|
+
'15%': 15,
|
|
52
|
+
'20%': 20,
|
|
53
|
+
'25%': 25,
|
|
54
|
+
'30%': 30,
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Common treasury airdrop amounts in tokens (not wei)
|
|
58
|
+
* First value is used as default in deployV4
|
|
59
|
+
*/
|
|
60
|
+
export const TREASURY_AIRDROP_AMOUNTS = {
|
|
61
|
+
'10%': 10_000_000_000, // 10B tokens (10% of 100B)
|
|
62
|
+
'20%': 20_000_000_000, // 20B tokens (20% of 100B)
|
|
63
|
+
'30%': 30_000_000_000, // 30B tokens (30% of 100B)
|
|
64
|
+
'40%': 40_000_000_000, // 40B tokens (40% of 100B)
|
|
65
|
+
'50%': 50_000_000_000, // 50B tokens (50% of 100B)
|
|
66
|
+
'60%': 60_000_000_000, // 60B tokens (60% of 100B)
|
|
67
|
+
'70%': 70_000_000_000, // 70B tokens (70% of 100B)
|
|
68
|
+
'80%': 80_000_000_000, // 80B tokens (80% of 100B)
|
|
69
|
+
'90%': 90_000_000_000, // 90B tokens (90% of 100B)
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/constants/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAU,CAAA;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,MAAM,EAAE,6BAA6B;IAC7C,KAAK,EAAE,KAAK,EAAE,4BAA4B;IAC1C,KAAK,EAAE,KAAK,EAAE,4BAA4B;IAC1C,KAAK,EAAE,KAAK,EAAE,4BAA4B;IAC1C,KAAK,EAAE,KAAK,EAAE,4BAA4B;IAC1C,KAAK,EAAE,KAAK,EAAE,4BAA4B;IAC1C,KAAK,EAAE,KAAK,EAAE,4BAA4B;CAClC,CAAA;AAEV,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACD,CAAA;AAEV;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,GAAG;CACP,CAAA;AAEV;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,GAAG;CACP,CAAA;AAEV;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;CACD,CAAA;AAEV;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,cAAc,EAAE,2BAA2B;IAClD,KAAK,EAAE,cAAc,EAAE,2BAA2B;IAClD,KAAK,EAAE,cAAc,EAAE,2BAA2B;IAClD,KAAK,EAAE,cAAc,EAAE,2BAA2B;IAClD,KAAK,EAAE,cAAc,EAAE,2BAA2B;IAClD,KAAK,EAAE,cAAc,EAAE,2BAA2B;IAClD,KAAK,EAAE,cAAc,EAAE,2BAA2B;IAClD,KAAK,EAAE,cAAc,EAAE,2BAA2B;IAClD,KAAK,EAAE,cAAc,EAAE,2BAA2B;CAC1C,CAAA"}
|