levr-sdk 0.0.2 → 0.1.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/README.md +256 -235
- package/dist/esm/abis/LevrFactory_v1.js +63 -0
- package/dist/esm/abis/LevrGovernor_v1.js +15 -24
- package/dist/esm/abis/LevrStaking_v1.js +7 -1
- package/dist/esm/balance.js +19 -1
- package/dist/esm/balance.js.map +1 -1
- package/dist/esm/client/hook/index.js +14 -3
- package/dist/esm/client/hook/index.js.map +1 -1
- package/dist/esm/client/hook/use-fee-receivers.js +11 -29
- package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
- package/dist/esm/client/hook/use-governance.js +19 -254
- package/dist/esm/client/hook/use-governance.js.map +1 -1
- package/dist/esm/client/hook/use-pool.js +26 -0
- package/dist/esm/client/hook/use-pool.js.map +1 -0
- package/dist/esm/client/hook/use-prepare.js +6 -3
- package/dist/esm/client/hook/use-prepare.js.map +1 -1
- package/dist/esm/client/hook/use-project.js +24 -9
- package/dist/esm/client/hook/use-project.js.map +1 -1
- package/dist/esm/client/hook/use-proposal.js +48 -0
- package/dist/esm/client/hook/use-proposal.js.map +1 -0
- package/dist/esm/client/hook/use-stake.js +29 -195
- package/dist/esm/client/hook/use-stake.js.map +1 -1
- package/dist/esm/client/hook/use-swap.js +9 -13
- package/dist/esm/client/hook/use-swap.js.map +1 -1
- package/dist/esm/client/hook/use-user.js +25 -0
- package/dist/esm/client/hook/use-user.js.map +1 -0
- package/dist/esm/client/levr-provider.js +65 -107
- package/dist/esm/client/levr-provider.js.map +1 -1
- package/dist/esm/client/query-keys.js +9 -21
- package/dist/esm/client/query-keys.js.map +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/fee-receivers.js +25 -13
- package/dist/esm/fee-receivers.js.map +1 -1
- package/dist/esm/governance.js +35 -414
- package/dist/esm/governance.js.map +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pool.js +70 -0
- package/dist/esm/pool.js.map +1 -0
- package/dist/esm/project.js +389 -135
- package/dist/esm/project.js.map +1 -1
- package/dist/esm/proposal.js +156 -0
- package/dist/esm/proposal.js.map +1 -0
- package/dist/esm/quote/index.js +2 -2
- package/dist/esm/quote/index.js.map +1 -1
- package/dist/esm/stake.js +34 -299
- package/dist/esm/stake.js.map +1 -1
- package/dist/esm/treasury.js +162 -0
- package/dist/esm/treasury.js.map +1 -0
- package/dist/esm/user.js +153 -0
- package/dist/esm/user.js.map +1 -0
- package/dist/types/abis/LevrFactory_v1.d.ts +48 -0
- package/dist/types/abis/LevrGovernor_v1.d.ts +12 -18
- package/dist/types/abis/LevrStaking_v1.d.ts +5 -1
- package/dist/types/balance.d.ts +15 -0
- package/dist/types/balance.d.ts.map +1 -1
- package/dist/types/client/hook/index.d.ts +11 -3
- package/dist/types/client/hook/index.d.ts.map +1 -1
- package/dist/types/client/hook/use-fee-receivers.d.ts +6 -16
- package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
- package/dist/types/client/hook/use-governance.d.ts +4 -98
- package/dist/types/client/hook/use-governance.d.ts.map +1 -1
- package/dist/types/client/hook/use-pool.d.ts +12 -0
- package/dist/types/client/hook/use-pool.d.ts.map +1 -0
- package/dist/types/client/hook/use-prepare.d.ts +1 -2
- package/dist/types/client/hook/use-prepare.d.ts.map +1 -1
- package/dist/types/client/hook/use-project.d.ts +5 -0
- package/dist/types/client/hook/use-project.d.ts.map +1 -1
- package/dist/types/client/hook/use-proposal.d.ts +18 -0
- package/dist/types/client/hook/use-proposal.d.ts.map +1 -0
- package/dist/types/client/hook/use-stake.d.ts +14 -73
- package/dist/types/client/hook/use-stake.d.ts.map +1 -1
- package/dist/types/client/hook/use-swap.d.ts +3 -8
- package/dist/types/client/hook/use-swap.d.ts.map +1 -1
- package/dist/types/client/hook/use-user.d.ts +13 -0
- package/dist/types/client/hook/use-user.d.ts.map +1 -0
- package/dist/types/client/levr-provider.d.ts +30 -50
- package/dist/types/client/levr-provider.d.ts.map +1 -1
- package/dist/types/client/query-keys.d.ts +13 -25
- package/dist/types/client/query-keys.d.ts.map +1 -1
- package/dist/types/fee-receivers.d.ts +28 -0
- package/dist/types/fee-receivers.d.ts.map +1 -1
- package/dist/types/governance.d.ts +5 -92
- package/dist/types/governance.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/pool.d.ts +590 -0
- package/dist/types/pool.d.ts.map +1 -0
- package/dist/types/project.d.ts +56 -1
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/proposal.d.ts +1161 -0
- package/dist/types/proposal.d.ts.map +1 -0
- package/dist/types/quote/index.d.ts +2 -2
- package/dist/types/quote/index.d.ts.map +1 -1
- package/dist/types/stake.d.ts +16 -41
- package/dist/types/stake.d.ts.map +1 -1
- package/dist/types/treasury.d.ts +16 -0
- package/dist/types/treasury.d.ts.map +1 -0
- package/dist/types/user.d.ts +188 -0
- package/dist/types/user.d.ts.map +1 -0
- package/package.json +5 -2
- package/dist/esm/client/hook/use-balance.js +0 -57
- package/dist/esm/client/hook/use-balance.js.map +0 -1
- package/dist/esm/client/hook/use-projects.js +0 -22
- package/dist/esm/client/hook/use-projects.js.map +0 -1
- package/dist/esm/client/hook/use-proposals.js +0 -29
- package/dist/esm/client/hook/use-proposals.js.map +0 -1
- package/dist/esm/projects.js +0 -184
- package/dist/esm/projects.js.map +0 -1
- package/dist/esm/proposals.js +0 -98
- package/dist/esm/proposals.js.map +0 -1
- package/dist/types/client/hook/use-balance.d.ts +0 -20
- package/dist/types/client/hook/use-balance.d.ts.map +0 -1
- package/dist/types/client/hook/use-projects.d.ts +0 -6
- package/dist/types/client/hook/use-projects.d.ts.map +0 -1
- package/dist/types/client/hook/use-proposals.d.ts +0 -16
- package/dist/types/client/hook/use-proposals.d.ts.map +0 -1
- package/dist/types/projects.d.ts +0 -20
- package/dist/types/projects.d.ts.map +0 -1
- package/dist/types/proposals.d.ts +0 -20
- package/dist/types/proposals.d.ts.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useQuery } from "@tanstack/react-query";
|
|
3
|
+
import { useAccount, usePublicClient } from "wagmi";
|
|
4
|
+
import { getUser } from "../../user.js";
|
|
5
|
+
import { queryKeys } from "../query-keys.js";
|
|
6
|
+
/**
|
|
7
|
+
* Internal: Creates user query with all user-specific data
|
|
8
|
+
* Used by LevrProvider
|
|
9
|
+
* Composes balances, staking, and governance in one efficient multicall
|
|
10
|
+
*/
|
|
11
|
+
export function useUserQuery({ project: projectData, enabled: e = true }) {
|
|
12
|
+
const publicClient = usePublicClient();
|
|
13
|
+
const { address: userAddress } = useAccount();
|
|
14
|
+
return useQuery({
|
|
15
|
+
queryKey: queryKeys.user(userAddress, projectData?.token.address, projectData?.staking, projectData?.treasury),
|
|
16
|
+
queryFn: async () => getUser({
|
|
17
|
+
publicClient: publicClient,
|
|
18
|
+
userAddress: userAddress,
|
|
19
|
+
project: projectData,
|
|
20
|
+
}),
|
|
21
|
+
enabled: e && !!publicClient && !!userAddress && !!projectData,
|
|
22
|
+
refetchInterval: 10000, // Refetch every 10 seconds for live updates
|
|
23
|
+
staleTime: 5000,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-user.js","sourceRoot":"","sources":["../../../../src/client/hook/use-user.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAInD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAOzC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAsB;IAC1F,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IACtC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAAA;IAE7C,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,IAAI,CACtB,WAAY,EACZ,WAAW,EAAE,KAAK,CAAC,OAAQ,EAC3B,WAAW,EAAE,OAAQ,EACrB,WAAW,EAAE,QAAS,CACvB;QACD,OAAO,EAAE,KAAK,IAAmB,EAAE,CACjC,OAAO,CAAC;YACN,YAAY,EAAE,YAAa;YAC3B,WAAW,EAAE,WAAY;YACzB,OAAO,EAAE,WAAY;SACtB,CAAC;QACJ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW;QAC9D,eAAe,EAAE,MAAM,EAAE,4CAA4C;QACrE,SAAS,EAAE,KAAK;KACjB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -5,13 +5,11 @@ import React, { createContext, 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";
|
|
8
|
-
import { useBalanceQuery } from "./hook/use-balance.js";
|
|
9
8
|
import { useClankerTokenQuery } from "./hook/use-clanker.js";
|
|
10
|
-
import {
|
|
11
|
-
import { useGovernanceQueries } from "./hook/use-governance.js";
|
|
9
|
+
import { usePoolQuery } from "./hook/use-pool.js";
|
|
12
10
|
import { useProjectQuery } from "./hook/use-project.js";
|
|
13
|
-
import { useProposalsQuery } from "./hook/use-
|
|
14
|
-
import {
|
|
11
|
+
import { useProposalsQuery } from "./hook/use-proposal.js";
|
|
12
|
+
import { useUserQuery } from "./hook/use-user.js";
|
|
15
13
|
const LevrContext = createContext(null);
|
|
16
14
|
/**
|
|
17
15
|
* Centralized provider for all Levr blockchain queries
|
|
@@ -31,111 +29,82 @@ export function LevrProvider({ children, enabled = true, oracleChainId = base.id
|
|
|
31
29
|
// ========================================
|
|
32
30
|
const project = useProjectQuery({ clankerToken, oraclePublicClient, enabled });
|
|
33
31
|
const tokenData = useClankerTokenQuery({ clankerToken, enabled });
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
enabled,
|
|
39
|
-
});
|
|
40
|
-
const staking = useStakingQueries({
|
|
41
|
-
clankerToken,
|
|
42
|
-
projectData: project.data,
|
|
43
|
-
enabled,
|
|
44
|
-
});
|
|
45
|
-
const governance = useGovernanceQueries({
|
|
46
|
-
clankerToken,
|
|
47
|
-
projectData: project.data,
|
|
48
|
-
enabled,
|
|
49
|
-
});
|
|
50
|
-
const proposalsQueryResult = useProposalsQuery({
|
|
51
|
-
governorAddress: project.data?.governor,
|
|
52
|
-
tokenDecimals: project.data?.token.decimals,
|
|
53
|
-
enabled,
|
|
54
|
-
});
|
|
55
|
-
const feeReceiversQuery = useFeeReceiversQuery({
|
|
56
|
-
clankerToken,
|
|
32
|
+
const userQuery = useUserQuery({ project: project.data, enabled });
|
|
33
|
+
const poolQuery = usePoolQuery({ project: project.data, enabled });
|
|
34
|
+
const proposalsQuery = useProposalsQuery({
|
|
35
|
+
project: project.data,
|
|
57
36
|
enabled,
|
|
58
37
|
});
|
|
59
38
|
// ========================================
|
|
60
39
|
// REFETCH METHODS
|
|
61
40
|
// ========================================
|
|
62
41
|
const refetchMethods = useMemo(() => ({
|
|
42
|
+
// Core refetches
|
|
63
43
|
all: async () => {
|
|
64
44
|
await queryClient.invalidateQueries({ refetchType: "active" });
|
|
65
45
|
},
|
|
46
|
+
user: async () => {
|
|
47
|
+
await userQuery.refetch();
|
|
48
|
+
},
|
|
66
49
|
project: async () => {
|
|
67
50
|
await project.refetch();
|
|
68
51
|
},
|
|
69
|
-
|
|
70
|
-
await
|
|
52
|
+
pool: async () => {
|
|
53
|
+
await poolQuery.refetch();
|
|
71
54
|
},
|
|
72
|
-
|
|
55
|
+
proposals: async () => {
|
|
56
|
+
await proposalsQuery.refetch();
|
|
57
|
+
},
|
|
58
|
+
// Action-based refetches
|
|
59
|
+
afterTrade: async () => {
|
|
73
60
|
await Promise.all([
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
governance.airdropStatus.refetch(),
|
|
61
|
+
userQuery.refetch(), // Balances changed
|
|
62
|
+
poolQuery.refetch(), // Pool state changed (price impact)
|
|
77
63
|
]);
|
|
78
64
|
},
|
|
79
|
-
|
|
65
|
+
afterStake: async () => {
|
|
80
66
|
await Promise.all([
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
staking.userData.refetch(),
|
|
84
|
-
staking.outstandingRewardsStaking.refetch(),
|
|
85
|
-
staking.outstandingRewardsWeth.refetch(),
|
|
86
|
-
staking.claimableRewardsStaking.refetch(),
|
|
87
|
-
staking.claimableRewardsWeth.refetch(),
|
|
88
|
-
staking.wethRewardRate.refetch(),
|
|
89
|
-
staking.aprBpsWeth.refetch(),
|
|
67
|
+
userQuery.refetch(), // Balances, staking, voting power changed
|
|
68
|
+
project.refetch(), // Treasury might have changed
|
|
90
69
|
]);
|
|
91
70
|
},
|
|
92
|
-
|
|
93
|
-
await
|
|
71
|
+
afterUnstake: async () => {
|
|
72
|
+
await Promise.all([
|
|
73
|
+
userQuery.refetch(), // Balances, staking, voting power changed
|
|
74
|
+
project.refetch(), // Treasury might have changed
|
|
75
|
+
]);
|
|
94
76
|
},
|
|
95
|
-
|
|
96
|
-
await
|
|
77
|
+
afterClaim: async () => {
|
|
78
|
+
await userQuery.refetch(); // Balances, claimable rewards changed
|
|
97
79
|
},
|
|
98
|
-
|
|
99
|
-
afterStake: async () => {
|
|
80
|
+
afterAccrue: async () => {
|
|
100
81
|
await Promise.all([
|
|
101
|
-
|
|
102
|
-
staking.poolData.refetch(),
|
|
103
|
-
staking.userData.refetch(),
|
|
104
|
-
staking.allowance.refetch(),
|
|
105
|
-
staking.outstandingRewardsStaking.refetch(),
|
|
106
|
-
staking.outstandingRewardsWeth.refetch(),
|
|
107
|
-
staking.claimableRewardsStaking.refetch(),
|
|
108
|
-
staking.claimableRewardsWeth.refetch(),
|
|
109
|
-
staking.wethRewardRate.refetch(),
|
|
110
|
-
staking.aprBpsWeth.refetch(),
|
|
111
|
-
project.refetch(), // Treasury might have changed
|
|
82
|
+
project.refetch(), // Outstanding rewards changed (pool-level)
|
|
112
83
|
]);
|
|
113
84
|
},
|
|
114
|
-
|
|
85
|
+
afterVote: async () => {
|
|
115
86
|
await Promise.all([
|
|
116
|
-
|
|
117
|
-
|
|
87
|
+
userQuery.refetch(), // User governance data (vote receipt)
|
|
88
|
+
proposalsQuery.refetch(), // Proposal votes updated
|
|
118
89
|
]);
|
|
119
90
|
},
|
|
120
|
-
|
|
91
|
+
afterProposal: async () => {
|
|
121
92
|
await Promise.all([
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
governance.airdropStatus.refetch(),
|
|
125
|
-
proposalsQueryResult.refetch(),
|
|
126
|
-
project.refetch(), // Treasury might have changed
|
|
127
|
-
staking.userData.refetch(), // Voting power might have changed
|
|
93
|
+
proposalsQuery.refetch(), // New proposal added
|
|
94
|
+
project.refetch(), // currentCycleId might have changed
|
|
128
95
|
]);
|
|
129
96
|
},
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
97
|
+
afterExecute: async () => {
|
|
98
|
+
await Promise.all([
|
|
99
|
+
project.refetch(), // Treasury changed + currentCycleId (new cycle starts)
|
|
100
|
+
proposalsQuery.refetch(), // Proposal executed
|
|
101
|
+
userQuery.refetch(), // Staking rewards might have changed (if boost)
|
|
102
|
+
]);
|
|
103
|
+
},
|
|
104
|
+
afterAirdrop: async () => {
|
|
105
|
+
await project.refetch(); // Treasury balance, airdrop status changed
|
|
106
|
+
},
|
|
107
|
+
}), [queryClient, project, userQuery, poolQuery, proposalsQuery]);
|
|
139
108
|
// Auto-refetch on wallet/chain change
|
|
140
109
|
useEffect(() => {
|
|
141
110
|
if (enabled) {
|
|
@@ -147,41 +116,24 @@ export function LevrProvider({ children, enabled = true, oracleChainId = base.id
|
|
|
147
116
|
setClankerToken,
|
|
148
117
|
chainId,
|
|
149
118
|
userAddress,
|
|
119
|
+
// Data queries
|
|
120
|
+
user: userQuery,
|
|
150
121
|
project,
|
|
151
|
-
|
|
122
|
+
pool: poolQuery,
|
|
123
|
+
proposals: proposalsQuery,
|
|
152
124
|
tokenData,
|
|
153
|
-
|
|
154
|
-
allowance: staking.allowance,
|
|
155
|
-
poolData: staking.poolData,
|
|
156
|
-
userData: staking.userData,
|
|
157
|
-
outstandingRewardsStaking: staking.outstandingRewardsStaking,
|
|
158
|
-
outstandingRewardsWeth: staking.outstandingRewardsWeth,
|
|
159
|
-
claimableRewardsStaking: staking.claimableRewardsStaking,
|
|
160
|
-
claimableRewardsWeth: staking.claimableRewardsWeth,
|
|
161
|
-
wethRewardRate: staking.wethRewardRate,
|
|
162
|
-
aprBpsWeth: staking.aprBpsWeth,
|
|
163
|
-
},
|
|
164
|
-
governance: {
|
|
165
|
-
currentCycleId: governance.currentCycleId,
|
|
166
|
-
addresses: governance.addresses,
|
|
167
|
-
airdropStatus: governance.airdropStatus,
|
|
168
|
-
},
|
|
169
|
-
proposals: proposalsQueryResult,
|
|
170
|
-
feeReceivers: feeReceiversQuery,
|
|
125
|
+
// Refetch methods
|
|
171
126
|
refetch: refetchMethods,
|
|
172
|
-
stakeService: staking.stakeService,
|
|
173
127
|
}), [
|
|
174
128
|
clankerToken,
|
|
175
129
|
setClankerToken,
|
|
176
130
|
chainId,
|
|
177
131
|
userAddress,
|
|
132
|
+
userQuery,
|
|
178
133
|
project,
|
|
179
|
-
|
|
134
|
+
poolQuery,
|
|
135
|
+
proposalsQuery,
|
|
180
136
|
tokenData,
|
|
181
|
-
staking,
|
|
182
|
-
governance,
|
|
183
|
-
proposalsQueryResult,
|
|
184
|
-
feeReceiversQuery,
|
|
185
137
|
refetchMethods,
|
|
186
138
|
]);
|
|
187
139
|
return _jsx(LevrContext.Provider, { value: contextValue, children: children });
|
|
@@ -199,9 +151,15 @@ export function useLevrContext() {
|
|
|
199
151
|
}
|
|
200
152
|
/**
|
|
201
153
|
* Hook to set the current clanker token
|
|
202
|
-
*
|
|
154
|
+
* Automatically updates when the token address changes
|
|
155
|
+
* @param clankerToken - Token address to set (null to clear)
|
|
203
156
|
*/
|
|
204
|
-
export const useSetClankerToken = () =>
|
|
157
|
+
export const useSetClankerToken = (clankerToken) => {
|
|
158
|
+
const { setClankerToken } = useLevrContext();
|
|
159
|
+
React.useEffect(() => {
|
|
160
|
+
setClankerToken(clankerToken ?? null);
|
|
161
|
+
}, [clankerToken, setClankerToken]);
|
|
162
|
+
};
|
|
205
163
|
/**
|
|
206
164
|
* Hook to access refetch methods from LevrProvider
|
|
207
165
|
*/
|
|
@@ -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;AAE5E,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"levr-provider.js","sourceRoot":"","sources":["../../../src/client/levr-provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,32 +9,23 @@ export const queryKeys = {
|
|
|
9
9
|
*/
|
|
10
10
|
project: (token, chainId) => ['project', token, chainId],
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* User query keys (composable data group)
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
user: (userAddress, token, staking, treasury) => ['user', userAddress, token, staking, treasury],
|
|
15
|
+
/**
|
|
16
|
+
* Pool query keys
|
|
17
|
+
*/
|
|
18
|
+
pool: (poolKey) => ['pool', poolKey],
|
|
15
19
|
/**
|
|
16
20
|
* Clanker SDK query keys
|
|
17
21
|
*/
|
|
18
22
|
clanker: (chainId, walletAddress) => ['clanker', chainId, walletAddress],
|
|
19
23
|
clankerToken: (tokenAddress) => ['clanker-token', tokenAddress],
|
|
20
24
|
/**
|
|
21
|
-
*
|
|
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
|
|
25
|
+
* Governance query keys (for dynamic per-component queries)
|
|
32
26
|
*/
|
|
33
27
|
governance: {
|
|
34
28
|
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
29
|
proposalsForCycle: (governorAddress, cycleId) => ['governance', 'proposalsForCycle', governorAddress, cycleId],
|
|
39
30
|
winner: (governorAddress, cycleId) => ['governance', 'winner', governorAddress, cycleId],
|
|
40
31
|
userVoteInCycle: (governorAddress, cycleId, userAddress) => ['governance', 'userVoteInCycle', governorAddress, cycleId, userAddress],
|
|
@@ -42,7 +33,8 @@ export const queryKeys = {
|
|
|
42
33
|
/**
|
|
43
34
|
* Proposals query keys
|
|
44
35
|
*/
|
|
45
|
-
proposals: (
|
|
36
|
+
proposals: (chainId, cycleId, userAddress) => ['proposals', chainId, cycleId, userAddress],
|
|
37
|
+
proposal: (chainId, cycleId, proposalId) => ['proposal', chainId, cycleId, proposalId],
|
|
46
38
|
/**
|
|
47
39
|
* Projects query keys
|
|
48
40
|
*/
|
|
@@ -53,9 +45,5 @@ export const queryKeys = {
|
|
|
53
45
|
swap: {
|
|
54
46
|
quote: (chainId, poolKey, zeroForOne, amountIn, amountInDecimals) => ['swap', 'quote', chainId, poolKey, zeroForOne, amountIn, amountInDecimals],
|
|
55
47
|
},
|
|
56
|
-
/**
|
|
57
|
-
* Fee receivers query keys
|
|
58
|
-
*/
|
|
59
|
-
feeReceivers: (clankerToken, userAddress, chainId) => ['fee-receivers', clankerToken, userAddress, chainId],
|
|
60
48
|
};
|
|
61
49
|
//# sourceMappingURL=query-keys.js.map
|
|
@@ -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,OAAO,EAAE,CAAC,KAAc,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAU;IAElF;;OAEG;IACH,
|
|
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,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;CACO,CAAA"}
|
package/dist/esm/constants.js
CHANGED
|
@@ -27,7 +27,7 @@ export const GET_FACTORY_ADDRESS = (chainId) => {
|
|
|
27
27
|
return undefined;
|
|
28
28
|
return {
|
|
29
29
|
[anvil.id]: process.env.NEXT_PUBLIC_LEVR_FACTORY_V1_ANVIL,
|
|
30
|
-
[baseSepolia.id]: '
|
|
30
|
+
[baseSepolia.id]: '0x84B505Fc0386699BF8A16df17A91bB415b49691f',
|
|
31
31
|
}[chainId];
|
|
32
32
|
};
|
|
33
33
|
/**
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { IClankerLpLockerMultiple } from "./abis/index.js";
|
|
2
2
|
import { GET_LP_LOCKER_ADDRESS } from "./constants.js";
|
|
3
3
|
/**
|
|
4
|
-
* Get
|
|
4
|
+
* Get tokenRewards from LP locker (shared utility)
|
|
5
|
+
* Returns pool info and fee receiver data
|
|
5
6
|
*/
|
|
6
|
-
export async function
|
|
7
|
-
if (Object.values({ publicClient, clankerToken }).some((value) => !value)) {
|
|
8
|
-
throw new Error("Invalid fee receivers params");
|
|
9
|
-
}
|
|
7
|
+
export async function getTokenRewards(publicClient, clankerToken) {
|
|
10
8
|
const chainId = publicClient.chain?.id;
|
|
11
9
|
if (!chainId)
|
|
12
10
|
throw new Error("Chain ID not found on public client");
|
|
@@ -14,23 +12,37 @@ export async function feeReceivers({ publicClient, clankerToken, userAddress, })
|
|
|
14
12
|
if (!lpLockerAddress) {
|
|
15
13
|
throw new Error("LP locker address not found for chain");
|
|
16
14
|
}
|
|
17
|
-
|
|
15
|
+
return await publicClient.readContract({
|
|
18
16
|
address: lpLockerAddress,
|
|
19
17
|
abi: IClankerLpLockerMultiple,
|
|
20
18
|
functionName: "tokenRewards",
|
|
21
19
|
args: [clankerToken],
|
|
22
20
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parse fee receivers from tokenRewards result
|
|
24
|
+
* Shared utility to avoid logic duplication
|
|
25
|
+
*/
|
|
26
|
+
export function parseFeeReceivers(tokenRewardsResult, userAddress) {
|
|
27
|
+
const admins = tokenRewardsResult.rewardAdmins || [];
|
|
28
|
+
const recipients = tokenRewardsResult.rewardRecipients || [];
|
|
29
|
+
const bps = tokenRewardsResult.rewardBps || [];
|
|
30
|
+
return admins.map((admin, index) => ({
|
|
27
31
|
areYouAnAdmin: userAddress ? admin.toLowerCase() === userAddress.toLowerCase() : false,
|
|
28
32
|
admin,
|
|
29
33
|
recipient: recipients[index],
|
|
30
|
-
// Convert bps to percentage
|
|
31
|
-
percentage: bps[index] / 100,
|
|
34
|
+
percentage: bps[index] / 100, // Convert bps to percentage
|
|
32
35
|
}));
|
|
33
|
-
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get fee receivers for a clanker token
|
|
39
|
+
*/
|
|
40
|
+
export async function feeReceivers({ publicClient, clankerToken, userAddress, }) {
|
|
41
|
+
if (Object.values({ publicClient, clankerToken }).some((value) => !value)) {
|
|
42
|
+
throw new Error("Invalid fee receivers params");
|
|
43
|
+
}
|
|
44
|
+
const tokenRewards = await getTokenRewards(publicClient, clankerToken);
|
|
45
|
+
return parseFeeReceivers(tokenRewards, userAddress);
|
|
34
46
|
}
|
|
35
47
|
/**
|
|
36
48
|
* Update fee receiver for a clanker token
|
|
@@ -1 +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;AAwBnD
|
|
1
|
+
{"version":3,"file":"fee-receivers.js","sourceRoot":"","sources":["../../src/fee-receivers.ts"],"names":[],"mappings":"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"}
|