levr-sdk 0.0.1 → 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.
- package/README.md +109 -13
- 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/abis/StateView.js +149 -0
- package/dist/esm/abis/V3QuoterV2.js +26 -0
- package/dist/esm/abis/index.js +4 -0
- package/dist/esm/balance.js +48 -4
- 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 -30
- package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
- package/dist/esm/client/hook/use-governance.js +20 -274
- 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 +28 -16
- 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 -215
- package/dist/esm/client/hook/use-stake.js.map +1 -1
- package/dist/esm/client/hook/use-swap.js +23 -19
- 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 +73 -108
- package/dist/esm/client/levr-provider.js.map +1 -1
- package/dist/esm/client/query-keys.js +10 -22
- package/dist/esm/client/query-keys.js.map +1 -1
- package/dist/esm/constants.js +42 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/fee-receivers.js +28 -13
- package/dist/esm/fee-receivers.js.map +1 -1
- package/dist/esm/governance.js +35 -399
- package/dist/esm/governance.js.map +1 -1
- package/dist/esm/index.js +7 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pool-key.js +152 -0
- package/dist/esm/pool-key.js.map +1 -0
- package/dist/esm/pool.js +70 -0
- package/dist/esm/pool.js.map +1 -0
- package/dist/esm/project.js +415 -118
- 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 +98 -0
- package/dist/esm/quote/index.js.map +1 -0
- package/dist/esm/quote/v3.js +62 -0
- package/dist/esm/quote/v3.js.map +1 -0
- package/dist/esm/quote/v4.js +228 -0
- package/dist/esm/quote/v4.js.map +1 -0
- package/dist/esm/stake.js +34 -237
- 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/usd-price.js +149 -0
- package/dist/esm/usd-price.js.map +1 -0
- package/dist/esm/user.js +153 -0
- package/dist/esm/user.js.map +1 -0
- package/dist/esm/util.js +45 -1
- package/dist/esm/util.js.map +1 -1
- 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/abis/StateView.d.ts +278 -0
- package/dist/types/abis/V3QuoterV2.d.ts +39 -0
- package/dist/types/abis/index.d.ts +2 -0
- package/dist/types/balance.d.ts +19 -6
- package/dist/types/balance.d.ts.map +1 -1
- package/dist/types/client/hook/index.d.ts +12 -4
- 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 -93
- 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 +8 -1
- 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 -168
- package/dist/types/client/hook/use-stake.d.ts.map +1 -1
- package/dist/types/client/hook/use-swap.d.ts +5 -9
- 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 +41 -68
- package/dist/types/client/levr-provider.d.ts.map +1 -1
- package/dist/types/client/query-keys.d.ts +14 -26
- package/dist/types/client/query-keys.d.ts.map +1 -1
- package/dist/types/constants.d.ts +18 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/fee-receivers.d.ts +29 -2
- package/dist/types/fee-receivers.d.ts.map +1 -1
- package/dist/types/governance.d.ts +8 -108
- package/dist/types/governance.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/pool-key.d.ts +121 -0
- package/dist/types/pool-key.d.ts.map +1 -0
- package/dist/types/pool.d.ts +590 -0
- package/dist/types/pool.d.ts.map +1 -0
- package/dist/types/project.d.ts +61 -11
- 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 +97 -0
- package/dist/types/quote/index.d.ts.map +1 -0
- package/dist/types/quote/v3.d.ts +78 -0
- package/dist/types/quote/v3.d.ts.map +1 -0
- package/dist/types/quote/v4.d.ts +95 -0
- package/dist/types/quote/v4.d.ts.map +1 -0
- package/dist/types/stake.d.ts +41 -87
- 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/types.d.ts +15 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/usd-price.d.ts +141 -0
- package/dist/types/usd-price.d.ts.map +1 -0
- package/dist/types/user.d.ts +188 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/util.d.ts +17 -0
- package/dist/types/util.d.ts.map +1 -1
- package/package.json +5 -2
- package/dist/esm/client/hook/use-balance.js +0 -56
- 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 -31
- package/dist/esm/client/hook/use-proposals.js.map +0 -1
- package/dist/esm/projects.js +0 -212
- 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/esm/quote-v4.js +0 -169
- package/dist/esm/quote-v4.js.map +0 -1
- package/dist/types/client/hook/use-balance.d.ts +0 -18
- 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
- package/dist/types/quote-v4.d.ts +0 -54
- package/dist/types/quote-v4.d.ts.map +0 -1
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import type { Project } from './project';
|
|
2
|
+
import type { BalanceResult, PopPublicClient } from './types';
|
|
3
|
+
export type UserParams = {
|
|
4
|
+
publicClient: PopPublicClient;
|
|
5
|
+
userAddress: `0x${string}`;
|
|
6
|
+
project: Project;
|
|
7
|
+
};
|
|
8
|
+
export type UserBalances = {
|
|
9
|
+
token: BalanceResult;
|
|
10
|
+
weth: BalanceResult;
|
|
11
|
+
eth: BalanceResult;
|
|
12
|
+
};
|
|
13
|
+
export type UserStaking = {
|
|
14
|
+
stakedBalance: BalanceResult;
|
|
15
|
+
allowance: BalanceResult;
|
|
16
|
+
claimableRewards: {
|
|
17
|
+
staking: BalanceResult;
|
|
18
|
+
weth: BalanceResult | null;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type User = {
|
|
22
|
+
balances: UserBalances;
|
|
23
|
+
staking: UserStaking;
|
|
24
|
+
votingPower: BalanceResult;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Helper: Get balance contracts for multicall composition
|
|
28
|
+
*/
|
|
29
|
+
export declare function balanceContracts(params: {
|
|
30
|
+
userAddress: `0x${string}`;
|
|
31
|
+
clankerToken: `0x${string}`;
|
|
32
|
+
wethAddress?: `0x${string}`;
|
|
33
|
+
}): {
|
|
34
|
+
address: `0x${string}`;
|
|
35
|
+
abi: readonly [{
|
|
36
|
+
readonly type: "event";
|
|
37
|
+
readonly name: "Approval";
|
|
38
|
+
readonly inputs: readonly [{
|
|
39
|
+
readonly indexed: true;
|
|
40
|
+
readonly name: "owner";
|
|
41
|
+
readonly type: "address";
|
|
42
|
+
}, {
|
|
43
|
+
readonly indexed: true;
|
|
44
|
+
readonly name: "spender";
|
|
45
|
+
readonly type: "address";
|
|
46
|
+
}, {
|
|
47
|
+
readonly indexed: false;
|
|
48
|
+
readonly name: "value";
|
|
49
|
+
readonly type: "uint256";
|
|
50
|
+
}];
|
|
51
|
+
}, {
|
|
52
|
+
readonly type: "event";
|
|
53
|
+
readonly name: "Transfer";
|
|
54
|
+
readonly inputs: readonly [{
|
|
55
|
+
readonly indexed: true;
|
|
56
|
+
readonly name: "from";
|
|
57
|
+
readonly type: "address";
|
|
58
|
+
}, {
|
|
59
|
+
readonly indexed: true;
|
|
60
|
+
readonly name: "to";
|
|
61
|
+
readonly type: "address";
|
|
62
|
+
}, {
|
|
63
|
+
readonly indexed: false;
|
|
64
|
+
readonly name: "value";
|
|
65
|
+
readonly type: "uint256";
|
|
66
|
+
}];
|
|
67
|
+
}, {
|
|
68
|
+
readonly type: "function";
|
|
69
|
+
readonly name: "allowance";
|
|
70
|
+
readonly stateMutability: "view";
|
|
71
|
+
readonly inputs: readonly [{
|
|
72
|
+
readonly name: "owner";
|
|
73
|
+
readonly type: "address";
|
|
74
|
+
}, {
|
|
75
|
+
readonly name: "spender";
|
|
76
|
+
readonly type: "address";
|
|
77
|
+
}];
|
|
78
|
+
readonly outputs: readonly [{
|
|
79
|
+
readonly type: "uint256";
|
|
80
|
+
}];
|
|
81
|
+
}, {
|
|
82
|
+
readonly type: "function";
|
|
83
|
+
readonly name: "approve";
|
|
84
|
+
readonly stateMutability: "nonpayable";
|
|
85
|
+
readonly inputs: readonly [{
|
|
86
|
+
readonly name: "spender";
|
|
87
|
+
readonly type: "address";
|
|
88
|
+
}, {
|
|
89
|
+
readonly name: "amount";
|
|
90
|
+
readonly type: "uint256";
|
|
91
|
+
}];
|
|
92
|
+
readonly outputs: readonly [{
|
|
93
|
+
readonly type: "bool";
|
|
94
|
+
}];
|
|
95
|
+
}, {
|
|
96
|
+
readonly type: "function";
|
|
97
|
+
readonly name: "balanceOf";
|
|
98
|
+
readonly stateMutability: "view";
|
|
99
|
+
readonly inputs: readonly [{
|
|
100
|
+
readonly name: "account";
|
|
101
|
+
readonly type: "address";
|
|
102
|
+
}];
|
|
103
|
+
readonly outputs: readonly [{
|
|
104
|
+
readonly type: "uint256";
|
|
105
|
+
}];
|
|
106
|
+
}, {
|
|
107
|
+
readonly type: "function";
|
|
108
|
+
readonly name: "decimals";
|
|
109
|
+
readonly stateMutability: "view";
|
|
110
|
+
readonly inputs: readonly [];
|
|
111
|
+
readonly outputs: readonly [{
|
|
112
|
+
readonly type: "uint8";
|
|
113
|
+
}];
|
|
114
|
+
}, {
|
|
115
|
+
readonly type: "function";
|
|
116
|
+
readonly name: "name";
|
|
117
|
+
readonly stateMutability: "view";
|
|
118
|
+
readonly inputs: readonly [];
|
|
119
|
+
readonly outputs: readonly [{
|
|
120
|
+
readonly type: "string";
|
|
121
|
+
}];
|
|
122
|
+
}, {
|
|
123
|
+
readonly type: "function";
|
|
124
|
+
readonly name: "symbol";
|
|
125
|
+
readonly stateMutability: "view";
|
|
126
|
+
readonly inputs: readonly [];
|
|
127
|
+
readonly outputs: readonly [{
|
|
128
|
+
readonly type: "string";
|
|
129
|
+
}];
|
|
130
|
+
}, {
|
|
131
|
+
readonly type: "function";
|
|
132
|
+
readonly name: "totalSupply";
|
|
133
|
+
readonly stateMutability: "view";
|
|
134
|
+
readonly inputs: readonly [];
|
|
135
|
+
readonly outputs: readonly [{
|
|
136
|
+
readonly type: "uint256";
|
|
137
|
+
}];
|
|
138
|
+
}, {
|
|
139
|
+
readonly type: "function";
|
|
140
|
+
readonly name: "transfer";
|
|
141
|
+
readonly stateMutability: "nonpayable";
|
|
142
|
+
readonly inputs: readonly [{
|
|
143
|
+
readonly name: "recipient";
|
|
144
|
+
readonly type: "address";
|
|
145
|
+
}, {
|
|
146
|
+
readonly name: "amount";
|
|
147
|
+
readonly type: "uint256";
|
|
148
|
+
}];
|
|
149
|
+
readonly outputs: readonly [{
|
|
150
|
+
readonly type: "bool";
|
|
151
|
+
}];
|
|
152
|
+
}, {
|
|
153
|
+
readonly type: "function";
|
|
154
|
+
readonly name: "transferFrom";
|
|
155
|
+
readonly stateMutability: "nonpayable";
|
|
156
|
+
readonly inputs: readonly [{
|
|
157
|
+
readonly name: "sender";
|
|
158
|
+
readonly type: "address";
|
|
159
|
+
}, {
|
|
160
|
+
readonly name: "recipient";
|
|
161
|
+
readonly type: "address";
|
|
162
|
+
}, {
|
|
163
|
+
readonly name: "amount";
|
|
164
|
+
readonly type: "uint256";
|
|
165
|
+
}];
|
|
166
|
+
readonly outputs: readonly [{
|
|
167
|
+
readonly type: "bool";
|
|
168
|
+
}];
|
|
169
|
+
}];
|
|
170
|
+
functionName: "balanceOf";
|
|
171
|
+
args: `0x${string}`[];
|
|
172
|
+
}[];
|
|
173
|
+
/**
|
|
174
|
+
* Helper: Get user-specific staking contracts for multicall composition
|
|
175
|
+
* Pool-level stats (totalStaked, apr, outstandingRewards) now in project.ts
|
|
176
|
+
*/
|
|
177
|
+
export declare function stakingContracts(params: {
|
|
178
|
+
userAddress: `0x${string}`;
|
|
179
|
+
stakingAddress: `0x${string}`;
|
|
180
|
+
clankerToken: `0x${string}`;
|
|
181
|
+
wethAddress?: `0x${string}`;
|
|
182
|
+
}): any[];
|
|
183
|
+
/**
|
|
184
|
+
* Get all user-related data in a single efficient multicall
|
|
185
|
+
* Composes balances, staking, and governance data with USD values
|
|
186
|
+
*/
|
|
187
|
+
export declare function getUser({ publicClient, userAddress, project }: UserParams): Promise<User>;
|
|
188
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/user.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE7D,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,eAAe,CAAA;IAC7B,WAAW,EAAE,KAAK,MAAM,EAAE,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,aAAa,CAAA;IACpB,IAAI,EAAE,aAAa,CAAA;IACnB,GAAG,EAAE,aAAa,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,SAAS,EAAE,aAAa,CAAA;IACxB,gBAAgB,EAAE;QAChB,OAAO,EAAE,aAAa,CAAA;QACtB,IAAI,EAAE,aAAa,GAAG,IAAI,CAAA;KAC3B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,EAAE,YAAY,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,WAAW,EAAE,aAAa,CAAA;CAC3B,CAAA;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAA;IAC1B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;CAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoBA;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAA;IAC1B,cAAc,EAAE,KAAK,MAAM,EAAE,CAAA;IAC7B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;CAC5B,SAsCA;AAMD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF/F"}
|
package/dist/types/util.d.ts
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
import type { PopPublicClient } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Get a configured public client for a given chain
|
|
4
|
+
* @param chainId - The chain ID to connect to
|
|
5
|
+
* @param rpcUrl - Optional custom RPC URL (falls back to public endpoints)
|
|
6
|
+
* @returns Configured public client
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // Use default public RPC
|
|
11
|
+
* const client = getPublicClient(8453)
|
|
12
|
+
*
|
|
13
|
+
* // Use custom RPC
|
|
14
|
+
* const client = getPublicClient(8453, 'https://my-rpc.com')
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare function getPublicClient(chainId: number, rpcUrl?: string): PopPublicClient;
|
|
1
18
|
/**
|
|
2
19
|
* Check if approval is needed for a given amount
|
|
3
20
|
*/
|
package/dist/types/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAU9C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,CAsBjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAC1C,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EACxC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAiBT"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "levr-sdk",
|
|
3
3
|
"description": "Leverage your Clanker launch with DAO capabilities",
|
|
4
|
-
"version": "0.0
|
|
4
|
+
"version": "0.1.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"exports": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"update-abis": "bun run script/update-abis.ts && prettier --write src/abis/**/*.ts",
|
|
24
24
|
"watch": "bun run script/tsgo-watch.ts",
|
|
25
25
|
"type-check": "tsgo --noEmit --pretty",
|
|
26
|
-
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"",
|
|
26
|
+
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\" && eslint --fix --quiet",
|
|
27
27
|
"lint": "eslint",
|
|
28
28
|
"fill-placeholders": "sh ./script/fill-placeholders.sh",
|
|
29
29
|
"warp": "bun -e \"import { warpAnvil } from './test/util.ts'; await warpAnvil(120)\"",
|
|
@@ -69,10 +69,13 @@
|
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@commitlint/cli": "^19.8.1",
|
|
71
71
|
"@commitlint/config-conventional": "^19.8.1",
|
|
72
|
+
"@happy-dom/global-registrator": "^20.0.0",
|
|
73
|
+
"@testing-library/react": "^16.3.0",
|
|
72
74
|
"@types/bun": "^1.2.22",
|
|
73
75
|
"@types/debug": "^4.1.12",
|
|
74
76
|
"eslint-plugin-prettier": "^5.5.4",
|
|
75
77
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
78
|
+
"happy-dom": "^20.0.0",
|
|
76
79
|
"husky": "^9.1.7",
|
|
77
80
|
"lint-staged": "^15.5.2",
|
|
78
81
|
"pinst": "^3.0.0",
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3
|
-
import { useMemo } from "react";
|
|
4
|
-
import { zeroAddress } from "viem";
|
|
5
|
-
import { useAccount, useChainId, usePublicClient } from "wagmi";
|
|
6
|
-
import { balance } from "../../balance.js";
|
|
7
|
-
import { WETH } from "../../constants.js";
|
|
8
|
-
import { queryKeys } from "../query-keys.js";
|
|
9
|
-
/**
|
|
10
|
-
* Internal: Creates balance query with all logic
|
|
11
|
-
* Used by LevrProvider
|
|
12
|
-
*/
|
|
13
|
-
export function useBalanceQuery({ clankerToken, projectTokenDecimals = 18, enabled: e = true, }) {
|
|
14
|
-
const publicClient = usePublicClient();
|
|
15
|
-
const chainId = useChainId();
|
|
16
|
-
const { address: userAddress } = useAccount();
|
|
17
|
-
const wethAddress = WETH(chainId)?.address;
|
|
18
|
-
const tokenAddresses = useMemo(() => {
|
|
19
|
-
const addresses = [];
|
|
20
|
-
if (clankerToken) {
|
|
21
|
-
addresses.push({
|
|
22
|
-
address: clankerToken,
|
|
23
|
-
decimals: projectTokenDecimals,
|
|
24
|
-
key: "token",
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
if (wethAddress) {
|
|
28
|
-
addresses.push({
|
|
29
|
-
address: wethAddress,
|
|
30
|
-
decimals: 18,
|
|
31
|
-
key: "weth",
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
// Add native ETH balance
|
|
35
|
-
addresses.push({
|
|
36
|
-
address: zeroAddress,
|
|
37
|
-
decimals: 18,
|
|
38
|
-
key: "eth",
|
|
39
|
-
});
|
|
40
|
-
return addresses;
|
|
41
|
-
}, [clankerToken, projectTokenDecimals, wethAddress]);
|
|
42
|
-
return useQuery({
|
|
43
|
-
queryKey: queryKeys.balance(tokenAddresses.map((t) => t.address).join(","), userAddress),
|
|
44
|
-
queryFn: async () => {
|
|
45
|
-
if (!userAddress || tokenAddresses.length === 0)
|
|
46
|
-
return {};
|
|
47
|
-
return balance({
|
|
48
|
-
publicClient: publicClient,
|
|
49
|
-
address: userAddress,
|
|
50
|
-
tokens: tokenAddresses,
|
|
51
|
-
});
|
|
52
|
-
},
|
|
53
|
-
enabled: e && !!publicClient && !!userAddress && tokenAddresses.length > 0,
|
|
54
|
-
refetchInterval: 10000,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-balance.js","sourceRoot":"","sources":["../../../../src/client/hook/use-balance.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAczC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,YAAY,EACZ,oBAAoB,GAAG,EAAE,EACzB,OAAO,EAAE,CAAC,GAAG,IAAI,GACK;IACtB,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IACtC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAAA;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAE1C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,SAAS,GAA+D,EAAE,CAAA;QAEhF,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,YAAY;gBACrB,QAAQ,EAAE,oBAAoB;gBAC9B,GAAG,EAAE,OAAO;aACb,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,EAAE;gBACZ,GAAG,EAAE,MAAM;aACZ,CAAC,CAAA;QACJ,CAAC;QAED,yBAAyB;QACzB,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,EAAE;YACZ,GAAG,EAAE,KAAK;SACX,CAAC,CAAA;QAEF,OAAO,SAAS,CAAA;IAClB,CAAC,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAA;IAErD,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAY,CAAC;QACzF,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC1D,OAAO,OAAO,CAAC;gBACb,YAAY,EAAE,YAAa;gBAC3B,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,cAAc;aACvB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,WAAW,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;QAC1E,eAAe,EAAE,MAAM;KACxB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3
|
-
import { useAccount, usePublicClient } from "wagmi";
|
|
4
|
-
import { GET_FACTORY_ADDRESS } from "../../constants.js";
|
|
5
|
-
import { projects } from "../../projects.js";
|
|
6
|
-
export function useProjects({ enabled: e = true, ...params } = {}) {
|
|
7
|
-
const { chainId } = useAccount();
|
|
8
|
-
const publicClient = usePublicClient();
|
|
9
|
-
const factoryAddress = GET_FACTORY_ADDRESS(chainId);
|
|
10
|
-
const enabled = !!publicClient && !!factoryAddress && e;
|
|
11
|
-
return useQuery({
|
|
12
|
-
queryKey: ["projects", factoryAddress, chainId, params],
|
|
13
|
-
enabled,
|
|
14
|
-
queryFn: () => projects({
|
|
15
|
-
publicClient: publicClient,
|
|
16
|
-
factoryAddress: factoryAddress,
|
|
17
|
-
chainId: chainId,
|
|
18
|
-
...params,
|
|
19
|
-
}),
|
|
20
|
-
staleTime: 30000,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-projects.js","sourceRoot":"","sources":["../../../../src/client/hook/use-projects.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAMzC,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,KAAwB,EAAE;IAClF,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAChC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IACtC,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAA;IAEvD,OAAO,QAAQ,CAAiB;QAC9B,QAAQ,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC;QACvD,OAAO;QACP,OAAO,EAAE,GAAG,EAAE,CACZ,QAAQ,CAAC;YACP,YAAY,EAAE,YAAa;YAC3B,cAAc,EAAE,cAAe;YAC/B,OAAO,EAAE,OAAQ;YACjB,GAAG,MAAM;SACV,CAAC;QACJ,SAAS,EAAE,MAAM;KAClB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3
|
-
import { usePublicClient } from "wagmi";
|
|
4
|
-
import { proposals as proposalsListQuery } from "../../proposals.js";
|
|
5
|
-
import { queryKeys } from "../query-keys.js";
|
|
6
|
-
/**
|
|
7
|
-
* Internal: Creates proposals query with all logic
|
|
8
|
-
* Used by LevrProvider
|
|
9
|
-
*/
|
|
10
|
-
export function useProposalsQuery({ governorAddress, tokenDecimals = 18, enabled: e = true, }) {
|
|
11
|
-
const publicClient = usePublicClient();
|
|
12
|
-
return useQuery({
|
|
13
|
-
queryKey: queryKeys.proposals(governorAddress, tokenDecimals, undefined, "latest", 50),
|
|
14
|
-
queryFn: async () => {
|
|
15
|
-
if (!publicClient || !governorAddress)
|
|
16
|
-
return null;
|
|
17
|
-
return proposalsListQuery({
|
|
18
|
-
publicClient,
|
|
19
|
-
governorAddress,
|
|
20
|
-
tokenDecimals,
|
|
21
|
-
fromBlock: undefined,
|
|
22
|
-
toBlock: "latest",
|
|
23
|
-
pageSize: 50,
|
|
24
|
-
});
|
|
25
|
-
},
|
|
26
|
-
enabled: e && !!publicClient && !!governorAddress,
|
|
27
|
-
retry: 1,
|
|
28
|
-
staleTime: 5000,
|
|
29
|
-
refetchInterval: 30000,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-proposals.js","sourceRoot":"","sources":["../../../../src/client/hook/use-proposals.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAGvC,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAYzC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,eAAe,EACf,aAAa,GAAG,EAAE,EAClB,OAAO,EAAE,CAAC,GAAG,IAAI,GACO;IACxB,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IAEtC,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,eAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;QACvF,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAA;YAClD,OAAO,kBAAkB,CAAC;gBACxB,YAAY;gBACZ,eAAe;gBACf,aAAa;gBACb,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,EAAE;aACb,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,eAAe;QACjD,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,KAAK;KACvB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/esm/projects.js
DELETED
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
import { erc20Abi, formatUnits, zeroAddress } from "viem";
|
|
2
|
-
import { IClankerToken, LevrFactory_v1 } from "./abis/index.js";
|
|
3
|
-
import { WETH } from "./constants.js";
|
|
4
|
-
const registeredEvent = LevrFactory_v1.find((item) => item.type === "event" && item.name === "Registered");
|
|
5
|
-
/**
|
|
6
|
-
* Get multiple projects data
|
|
7
|
-
*/
|
|
8
|
-
export async function projects({ publicClient, factoryAddress, chainId, fromBlock, toBlock = "latest", pageSize = 100, }) {
|
|
9
|
-
if (Object.values({ publicClient, factoryAddress, chainId }).some((value) => !value)) {
|
|
10
|
-
throw new Error("Invalid projects params");
|
|
11
|
-
}
|
|
12
|
-
// Determine block range
|
|
13
|
-
const latestBlock = await publicClient.getBlockNumber();
|
|
14
|
-
const from = fromBlock ?? latestBlock - latestBlock / 10n; // Default to last 10% of blocks
|
|
15
|
-
const to = toBlock === "latest" ? latestBlock : toBlock;
|
|
16
|
-
// Fetch Registered events - indexed events are efficient even across large ranges
|
|
17
|
-
const allLogs = (await publicClient.getLogs({
|
|
18
|
-
address: factoryAddress,
|
|
19
|
-
event: registeredEvent,
|
|
20
|
-
fromBlock: from,
|
|
21
|
-
toBlock: to,
|
|
22
|
-
}));
|
|
23
|
-
// Sort by block number descending (most recent first)
|
|
24
|
-
const logs = allLogs.sort((a, b) => {
|
|
25
|
-
if (a.blockNumber > b.blockNumber)
|
|
26
|
-
return -1;
|
|
27
|
-
if (a.blockNumber < b.blockNumber)
|
|
28
|
-
return 1;
|
|
29
|
-
return 0;
|
|
30
|
-
});
|
|
31
|
-
// Limit to pageSize
|
|
32
|
-
const limitedLogs = logs.slice(0, pageSize);
|
|
33
|
-
if (limitedLogs.length === 0) {
|
|
34
|
-
return {
|
|
35
|
-
projects: [],
|
|
36
|
-
fromBlock: from,
|
|
37
|
-
toBlock: to,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
// Extract unique clanker tokens
|
|
41
|
-
const clankerTokens = limitedLogs.map((log) => log.args.clankerToken);
|
|
42
|
-
// First, get project contracts for all tokens
|
|
43
|
-
const projectContracts = await publicClient.multicall({
|
|
44
|
-
contracts: clankerTokens.map((token) => ({
|
|
45
|
-
address: factoryAddress,
|
|
46
|
-
abi: LevrFactory_v1,
|
|
47
|
-
functionName: "getProjectContracts",
|
|
48
|
-
args: [token],
|
|
49
|
-
})),
|
|
50
|
-
});
|
|
51
|
-
// Filter out unregistered projects and prepare valid tokens with their contracts
|
|
52
|
-
const validTokensWithContracts = clankerTokens
|
|
53
|
-
.map((token, index) => {
|
|
54
|
-
const projectResult = projectContracts[index].result;
|
|
55
|
-
if ([
|
|
56
|
-
projectResult.treasury,
|
|
57
|
-
projectResult.governor,
|
|
58
|
-
projectResult.staking,
|
|
59
|
-
projectResult.stakedToken,
|
|
60
|
-
].some((a) => a === zeroAddress)) {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
return { token, contracts: projectResult };
|
|
64
|
-
})
|
|
65
|
-
.filter(Boolean);
|
|
66
|
-
if (validTokensWithContracts.length === 0) {
|
|
67
|
-
return {
|
|
68
|
-
projects: [],
|
|
69
|
-
fromBlock: from,
|
|
70
|
-
toBlock: to,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
// Batch fetch all token metadata and treasury stats
|
|
74
|
-
const contracts = validTokensWithContracts.flatMap(({ token, contracts }) => [
|
|
75
|
-
// Token metadata
|
|
76
|
-
{
|
|
77
|
-
address: token,
|
|
78
|
-
abi: erc20Abi,
|
|
79
|
-
functionName: "decimals",
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
address: token,
|
|
83
|
-
abi: erc20Abi,
|
|
84
|
-
functionName: "name",
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
address: token,
|
|
88
|
-
abi: erc20Abi,
|
|
89
|
-
functionName: "symbol",
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
address: token,
|
|
93
|
-
abi: erc20Abi,
|
|
94
|
-
functionName: "totalSupply",
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
address: token,
|
|
98
|
-
abi: IClankerToken,
|
|
99
|
-
functionName: "metadata",
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
address: token,
|
|
103
|
-
abi: IClankerToken,
|
|
104
|
-
functionName: "imageUrl",
|
|
105
|
-
},
|
|
106
|
-
// Treasury stats
|
|
107
|
-
{
|
|
108
|
-
address: token,
|
|
109
|
-
abi: erc20Abi,
|
|
110
|
-
functionName: "balanceOf",
|
|
111
|
-
args: [contracts.treasury],
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
address: token,
|
|
115
|
-
abi: erc20Abi,
|
|
116
|
-
functionName: "balanceOf",
|
|
117
|
-
args: [contracts.staking],
|
|
118
|
-
},
|
|
119
|
-
]);
|
|
120
|
-
const results = await publicClient.multicall({ contracts });
|
|
121
|
-
// Parse results into Project objects
|
|
122
|
-
const projects = [];
|
|
123
|
-
const callsPerProject = 8; // Updated to include treasury and staking balance
|
|
124
|
-
for (let i = 0; i < validTokensWithContracts.length; i++) {
|
|
125
|
-
const { token, contracts: projectContracts } = validTokensWithContracts[i];
|
|
126
|
-
const offset = i * callsPerProject;
|
|
127
|
-
const decimals = results[offset].result;
|
|
128
|
-
const name = results[offset + 1].result;
|
|
129
|
-
const symbol = results[offset + 2].result;
|
|
130
|
-
const totalSupply = results[offset + 3].result;
|
|
131
|
-
const metadataStr = results[offset + 4].result;
|
|
132
|
-
const imageUrl = results[offset + 5].result;
|
|
133
|
-
const treasuryBalance = results[offset + 6].result;
|
|
134
|
-
const stakingBalance = results[offset + 7].result;
|
|
135
|
-
// Parse metadata JSON
|
|
136
|
-
let parsedMetadata = null;
|
|
137
|
-
if (metadataStr) {
|
|
138
|
-
try {
|
|
139
|
-
parsedMetadata = JSON.parse(metadataStr);
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
// If parsing fails, leave as null
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
// Calculate treasury stats
|
|
146
|
-
const totalAllocated = treasuryBalance + stakingBalance;
|
|
147
|
-
const utilization = totalSupply > 0n
|
|
148
|
-
? Number((totalAllocated * 10000n) / totalSupply) / 100 // Convert to percentage
|
|
149
|
-
: 0;
|
|
150
|
-
const treasuryStats = {
|
|
151
|
-
balance: {
|
|
152
|
-
raw: treasuryBalance,
|
|
153
|
-
formatted: formatUnits(treasuryBalance, decimals),
|
|
154
|
-
},
|
|
155
|
-
totalAllocated: {
|
|
156
|
-
raw: totalAllocated,
|
|
157
|
-
formatted: formatUnits(totalAllocated, decimals),
|
|
158
|
-
},
|
|
159
|
-
utilization,
|
|
160
|
-
};
|
|
161
|
-
// Extract pool information
|
|
162
|
-
// Clanker V4 tokens are always paired with WETH and use the token as the hook
|
|
163
|
-
let poolInfo;
|
|
164
|
-
try {
|
|
165
|
-
const wethAddress = WETH(chainId)?.address;
|
|
166
|
-
if (wethAddress) {
|
|
167
|
-
// Determine currency ordering (currency0 < currency1)
|
|
168
|
-
const isTokenCurrency0 = token.toLowerCase() < wethAddress.toLowerCase();
|
|
169
|
-
// Standard Clanker V4 pool configuration
|
|
170
|
-
const fee = 3000; // 0.3% fee
|
|
171
|
-
const tickSpacing = 60;
|
|
172
|
-
poolInfo = {
|
|
173
|
-
poolKey: {
|
|
174
|
-
currency0: isTokenCurrency0 ? token : wethAddress,
|
|
175
|
-
currency1: isTokenCurrency0 ? wethAddress : token,
|
|
176
|
-
fee,
|
|
177
|
-
tickSpacing,
|
|
178
|
-
hooks: token, // Token acts as the hook in Clanker V4
|
|
179
|
-
},
|
|
180
|
-
feeDisplay: `${(fee / 10000).toFixed(2)}%`,
|
|
181
|
-
numPositions: 0n, // Would need separate query for actual count
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
catch {
|
|
186
|
-
// If construction fails, poolInfo remains undefined
|
|
187
|
-
}
|
|
188
|
-
projects.push({
|
|
189
|
-
treasury: projectContracts.treasury,
|
|
190
|
-
governor: projectContracts.governor,
|
|
191
|
-
staking: projectContracts.staking,
|
|
192
|
-
stakedToken: projectContracts.stakedToken,
|
|
193
|
-
token: {
|
|
194
|
-
address: token,
|
|
195
|
-
decimals,
|
|
196
|
-
name,
|
|
197
|
-
symbol,
|
|
198
|
-
totalSupply,
|
|
199
|
-
metadata: parsedMetadata,
|
|
200
|
-
imageUrl,
|
|
201
|
-
},
|
|
202
|
-
pool: poolInfo,
|
|
203
|
-
treasuryStats,
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
return {
|
|
207
|
-
projects,
|
|
208
|
-
fromBlock: from,
|
|
209
|
-
toBlock: to,
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
//# sourceMappingURL=projects.js.map
|
package/dist/esm/projects.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/projects.ts"],"names":[],"mappings":"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"}
|