levr-sdk 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/esm/abis/LevrFactory_v1.js +63 -0
  2. package/dist/esm/abis/LevrGovernor_v1.js +15 -24
  3. package/dist/esm/abis/LevrStaking_v1.js +7 -1
  4. package/dist/esm/balance.js +19 -1
  5. package/dist/esm/balance.js.map +1 -1
  6. package/dist/esm/client/hook/index.js +14 -3
  7. package/dist/esm/client/hook/index.js.map +1 -1
  8. package/dist/esm/client/hook/use-fee-receivers.js +11 -29
  9. package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
  10. package/dist/esm/client/hook/use-governance.js +19 -254
  11. package/dist/esm/client/hook/use-governance.js.map +1 -1
  12. package/dist/esm/client/hook/use-pool.js +26 -0
  13. package/dist/esm/client/hook/use-pool.js.map +1 -0
  14. package/dist/esm/client/hook/use-prepare.js +6 -3
  15. package/dist/esm/client/hook/use-prepare.js.map +1 -1
  16. package/dist/esm/client/hook/use-project.js +24 -9
  17. package/dist/esm/client/hook/use-project.js.map +1 -1
  18. package/dist/esm/client/hook/use-proposal.js +48 -0
  19. package/dist/esm/client/hook/use-proposal.js.map +1 -0
  20. package/dist/esm/client/hook/use-stake.js +29 -195
  21. package/dist/esm/client/hook/use-stake.js.map +1 -1
  22. package/dist/esm/client/hook/use-swap.js +9 -13
  23. package/dist/esm/client/hook/use-swap.js.map +1 -1
  24. package/dist/esm/client/hook/use-user.js +25 -0
  25. package/dist/esm/client/hook/use-user.js.map +1 -0
  26. package/dist/esm/client/levr-provider.js +65 -107
  27. package/dist/esm/client/levr-provider.js.map +1 -1
  28. package/dist/esm/client/query-keys.js +9 -21
  29. package/dist/esm/client/query-keys.js.map +1 -1
  30. package/dist/esm/constants.js +1 -1
  31. package/dist/esm/fee-receivers.js +25 -13
  32. package/dist/esm/fee-receivers.js.map +1 -1
  33. package/dist/esm/governance.js +35 -414
  34. package/dist/esm/governance.js.map +1 -1
  35. package/dist/esm/index.js +4 -2
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/pool.js +70 -0
  38. package/dist/esm/pool.js.map +1 -0
  39. package/dist/esm/project.js +389 -135
  40. package/dist/esm/project.js.map +1 -1
  41. package/dist/esm/proposal.js +156 -0
  42. package/dist/esm/proposal.js.map +1 -0
  43. package/dist/esm/quote/index.js +2 -2
  44. package/dist/esm/quote/index.js.map +1 -1
  45. package/dist/esm/stake.js +34 -299
  46. package/dist/esm/stake.js.map +1 -1
  47. package/dist/esm/treasury.js +162 -0
  48. package/dist/esm/treasury.js.map +1 -0
  49. package/dist/esm/user.js +153 -0
  50. package/dist/esm/user.js.map +1 -0
  51. package/dist/types/abis/LevrFactory_v1.d.ts +48 -0
  52. package/dist/types/abis/LevrGovernor_v1.d.ts +12 -18
  53. package/dist/types/abis/LevrStaking_v1.d.ts +5 -1
  54. package/dist/types/balance.d.ts +15 -0
  55. package/dist/types/balance.d.ts.map +1 -1
  56. package/dist/types/client/hook/index.d.ts +11 -3
  57. package/dist/types/client/hook/index.d.ts.map +1 -1
  58. package/dist/types/client/hook/use-fee-receivers.d.ts +6 -16
  59. package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
  60. package/dist/types/client/hook/use-governance.d.ts +4 -98
  61. package/dist/types/client/hook/use-governance.d.ts.map +1 -1
  62. package/dist/types/client/hook/use-pool.d.ts +12 -0
  63. package/dist/types/client/hook/use-pool.d.ts.map +1 -0
  64. package/dist/types/client/hook/use-prepare.d.ts +1 -2
  65. package/dist/types/client/hook/use-prepare.d.ts.map +1 -1
  66. package/dist/types/client/hook/use-project.d.ts +5 -0
  67. package/dist/types/client/hook/use-project.d.ts.map +1 -1
  68. package/dist/types/client/hook/use-proposal.d.ts +18 -0
  69. package/dist/types/client/hook/use-proposal.d.ts.map +1 -0
  70. package/dist/types/client/hook/use-stake.d.ts +14 -73
  71. package/dist/types/client/hook/use-stake.d.ts.map +1 -1
  72. package/dist/types/client/hook/use-swap.d.ts +3 -8
  73. package/dist/types/client/hook/use-swap.d.ts.map +1 -1
  74. package/dist/types/client/hook/use-user.d.ts +13 -0
  75. package/dist/types/client/hook/use-user.d.ts.map +1 -0
  76. package/dist/types/client/levr-provider.d.ts +30 -50
  77. package/dist/types/client/levr-provider.d.ts.map +1 -1
  78. package/dist/types/client/query-keys.d.ts +13 -25
  79. package/dist/types/client/query-keys.d.ts.map +1 -1
  80. package/dist/types/fee-receivers.d.ts +28 -0
  81. package/dist/types/fee-receivers.d.ts.map +1 -1
  82. package/dist/types/governance.d.ts +5 -92
  83. package/dist/types/governance.d.ts.map +1 -1
  84. package/dist/types/index.d.ts +4 -2
  85. package/dist/types/index.d.ts.map +1 -1
  86. package/dist/types/pool.d.ts +590 -0
  87. package/dist/types/pool.d.ts.map +1 -0
  88. package/dist/types/project.d.ts +56 -1
  89. package/dist/types/project.d.ts.map +1 -1
  90. package/dist/types/proposal.d.ts +1161 -0
  91. package/dist/types/proposal.d.ts.map +1 -0
  92. package/dist/types/quote/index.d.ts +2 -2
  93. package/dist/types/quote/index.d.ts.map +1 -1
  94. package/dist/types/stake.d.ts +16 -41
  95. package/dist/types/stake.d.ts.map +1 -1
  96. package/dist/types/treasury.d.ts +16 -0
  97. package/dist/types/treasury.d.ts.map +1 -0
  98. package/dist/types/user.d.ts +188 -0
  99. package/dist/types/user.d.ts.map +1 -0
  100. package/package.json +5 -2
  101. package/dist/esm/client/hook/use-balance.js +0 -57
  102. package/dist/esm/client/hook/use-balance.js.map +0 -1
  103. package/dist/esm/client/hook/use-projects.js +0 -22
  104. package/dist/esm/client/hook/use-projects.js.map +0 -1
  105. package/dist/esm/client/hook/use-proposals.js +0 -29
  106. package/dist/esm/client/hook/use-proposals.js.map +0 -1
  107. package/dist/esm/projects.js +0 -184
  108. package/dist/esm/projects.js.map +0 -1
  109. package/dist/esm/proposals.js +0 -98
  110. package/dist/esm/proposals.js.map +0 -1
  111. package/dist/types/client/hook/use-balance.d.ts +0 -20
  112. package/dist/types/client/hook/use-balance.d.ts.map +0 -1
  113. package/dist/types/client/hook/use-projects.d.ts +0 -6
  114. package/dist/types/client/hook/use-projects.d.ts.map +0 -1
  115. package/dist/types/client/hook/use-proposals.d.ts +0 -16
  116. package/dist/types/client/hook/use-proposals.d.ts.map +0 -1
  117. package/dist/types/projects.d.ts +0 -20
  118. package/dist/types/projects.d.ts.map +0 -1
  119. package/dist/types/proposals.d.ts +0 -20
  120. 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 { useFeeReceiversQuery } from "./hook/use-fee-receivers.js";
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-proposals.js";
14
- import { useStakingQueries } from "./hook/use-stake.js";
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 balancesQuery = useBalanceQuery({
35
- clankerToken,
36
- projectTokenDecimals: project.data?.token.decimals,
37
- pricing: project.data?.pricing,
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
- balances: async () => {
70
- await balancesQuery.refetch();
52
+ pool: async () => {
53
+ await poolQuery.refetch();
71
54
  },
72
- governance: async () => {
55
+ proposals: async () => {
56
+ await proposalsQuery.refetch();
57
+ },
58
+ // Action-based refetches
59
+ afterTrade: async () => {
73
60
  await Promise.all([
74
- governance.currentCycleId.refetch(),
75
- governance.addresses.refetch(),
76
- governance.airdropStatus.refetch(),
61
+ userQuery.refetch(), // Balances changed
62
+ poolQuery.refetch(), // Pool state changed (price impact)
77
63
  ]);
78
64
  },
79
- staking: async () => {
65
+ afterStake: async () => {
80
66
  await Promise.all([
81
- staking.allowance.refetch(),
82
- staking.poolData.refetch(),
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
- proposals: async () => {
93
- await proposalsQueryResult.refetch();
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
- feeReceivers: async () => {
96
- await feeReceiversQuery.refetch();
77
+ afterClaim: async () => {
78
+ await userQuery.refetch(); // Balances, claimable rewards changed
97
79
  },
98
- // Smart cross-domain refetches
99
- afterStake: async () => {
80
+ afterAccrue: async () => {
100
81
  await Promise.all([
101
- balancesQuery.refetch(),
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
- afterSwap: async () => {
85
+ afterVote: async () => {
115
86
  await Promise.all([
116
- balancesQuery.refetch(),
117
- project.refetch(), // Pool data might have changed
87
+ userQuery.refetch(), // User governance data (vote receipt)
88
+ proposalsQuery.refetch(), // Proposal votes updated
118
89
  ]);
119
90
  },
120
- afterGovernance: async () => {
91
+ afterProposal: async () => {
121
92
  await Promise.all([
122
- governance.currentCycleId.refetch(),
123
- governance.addresses.refetch(),
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
- queryClient,
132
- project,
133
- balancesQuery,
134
- governance,
135
- staking,
136
- proposalsQueryResult,
137
- feeReceiversQuery,
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
- balances: balancesQuery,
122
+ pool: poolQuery,
123
+ proposals: proposalsQuery,
152
124
  tokenData,
153
- staking: {
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
- balancesQuery,
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
- * This allows components to update the global token context
154
+ * Automatically updates when the token address changes
155
+ * @param clankerToken - Token address to set (null to clear)
203
156
  */
204
- export const useSetClankerToken = () => useLevrContext().setClankerToken;
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":"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"}
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
- * Balance query keys
12
+ * User query keys (composable data group)
13
13
  */
14
- balance: (tokens, userAddress) => ['balance', tokens, userAddress],
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
- * 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
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: (governorAddress, tokenDecimals, fromBlock, toBlock, pageSize) => ['proposals', governorAddress, tokenDecimals, fromBlock, toBlock, pageSize],
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":"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"}
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"}
@@ -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]: '0xa6ee403ee39a378308793d9f4c9a24fc97d34046',
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 fee receivers for a clanker token
4
+ * Get tokenRewards from LP locker (shared utility)
5
+ * Returns pool info and fee receiver data
5
6
  */
6
- export async function feeReceivers({ publicClient, clankerToken, userAddress, }) {
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
- const info = await publicClient.readContract({
15
+ return await publicClient.readContract({
18
16
  address: lpLockerAddress,
19
17
  abi: IClankerLpLockerMultiple,
20
18
  functionName: "tokenRewards",
21
19
  args: [clankerToken],
22
20
  });
23
- const admins = info?.rewardAdmins || [];
24
- const recipients = info?.rewardRecipients || [];
25
- const bps = info?.rewardBps || [];
26
- const feeReceivers = admins.map((admin, index) => ({
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
- return feeReceivers;
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;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,YAAY,EACZ,YAAY,EACZ,WAAW,GACQ;IACnB,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAA;IACtC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAEpE,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"}
1
+ {"version":3,"file":"fee-receivers.js","sourceRoot":"","sources":["../../src/fee-receivers.ts"],"names":[],"mappings":"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"}