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,201 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
4
|
+
import React, { createContext, useContext, useEffect, useMemo } from "react";
|
|
5
|
+
import { useAccount, useChainId } from "wagmi";
|
|
6
|
+
import { useBalanceQuery } from "./hook/use-balance.js";
|
|
7
|
+
import { useClankerTokenQuery } from "./hook/use-clanker.js";
|
|
8
|
+
import { useFeeReceiversQuery } from "./hook/use-fee-receivers.js";
|
|
9
|
+
import { useGovernanceQueries } from "./hook/use-governance.js";
|
|
10
|
+
import { useProjectQuery } from "./hook/use-project.js";
|
|
11
|
+
import { useProposalsQuery } from "./hook/use-proposals.js";
|
|
12
|
+
import { useStakingQueries } from "./hook/use-stake.js";
|
|
13
|
+
const LevrContext = createContext(null);
|
|
14
|
+
/**
|
|
15
|
+
* Centralized provider for all Levr blockchain queries
|
|
16
|
+
* Eliminates query duplication and provides unified refetch management
|
|
17
|
+
*/
|
|
18
|
+
export function LevrProvider({ children, enabled = true }) {
|
|
19
|
+
const [clankerToken, setClankerToken] = React.useState(null);
|
|
20
|
+
const queryClient = useQueryClient();
|
|
21
|
+
const { address: userAddress } = useAccount();
|
|
22
|
+
const chainId = useChainId();
|
|
23
|
+
// ========================================
|
|
24
|
+
// USE INTERNAL QUERY HOOKS
|
|
25
|
+
// ========================================
|
|
26
|
+
const project = useProjectQuery({ clankerToken, enabled });
|
|
27
|
+
const tokenData = useClankerTokenQuery({ clankerToken, enabled });
|
|
28
|
+
const balancesQuery = useBalanceQuery({
|
|
29
|
+
clankerToken,
|
|
30
|
+
projectTokenDecimals: project.data?.token.decimals,
|
|
31
|
+
enabled,
|
|
32
|
+
});
|
|
33
|
+
const staking = useStakingQueries({
|
|
34
|
+
clankerToken,
|
|
35
|
+
projectData: project.data,
|
|
36
|
+
enabled,
|
|
37
|
+
});
|
|
38
|
+
const governance = useGovernanceQueries({
|
|
39
|
+
clankerToken,
|
|
40
|
+
projectData: project.data,
|
|
41
|
+
enabled,
|
|
42
|
+
});
|
|
43
|
+
const proposalsQueryResult = useProposalsQuery({
|
|
44
|
+
governorAddress: project.data?.governor,
|
|
45
|
+
tokenDecimals: project.data?.token.decimals,
|
|
46
|
+
enabled,
|
|
47
|
+
});
|
|
48
|
+
const feeReceiversQuery = useFeeReceiversQuery({
|
|
49
|
+
clankerToken,
|
|
50
|
+
enabled,
|
|
51
|
+
});
|
|
52
|
+
// ========================================
|
|
53
|
+
// REFETCH METHODS
|
|
54
|
+
// ========================================
|
|
55
|
+
const refetchMethods = useMemo(() => ({
|
|
56
|
+
all: async () => {
|
|
57
|
+
await queryClient.invalidateQueries({ refetchType: "active" });
|
|
58
|
+
},
|
|
59
|
+
project: async () => {
|
|
60
|
+
await project.refetch();
|
|
61
|
+
},
|
|
62
|
+
balances: async () => {
|
|
63
|
+
await balancesQuery.refetch();
|
|
64
|
+
},
|
|
65
|
+
governance: async () => {
|
|
66
|
+
await Promise.all([
|
|
67
|
+
governance.currentCycleId.refetch(),
|
|
68
|
+
governance.addresses.refetch(),
|
|
69
|
+
governance.airdropStatus.refetch(),
|
|
70
|
+
]);
|
|
71
|
+
},
|
|
72
|
+
staking: async () => {
|
|
73
|
+
await Promise.all([
|
|
74
|
+
staking.allowance.refetch(),
|
|
75
|
+
staking.poolData.refetch(),
|
|
76
|
+
staking.userData.refetch(),
|
|
77
|
+
staking.outstandingRewardsStaking.refetch(),
|
|
78
|
+
staking.outstandingRewardsWeth.refetch(),
|
|
79
|
+
staking.claimableRewardsStaking.refetch(),
|
|
80
|
+
staking.claimableRewardsWeth.refetch(),
|
|
81
|
+
staking.wethRewardRate.refetch(),
|
|
82
|
+
staking.aprBpsWeth.refetch(),
|
|
83
|
+
]);
|
|
84
|
+
},
|
|
85
|
+
proposals: async () => {
|
|
86
|
+
await proposalsQueryResult.refetch();
|
|
87
|
+
},
|
|
88
|
+
feeReceivers: async () => {
|
|
89
|
+
await feeReceiversQuery.refetch();
|
|
90
|
+
},
|
|
91
|
+
// Smart cross-domain refetches
|
|
92
|
+
afterStake: async () => {
|
|
93
|
+
await Promise.all([
|
|
94
|
+
balancesQuery.refetch(),
|
|
95
|
+
staking.poolData.refetch(),
|
|
96
|
+
staking.userData.refetch(),
|
|
97
|
+
staking.allowance.refetch(),
|
|
98
|
+
staking.outstandingRewardsStaking.refetch(),
|
|
99
|
+
staking.outstandingRewardsWeth.refetch(),
|
|
100
|
+
staking.claimableRewardsStaking.refetch(),
|
|
101
|
+
staking.claimableRewardsWeth.refetch(),
|
|
102
|
+
staking.wethRewardRate.refetch(),
|
|
103
|
+
staking.aprBpsWeth.refetch(),
|
|
104
|
+
project.refetch(), // Treasury might have changed
|
|
105
|
+
]);
|
|
106
|
+
},
|
|
107
|
+
afterSwap: async () => {
|
|
108
|
+
await Promise.all([
|
|
109
|
+
balancesQuery.refetch(),
|
|
110
|
+
project.refetch(), // Pool data might have changed
|
|
111
|
+
]);
|
|
112
|
+
},
|
|
113
|
+
afterGovernance: async () => {
|
|
114
|
+
await Promise.all([
|
|
115
|
+
governance.currentCycleId.refetch(),
|
|
116
|
+
governance.addresses.refetch(),
|
|
117
|
+
governance.airdropStatus.refetch(),
|
|
118
|
+
proposalsQueryResult.refetch(),
|
|
119
|
+
project.refetch(), // Treasury might have changed
|
|
120
|
+
staking.userData.refetch(), // Voting power might have changed
|
|
121
|
+
]);
|
|
122
|
+
},
|
|
123
|
+
}), [
|
|
124
|
+
queryClient,
|
|
125
|
+
project,
|
|
126
|
+
balancesQuery,
|
|
127
|
+
governance,
|
|
128
|
+
staking,
|
|
129
|
+
proposalsQueryResult,
|
|
130
|
+
feeReceiversQuery,
|
|
131
|
+
]);
|
|
132
|
+
// Auto-refetch on wallet/chain change
|
|
133
|
+
useEffect(() => {
|
|
134
|
+
if (enabled) {
|
|
135
|
+
refetchMethods.all();
|
|
136
|
+
}
|
|
137
|
+
}, [userAddress, chainId]);
|
|
138
|
+
const contextValue = useMemo(() => ({
|
|
139
|
+
clankerToken,
|
|
140
|
+
setClankerToken,
|
|
141
|
+
chainId,
|
|
142
|
+
userAddress,
|
|
143
|
+
project,
|
|
144
|
+
balances: balancesQuery,
|
|
145
|
+
tokenData,
|
|
146
|
+
staking: {
|
|
147
|
+
allowance: staking.allowance,
|
|
148
|
+
poolData: staking.poolData,
|
|
149
|
+
userData: staking.userData,
|
|
150
|
+
outstandingRewardsStaking: staking.outstandingRewardsStaking,
|
|
151
|
+
outstandingRewardsWeth: staking.outstandingRewardsWeth,
|
|
152
|
+
claimableRewardsStaking: staking.claimableRewardsStaking,
|
|
153
|
+
claimableRewardsWeth: staking.claimableRewardsWeth,
|
|
154
|
+
wethRewardRate: staking.wethRewardRate,
|
|
155
|
+
aprBpsWeth: staking.aprBpsWeth,
|
|
156
|
+
},
|
|
157
|
+
governance: {
|
|
158
|
+
currentCycleId: governance.currentCycleId,
|
|
159
|
+
addresses: governance.addresses,
|
|
160
|
+
airdropStatus: governance.airdropStatus,
|
|
161
|
+
},
|
|
162
|
+
proposals: proposalsQueryResult,
|
|
163
|
+
feeReceivers: feeReceiversQuery,
|
|
164
|
+
refetch: refetchMethods,
|
|
165
|
+
stakeService: staking.stakeService,
|
|
166
|
+
}), [
|
|
167
|
+
clankerToken,
|
|
168
|
+
setClankerToken,
|
|
169
|
+
chainId,
|
|
170
|
+
userAddress,
|
|
171
|
+
project,
|
|
172
|
+
balancesQuery,
|
|
173
|
+
tokenData,
|
|
174
|
+
staking,
|
|
175
|
+
governance,
|
|
176
|
+
proposalsQueryResult,
|
|
177
|
+
feeReceiversQuery,
|
|
178
|
+
refetchMethods,
|
|
179
|
+
]);
|
|
180
|
+
return _jsx(LevrContext.Provider, { value: contextValue, children: children });
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Hook to access Levr context
|
|
184
|
+
* @throws Error if used outside LevrProvider
|
|
185
|
+
*/
|
|
186
|
+
export function useLevrContext() {
|
|
187
|
+
const context = useContext(LevrContext);
|
|
188
|
+
if (!context) {
|
|
189
|
+
throw new Error("Levr hooks must be used within a LevrProvider");
|
|
190
|
+
}
|
|
191
|
+
return context;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Hook to set the current clanker token
|
|
195
|
+
* This allows components to update the global token context
|
|
196
|
+
*/
|
|
197
|
+
export const useSetClankerToken = () => useLevrContext().setClankerToken;
|
|
198
|
+
/**
|
|
199
|
+
* Hook to access refetch methods from LevrProvider
|
|
200
|
+
*/
|
|
201
|
+
export const useLevrRefetch = () => useLevrContext().refetch;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"levr-provider.js","sourceRoot":"","sources":["../../../src/client/levr-provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
/**
|
|
3
|
+
* Centralized query key factory for all Levr queries
|
|
4
|
+
* Ensures consistent query keys across the application
|
|
5
|
+
*/
|
|
6
|
+
export const queryKeys = {
|
|
7
|
+
/**
|
|
8
|
+
* Project query key
|
|
9
|
+
*/
|
|
10
|
+
project: (factory, token, chainId) => ['project', factory, token, chainId],
|
|
11
|
+
/**
|
|
12
|
+
* Balance query keys
|
|
13
|
+
*/
|
|
14
|
+
balance: (tokens, userAddress) => ['balance', tokens, userAddress],
|
|
15
|
+
/**
|
|
16
|
+
* Clanker SDK query keys
|
|
17
|
+
*/
|
|
18
|
+
clanker: (chainId, walletAddress) => ['clanker', chainId, walletAddress],
|
|
19
|
+
clankerToken: (tokenAddress) => ['clanker-token', tokenAddress],
|
|
20
|
+
/**
|
|
21
|
+
* Staking query keys
|
|
22
|
+
*/
|
|
23
|
+
staking: {
|
|
24
|
+
allowance: (stakingAddress, tokenAddress, userAddress) => ['staking', 'allowance', stakingAddress, tokenAddress, userAddress],
|
|
25
|
+
poolData: (stakingAddress, tokenAddress) => ['staking', 'poolData', stakingAddress, tokenAddress],
|
|
26
|
+
userData: (stakingAddress, userAddress) => ['staking', 'userData', stakingAddress, userAddress],
|
|
27
|
+
outstandingRewards: (stakingAddress, tokenAddress, userAddress) => ['staking', 'outstandingRewards', stakingAddress, tokenAddress, userAddress],
|
|
28
|
+
claimableRewards: (stakingAddress, tokenAddress, userAddress) => ['staking', 'claimableRewards', stakingAddress, tokenAddress, userAddress],
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* Governance query keys
|
|
32
|
+
*/
|
|
33
|
+
governance: {
|
|
34
|
+
proposal: (governorAddress, proposalId) => ['governance', 'proposal', governorAddress, proposalId],
|
|
35
|
+
currentCycleId: (governorAddress) => ['governance', 'currentCycleId', governorAddress],
|
|
36
|
+
addresses: (governorAddress) => ['governance', 'addresses', governorAddress],
|
|
37
|
+
airdropStatus: (governorAddress, clankerToken) => ['governance', 'airdropStatus', governorAddress, clankerToken],
|
|
38
|
+
proposalsForCycle: (governorAddress, cycleId) => ['governance', 'proposalsForCycle', governorAddress, cycleId],
|
|
39
|
+
winner: (governorAddress, cycleId) => ['governance', 'winner', governorAddress, cycleId],
|
|
40
|
+
userVoteInCycle: (governorAddress, cycleId, userAddress) => ['governance', 'userVoteInCycle', governorAddress, cycleId, userAddress],
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* Proposals query keys
|
|
44
|
+
*/
|
|
45
|
+
proposals: (governorAddress, tokenDecimals, fromBlock, toBlock, pageSize) => ['proposals', governorAddress, tokenDecimals, fromBlock, toBlock, pageSize],
|
|
46
|
+
/**
|
|
47
|
+
* Projects query keys
|
|
48
|
+
*/
|
|
49
|
+
projects: (factoryAddress, chainId) => ['projects', factoryAddress, chainId],
|
|
50
|
+
/**
|
|
51
|
+
* Swap query keys
|
|
52
|
+
*/
|
|
53
|
+
swap: {
|
|
54
|
+
quote: (chainId, poolKey, zeroForOne, amountIn, amountInDecimals) => ['swap', 'quote', chainId, poolKey, zeroForOne, amountIn, amountInDecimals],
|
|
55
|
+
},
|
|
56
|
+
/**
|
|
57
|
+
* Fee receivers query keys
|
|
58
|
+
*/
|
|
59
|
+
feeReceivers: (clankerToken, userAddress, chainId) => ['fee-receivers', clankerToken, userAddress, chainId],
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=query-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-keys.js","sourceRoot":"","sources":["../../../src/client/query-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { CLANKERS } from 'clanker-sdk';
|
|
2
|
+
import { BigNumber } from 'ethers';
|
|
3
|
+
import { anvil, base, baseSepolia } from 'viem/chains';
|
|
4
|
+
/**
|
|
5
|
+
* Get the LP locker address for a given chain ID
|
|
6
|
+
* @param chainId - The chain ID
|
|
7
|
+
* @returns The LP locker address
|
|
8
|
+
*/
|
|
9
|
+
export const GET_LP_LOCKER_ADDRESS = (chainId) => {
|
|
10
|
+
if (!chainId)
|
|
11
|
+
return undefined;
|
|
12
|
+
const chainMap = {
|
|
13
|
+
// In our dev monorepo, we have a clanker_v4_anvil contract, but in the remote package, it's not defined
|
|
14
|
+
[anvil.id]: CLANKERS?.clanker_v4_anvil?.related?.locker,
|
|
15
|
+
[base.id]: CLANKERS.clanker_v4.related.locker,
|
|
16
|
+
[baseSepolia.id]: CLANKERS.clanker_v4_sepolia.related.locker,
|
|
17
|
+
};
|
|
18
|
+
return chainMap?.[chainId];
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Get the factory address for a given chain ID
|
|
22
|
+
* @param chainId - The chain ID
|
|
23
|
+
* @returns The factory address
|
|
24
|
+
*/
|
|
25
|
+
export const GET_FACTORY_ADDRESS = (chainId) => {
|
|
26
|
+
if (!chainId)
|
|
27
|
+
return undefined;
|
|
28
|
+
return {
|
|
29
|
+
[anvil.id]: process.env.NEXT_PUBLIC_LEVR_FACTORY_V1_ANVIL,
|
|
30
|
+
[baseSepolia.id]: '0xa6ee403ee39a378308793d9f4c9a24fc97d34046',
|
|
31
|
+
}[chainId];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Get the WETH address for a given chain ID
|
|
35
|
+
* @param chainId - The chain ID
|
|
36
|
+
* @returns The WETH address
|
|
37
|
+
*/
|
|
38
|
+
export const WETH = (chainId) => {
|
|
39
|
+
if (!chainId)
|
|
40
|
+
return undefined;
|
|
41
|
+
const initial = {
|
|
42
|
+
decimals: 18,
|
|
43
|
+
symbol: 'WETH',
|
|
44
|
+
name: 'Wrapped Ether',
|
|
45
|
+
address: '0x4200000000000000000000000000000000000006',
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
[anvil.id]: initial,
|
|
49
|
+
[base.id]: initial,
|
|
50
|
+
[baseSepolia.id]: initial,
|
|
51
|
+
}[chainId];
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Get the Uniswap V4 Permit2 address for a given chain ID
|
|
55
|
+
* @param chainId - The chain ID
|
|
56
|
+
* @returns The Permit2 address
|
|
57
|
+
*/
|
|
58
|
+
export const UNISWAP_V4_PERMIT2 = (chainId) => {
|
|
59
|
+
if (!chainId)
|
|
60
|
+
return undefined;
|
|
61
|
+
return {
|
|
62
|
+
[anvil.id]: '0x000000000022D473030F116dDEE9F6B43aC78BA3',
|
|
63
|
+
[base.id]: '0x000000000022D473030F116dDEE9F6B43aC78BA3',
|
|
64
|
+
[baseSepolia.id]: '0x000000000022D473030F116dDEE9F6B43aC78BA3',
|
|
65
|
+
}[chainId];
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Get the Uniswap V4 Quoter address for a given chain ID
|
|
69
|
+
* @param chainId - The chain ID
|
|
70
|
+
* @returns The Quoter address
|
|
71
|
+
*/
|
|
72
|
+
export const UNISWAP_V4_QUOTER = (chainId) => {
|
|
73
|
+
if (!chainId)
|
|
74
|
+
return undefined;
|
|
75
|
+
return {
|
|
76
|
+
[anvil.id]: '0x0d5e0f971ed27fbff6c2837bf31316121532048d',
|
|
77
|
+
[base.id]: '0x0d5e0f971ed27fbff6c2837bf31316121532048d',
|
|
78
|
+
[baseSepolia.id]: '0x4a6513c898fe1b2d0e78d3b0e0a4a151589b1cba',
|
|
79
|
+
}[chainId];
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Get the Uniswap V4 Universal Router address for a given chain ID
|
|
83
|
+
* @param chainId - The chain ID
|
|
84
|
+
* @returns The Uniswap V4 Universal Router address
|
|
85
|
+
*/
|
|
86
|
+
export const UNISWAP_V4_UNIVERSAL_ROUTER = (chainId) => {
|
|
87
|
+
if (!chainId)
|
|
88
|
+
return undefined;
|
|
89
|
+
return {
|
|
90
|
+
[anvil.id]: '0x6ff5693b99212da76ad316178a184ab56d299b43',
|
|
91
|
+
[base.id]: '0x6ff5693b99212da76ad316178a184ab56d299b43',
|
|
92
|
+
[baseSepolia.id]: '0x492e6456d9528771018deb9e87ef7750ef184104',
|
|
93
|
+
}[chainId];
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Get the Uniswap V4 Pool Manager address for a given chain ID
|
|
97
|
+
* @param chainId - The chain ID
|
|
98
|
+
* @returns The Pool Manager address
|
|
99
|
+
*/
|
|
100
|
+
export const UNISWAP_V4_POOL_MANAGER = (chainId) => {
|
|
101
|
+
if (!chainId)
|
|
102
|
+
return undefined;
|
|
103
|
+
return {
|
|
104
|
+
[anvil.id]: '0x498581ff718922c3f8e6a244956af099b2652b2b',
|
|
105
|
+
[base.id]: '0x498581ff718922c3f8e6a244956af099b2652b2b',
|
|
106
|
+
[baseSepolia.id]: '0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408',
|
|
107
|
+
}[chainId];
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Get the Clanker Factory address for a given chain ID
|
|
111
|
+
* @param chainId - The chain ID
|
|
112
|
+
* @returns The Clanker Factory address (same on Base mainnet and Base Sepolia)
|
|
113
|
+
*/
|
|
114
|
+
export const GET_CLANKER_FACTORY_ADDRESS = (chainId) => {
|
|
115
|
+
if (!chainId)
|
|
116
|
+
return undefined;
|
|
117
|
+
const chainMap = {
|
|
118
|
+
// In our dev monorepo, we have a clanker_v4_anvil contract, but in the remote package, it's not defined
|
|
119
|
+
[anvil.id]: CLANKERS?.clanker_v4_anvil?.factoryAddress,
|
|
120
|
+
// Same address on both Base mainnet (8453) and Base Sepolia (84532)
|
|
121
|
+
[base.id]: '0xE85A59c628F7d27878ACeB4bf3b35733630083a9',
|
|
122
|
+
[baseSepolia.id]: '0xE85A59c628F7d27878ACeB4bf3b35733630083a9',
|
|
123
|
+
};
|
|
124
|
+
return chainMap?.[chainId];
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Get the Clanker Airdrop address for a given chain ID
|
|
128
|
+
* @param chainId - The chain ID
|
|
129
|
+
* @returns The Clanker Airdrop address
|
|
130
|
+
*/
|
|
131
|
+
export const GET_CLANKER_AIRDROP_ADDRESS = (chainId) => {
|
|
132
|
+
if (!chainId)
|
|
133
|
+
return undefined;
|
|
134
|
+
const chainMap = {
|
|
135
|
+
// In our dev monorepo, we have a clanker_v4_anvil contract, but in the remote package, it's not defined
|
|
136
|
+
[anvil.id]: CLANKERS?.clanker_v4_anvil?.related?.airdrop,
|
|
137
|
+
[base.id]: CLANKERS.clanker_v4.related.airdrop,
|
|
138
|
+
[baseSepolia.id]: CLANKERS.clanker_v4_sepolia.related.airdrop,
|
|
139
|
+
};
|
|
140
|
+
return chainMap?.[chainId];
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Contract balance representation, for use in Universal Router
|
|
144
|
+
*/
|
|
145
|
+
export const CONTRACT_BALANCE = BigNumber.from('0x8000000000000000000000000000000000000000000000000000000000000000');
|
|
146
|
+
/**
|
|
147
|
+
* MSG_SENDER representation, for use in Universal Router
|
|
148
|
+
*/
|
|
149
|
+
export const MSG_SENDER = '0x0000000000000000000000000000000000000001';
|
|
150
|
+
/**
|
|
151
|
+
* ADDRESS_THIS representation, for use in Universal Router
|
|
152
|
+
*/
|
|
153
|
+
export const ADDRESS_THIS = '0x0000000000000000000000000000000000000002';
|
|
154
|
+
/**
|
|
155
|
+
* Common treasury airdrop amounts in tokens (not wei)
|
|
156
|
+
* First value is used as default in deployV4
|
|
157
|
+
*/
|
|
158
|
+
export const TREASURY_AIRDROP_AMOUNTS = {
|
|
159
|
+
'30%': 30_000_000_000, // 30B tokens (30% of 100B)
|
|
160
|
+
'40%': 40_000_000_000, // 40B tokens (40% of 100B)
|
|
161
|
+
'50%': 50_000_000_000, // 50B tokens (50% of 100B)
|
|
162
|
+
'60%': 60_000_000_000, // 60B tokens (60% of 100B)
|
|
163
|
+
'70%': 70_000_000_000, // 70B tokens (70% of 100B)
|
|
164
|
+
'80%': 80_000_000_000, // 80B tokens (80% of 100B)
|
|
165
|
+
'90%': 90_000_000_000, // 90B tokens (90% of 100B)
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Staking rewards in basis points
|
|
169
|
+
* The amount of rewards that are distributed to the staking contract
|
|
170
|
+
*/
|
|
171
|
+
export const STAKING_REWARDS = {
|
|
172
|
+
'100%': 10_000, // 100% of rewards are distributed to the staking contract
|
|
173
|
+
'90%': 9_000, // 90% of rewards are distributed to the staking contract
|
|
174
|
+
'80%': 8_000, // 80% of rewards are distributed to the staking contract
|
|
175
|
+
'70%': 7_000, // 70% of rewards are distributed to the staking contract
|
|
176
|
+
};
|
|
177
|
+
export const STATIC_FEE_TIERS = {
|
|
178
|
+
'1%': 100,
|
|
179
|
+
'2%': 200,
|
|
180
|
+
'3%': 300,
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { LevrFactory_v1, LevrForwarder_v1 } from "./abis/index.js";
|
|
2
|
+
import { buildCalldatasV4 } from "./build-calldatas-v4.js";
|
|
3
|
+
import { GET_FACTORY_ADDRESS } from "./constants.js";
|
|
4
|
+
export const deployV4 = async ({ c, clanker }) => {
|
|
5
|
+
if (!clanker)
|
|
6
|
+
throw new Error("Clanker SDK not found");
|
|
7
|
+
const wallet = clanker.wallet;
|
|
8
|
+
const publicClient = clanker.publicClient;
|
|
9
|
+
if (!publicClient)
|
|
10
|
+
throw new Error("Public client not found");
|
|
11
|
+
if (!wallet)
|
|
12
|
+
throw new Error("Wallet not found");
|
|
13
|
+
const chainId = publicClient.chain?.id;
|
|
14
|
+
const factoryAddress = GET_FACTORY_ADDRESS(chainId);
|
|
15
|
+
if (!factoryAddress)
|
|
16
|
+
throw new Error("Factory address is required");
|
|
17
|
+
const trustedForwarder = await publicClient.readContract({
|
|
18
|
+
address: factoryAddress,
|
|
19
|
+
abi: LevrFactory_v1,
|
|
20
|
+
functionName: "trustedForwarder",
|
|
21
|
+
});
|
|
22
|
+
const { callDatas, clankerTokenAddress, totalValue } = await buildCalldatasV4({
|
|
23
|
+
c,
|
|
24
|
+
clanker,
|
|
25
|
+
publicClient,
|
|
26
|
+
wallet,
|
|
27
|
+
factoryAddress,
|
|
28
|
+
forwarderAddress: trustedForwarder,
|
|
29
|
+
});
|
|
30
|
+
const txHash = await wallet.writeContract({
|
|
31
|
+
address: trustedForwarder,
|
|
32
|
+
abi: LevrForwarder_v1,
|
|
33
|
+
functionName: "executeMulticall",
|
|
34
|
+
args: [callDatas],
|
|
35
|
+
value: totalValue,
|
|
36
|
+
});
|
|
37
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
38
|
+
if (receipt.status === "reverted") {
|
|
39
|
+
throw new Error("Deployment transaction reverted");
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
receipt,
|
|
43
|
+
address: clankerTokenAddress,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=deploy-v4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-v4.js","sourceRoot":"","sources":["../../src/deploy-v4.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAajD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,OAAO,EAAkB,EAA+B,EAAE;IAC5F,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IACzC,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAEhD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAA;IACtC,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACnD,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAEnE,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;QACvD,OAAO,EAAE,cAAc;QACvB,GAAG,EAAE,cAAc;QACnB,YAAY,EAAE,kBAAkB;KACjC,CAAC,CAAA;IAEF,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC;QAC5E,CAAC;QACD,OAAO;QACP,YAAY;QACZ,MAAM;QACN,cAAc;QACd,gBAAgB,EAAE,gBAAgB;KACnC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;QACxC,OAAO,EAAE,gBAAgB;QACzB,GAAG,EAAE,gBAAgB;QACrB,YAAY,EAAE,kBAAkB;QAChC,IAAI,EAAE,CAAC,SAAS,CAAC;QACjB,KAAK,EAAE,UAAU;KAClB,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAE9E,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAED,OAAO;QACL,OAAO;QACP,OAAO,EAAE,mBAAmB;KAC7B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { IClankerLpLockerMultiple } from "./abis/index.js";
|
|
2
|
+
import { GET_LP_LOCKER_ADDRESS } from "./constants.js";
|
|
3
|
+
/**
|
|
4
|
+
* Get fee receivers for a clanker token
|
|
5
|
+
*/
|
|
6
|
+
export async function feeReceivers({ publicClient, clankerToken, chainId, userAddress, }) {
|
|
7
|
+
if (Object.values({ publicClient, clankerToken, chainId }).some((value) => !value)) {
|
|
8
|
+
throw new Error("Invalid fee receivers params");
|
|
9
|
+
}
|
|
10
|
+
const lpLockerAddress = GET_LP_LOCKER_ADDRESS(chainId);
|
|
11
|
+
if (!lpLockerAddress) {
|
|
12
|
+
throw new Error("LP locker address not found for chain");
|
|
13
|
+
}
|
|
14
|
+
const info = await publicClient.readContract({
|
|
15
|
+
address: lpLockerAddress,
|
|
16
|
+
abi: IClankerLpLockerMultiple,
|
|
17
|
+
functionName: "tokenRewards",
|
|
18
|
+
args: [clankerToken],
|
|
19
|
+
});
|
|
20
|
+
const admins = info?.rewardAdmins || [];
|
|
21
|
+
const recipients = info?.rewardRecipients || [];
|
|
22
|
+
const bps = info?.rewardBps || [];
|
|
23
|
+
const feeReceivers = admins.map((admin, index) => ({
|
|
24
|
+
areYouAnAdmin: userAddress ? admin.toLowerCase() === userAddress.toLowerCase() : false,
|
|
25
|
+
admin,
|
|
26
|
+
recipient: recipients[index],
|
|
27
|
+
// Convert bps to percentage
|
|
28
|
+
percentage: bps[index] / 100,
|
|
29
|
+
}));
|
|
30
|
+
return feeReceivers;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Update fee receiver for a clanker token
|
|
34
|
+
*/
|
|
35
|
+
export async function updateFeeReceiver({ walletClient, clankerToken, chainId, rewardIndex, newRecipient, }) {
|
|
36
|
+
if (Object.values({ walletClient, clankerToken, chainId, newRecipient }).some((value) => !value)) {
|
|
37
|
+
throw new Error("Invalid update fee receiver params");
|
|
38
|
+
}
|
|
39
|
+
const lpLockerAddress = GET_LP_LOCKER_ADDRESS(chainId);
|
|
40
|
+
if (!lpLockerAddress) {
|
|
41
|
+
throw new Error("LP locker address not found for chain");
|
|
42
|
+
}
|
|
43
|
+
const index = Number(rewardIndex);
|
|
44
|
+
const hash = await walletClient.writeContract({
|
|
45
|
+
address: lpLockerAddress,
|
|
46
|
+
abi: IClankerLpLockerMultiple,
|
|
47
|
+
functionName: "updateRewardRecipient",
|
|
48
|
+
args: [clankerToken, BigInt(index), newRecipient],
|
|
49
|
+
});
|
|
50
|
+
return hash;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=fee-receivers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fee-receivers.js","sourceRoot":"","sources":["../../src/fee-receivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAyBnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,WAAW,GACQ;IACnB,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACtD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;QAC3C,OAAO,EAAE,eAAe;QACxB,GAAG,EAAE,wBAAwB;QAC7B,YAAY,EAAE,cAAc;QAC5B,IAAI,EAAE,CAAC,YAAY,CAAC;KACrB,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,EAAE,YAAY,IAAI,EAAE,CAAA;IACvC,MAAM,UAAU,GAAG,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAA;IAC/C,MAAM,GAAG,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAA;IAEjC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACjD,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK;QACtF,KAAK;QACL,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC;QAC5B,4BAA4B;QAC5B,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG;KAC7B,CAAC,CAAC,CAAA;IAEH,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,WAAW,EACX,YAAY,GACY;IACxB,IACE,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAC5F,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACtD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QAC5C,OAAO,EAAE,eAAe;QACxB,GAAG,EAAE,wBAAwB;QAC7B,YAAY,EAAE,uBAAuB;QACrC,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;KAClD,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC"}
|