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
|
@@ -2,7 +2,6 @@ import type { PopPublicClient, PopWalletClient } from './types';
|
|
|
2
2
|
export type FeeReceiversParams = {
|
|
3
3
|
publicClient: PopPublicClient;
|
|
4
4
|
clankerToken: `0x${string}`;
|
|
5
|
-
chainId: number;
|
|
6
5
|
userAddress?: `0x${string}`;
|
|
7
6
|
};
|
|
8
7
|
export type FeeReceiverAdmin = {
|
|
@@ -18,10 +17,38 @@ export type UpdateFeeReceiverParams = {
|
|
|
18
17
|
rewardIndex: bigint | number;
|
|
19
18
|
newRecipient: `0x${string}`;
|
|
20
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Get tokenRewards from LP locker (shared utility)
|
|
22
|
+
* Returns pool info and fee receiver data
|
|
23
|
+
*/
|
|
24
|
+
export declare function getTokenRewards(publicClient: PopPublicClient, clankerToken: `0x${string}`): Promise<{
|
|
25
|
+
token: `0x${string}`;
|
|
26
|
+
poolKey: {
|
|
27
|
+
currency0: `0x${string}`;
|
|
28
|
+
currency1: `0x${string}`;
|
|
29
|
+
fee: number;
|
|
30
|
+
tickSpacing: number;
|
|
31
|
+
hooks: `0x${string}`;
|
|
32
|
+
};
|
|
33
|
+
positionId: bigint;
|
|
34
|
+
numPositions: bigint;
|
|
35
|
+
rewardBps: readonly number[];
|
|
36
|
+
rewardAdmins: readonly `0x${string}`[];
|
|
37
|
+
rewardRecipients: readonly `0x${string}`[];
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* Parse fee receivers from tokenRewards result
|
|
41
|
+
* Shared utility to avoid logic duplication
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseFeeReceivers(tokenRewardsResult: {
|
|
44
|
+
rewardAdmins?: readonly `0x${string}`[];
|
|
45
|
+
rewardRecipients?: readonly `0x${string}`[];
|
|
46
|
+
rewardBps?: readonly number[];
|
|
47
|
+
}, userAddress?: `0x${string}`): FeeReceiverAdmin[];
|
|
21
48
|
/**
|
|
22
49
|
* Get fee receivers for a clanker token
|
|
23
50
|
*/
|
|
24
|
-
export declare function feeReceivers({ publicClient, clankerToken,
|
|
51
|
+
export declare function feeReceivers({ publicClient, clankerToken, userAddress, }: FeeReceiversParams): Promise<FeeReceiverAdmin[] | undefined>;
|
|
25
52
|
/**
|
|
26
53
|
* Update fee receiver for a clanker token
|
|
27
54
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fee-receivers.d.ts","sourceRoot":"","sources":["../../src/fee-receivers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,eAAe,CAAA;IAC7B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAA;IAC3B,
|
|
1
|
+
{"version":3,"file":"fee-receivers.d.ts","sourceRoot":"","sources":["../../src/fee-receivers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,eAAe,CAAA;IAC7B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,OAAO,CAAA;IACtB,KAAK,EAAE,KAAK,MAAM,EAAE,CAAA;IACpB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,eAAe,CAAA;IAC7B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE;;;;;;;;;;;;;;GAe/F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,kBAAkB,EAAE;IAClB,YAAY,CAAC,EAAE,SAAS,KAAK,MAAM,EAAE,EAAE,CAAA;IACvC,gBAAgB,CAAC,EAAE,SAAS,KAAK,MAAM,EAAE,EAAE,CAAA;IAC3C,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9B,EACD,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,GAC1B,gBAAgB,EAAE,CAWpB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,EACjC,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAO9D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,WAAW,EACX,YAAY,GACb,EAAE,uBAAuB,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAqBlD"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { TransactionReceipt } from 'viem';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Project } from '.';
|
|
3
|
+
import type { BalanceResult, PopPublicClient, PopWalletClient } from './types';
|
|
3
4
|
export type GovernanceConfig = {
|
|
4
5
|
wallet: PopWalletClient;
|
|
5
6
|
publicClient: PopPublicClient;
|
|
6
|
-
|
|
7
|
-
tokenDecimals: number;
|
|
8
|
-
clankerToken: `0x${string}`;
|
|
9
|
-
trustedForwarder?: `0x${string}`;
|
|
7
|
+
project: Project;
|
|
10
8
|
};
|
|
11
9
|
export type ProposalDetails = {
|
|
12
10
|
id: bigint;
|
|
@@ -28,10 +26,7 @@ export type FormattedProposalDetails = {
|
|
|
28
26
|
id: bigint;
|
|
29
27
|
proposalType: number;
|
|
30
28
|
proposer: `0x${string}`;
|
|
31
|
-
amount:
|
|
32
|
-
raw: bigint;
|
|
33
|
-
formatted: string;
|
|
34
|
-
};
|
|
29
|
+
amount: BalanceResult;
|
|
35
30
|
recipient: `0x${string}`;
|
|
36
31
|
description: string;
|
|
37
32
|
createdAt: {
|
|
@@ -46,14 +41,8 @@ export type FormattedProposalDetails = {
|
|
|
46
41
|
timestamp: bigint;
|
|
47
42
|
date: Date;
|
|
48
43
|
};
|
|
49
|
-
yesVotes:
|
|
50
|
-
|
|
51
|
-
formatted: string;
|
|
52
|
-
};
|
|
53
|
-
noVotes: {
|
|
54
|
-
raw: bigint;
|
|
55
|
-
formatted: string;
|
|
56
|
-
};
|
|
44
|
+
yesVotes: BalanceResult;
|
|
45
|
+
noVotes: BalanceResult;
|
|
57
46
|
totalBalanceVoted: bigint;
|
|
58
47
|
executed: boolean;
|
|
59
48
|
cycleId: bigint;
|
|
@@ -74,10 +63,7 @@ export type ExecuteProposalConfig = {
|
|
|
74
63
|
export declare class Governance {
|
|
75
64
|
private wallet;
|
|
76
65
|
private publicClient;
|
|
77
|
-
private
|
|
78
|
-
private tokenDecimals;
|
|
79
|
-
private clankerToken;
|
|
80
|
-
private userAddress;
|
|
66
|
+
private project;
|
|
81
67
|
constructor(config: GovernanceConfig);
|
|
82
68
|
/**
|
|
83
69
|
* Propose a transfer from treasury to recipient
|
|
@@ -102,22 +88,6 @@ export declare class Governance {
|
|
|
102
88
|
* Note: Automatically starts a new cycle after successful execution
|
|
103
89
|
*/
|
|
104
90
|
executeProposal(proposalId: number | bigint): Promise<TransactionReceipt>;
|
|
105
|
-
/**
|
|
106
|
-
* Get proposal details by ID
|
|
107
|
-
*/
|
|
108
|
-
getProposal(proposalId: number | bigint): Promise<FormattedProposalDetails>;
|
|
109
|
-
/**
|
|
110
|
-
* Get current cycle ID
|
|
111
|
-
*/
|
|
112
|
-
getCurrentCycleId(): Promise<bigint>;
|
|
113
|
-
/**
|
|
114
|
-
* Get all proposal IDs for a specific cycle
|
|
115
|
-
*/
|
|
116
|
-
getProposalsForCycle(cycleId: number | bigint): Promise<readonly bigint[]>;
|
|
117
|
-
/**
|
|
118
|
-
* Get the winner proposal ID for a cycle
|
|
119
|
-
*/
|
|
120
|
-
getWinner(cycleId: number | bigint): Promise<bigint>;
|
|
121
91
|
/**
|
|
122
92
|
* Get vote receipt for a user on a proposal
|
|
123
93
|
*/
|
|
@@ -126,79 +96,9 @@ export declare class Governance {
|
|
|
126
96
|
support: boolean;
|
|
127
97
|
votes: bigint;
|
|
128
98
|
}>;
|
|
129
|
-
/**
|
|
130
|
-
* Get voting power snapshot for a user at proposal creation
|
|
131
|
-
*/
|
|
132
|
-
getVotingPowerSnapshot(proposalId: number | bigint, user?: `0x${string}`): Promise<bigint>;
|
|
133
|
-
/**
|
|
134
|
-
* Check if proposal meets quorum
|
|
135
|
-
*/
|
|
136
|
-
meetsQuorum(proposalId: number | bigint): Promise<boolean>;
|
|
137
|
-
/**
|
|
138
|
-
* Check if proposal meets approval threshold
|
|
139
|
-
*/
|
|
140
|
-
meetsApproval(proposalId: number | bigint): Promise<boolean>;
|
|
141
|
-
/**
|
|
142
|
-
* Get proposal state (Pending, Active, Defeated, Succeeded, Executed)
|
|
143
|
-
*/
|
|
144
|
-
getProposalState(proposalId: number | bigint): Promise<number>;
|
|
145
|
-
/**
|
|
146
|
-
* Get active proposal count for a specific proposal type
|
|
147
|
-
*/
|
|
148
|
-
getActiveProposalCount(proposalType: number): Promise<bigint>;
|
|
149
|
-
/**
|
|
150
|
-
* Get factory address
|
|
151
|
-
*/
|
|
152
|
-
getFactory(): Promise<`0x${string}`>;
|
|
153
|
-
/**
|
|
154
|
-
* Get treasury address
|
|
155
|
-
*/
|
|
156
|
-
getTreasury(): Promise<`0x${string}`>;
|
|
157
|
-
/**
|
|
158
|
-
* Get staked token address
|
|
159
|
-
*/
|
|
160
|
-
getStakedToken(): Promise<`0x${string}`>;
|
|
161
|
-
/**
|
|
162
|
-
* Propose transfer and execute in sequence (for testing convenience)
|
|
163
|
-
*/
|
|
164
|
-
proposeAndExecuteTransfer(recipient: `0x${string}`, amount: number | string | bigint, description: string): Promise<{
|
|
165
|
-
proposeReceipt: TransactionReceipt;
|
|
166
|
-
executeReceipt: TransactionReceipt;
|
|
167
|
-
proposalId: bigint;
|
|
168
|
-
}>;
|
|
169
|
-
/**
|
|
170
|
-
* Propose boost and execute in sequence (for testing convenience)
|
|
171
|
-
*/
|
|
172
|
-
proposeAndExecuteBoost(amount: number | string | bigint): Promise<{
|
|
173
|
-
proposeReceipt: TransactionReceipt;
|
|
174
|
-
executeReceipt: TransactionReceipt;
|
|
175
|
-
proposalId: bigint;
|
|
176
|
-
}>;
|
|
177
|
-
/**
|
|
178
|
-
* Find treasury airdrop allocation by checking all known amounts using multicall
|
|
179
|
-
*/
|
|
180
|
-
private findTreasuryAllocation;
|
|
181
|
-
/**
|
|
182
|
-
* Get available airdrop amount for treasury using known amounts
|
|
183
|
-
*/
|
|
184
|
-
getAvailableAirdropAmount(): Promise<bigint>;
|
|
185
|
-
/**
|
|
186
|
-
* Get airdrop status for treasury with detailed status information
|
|
187
|
-
*/
|
|
188
|
-
getAirdropStatus(): Promise<{
|
|
189
|
-
availableAmount: {
|
|
190
|
-
raw: bigint;
|
|
191
|
-
formatted: string;
|
|
192
|
-
};
|
|
193
|
-
allocatedAmount: {
|
|
194
|
-
raw: bigint;
|
|
195
|
-
formatted: string;
|
|
196
|
-
};
|
|
197
|
-
isAvailable: boolean;
|
|
198
|
-
error?: string;
|
|
199
|
-
}>;
|
|
200
99
|
/**
|
|
201
100
|
* Claim airdrop for treasury
|
|
101
|
+
* Uses airdrop data from project that was already fetched
|
|
202
102
|
*/
|
|
203
103
|
claimAirdrop(): Promise<TransactionReceipt>;
|
|
204
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/governance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/governance.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -6,13 +6,17 @@ export * from './constants';
|
|
|
6
6
|
export * from './deploy-v4';
|
|
7
7
|
export * from './fee-receivers';
|
|
8
8
|
export * from './governance';
|
|
9
|
+
export * from './pool';
|
|
10
|
+
export * from './pool-key';
|
|
9
11
|
export * from './project';
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './quote-v4';
|
|
12
|
+
export * from './proposal';
|
|
13
|
+
export * from './quote';
|
|
13
14
|
export * from './schema';
|
|
14
15
|
export * from './stake';
|
|
15
16
|
export * from './swap-v4';
|
|
17
|
+
export * from './treasury';
|
|
16
18
|
export * from './types';
|
|
19
|
+
export * from './usd-price';
|
|
20
|
+
export * from './user';
|
|
17
21
|
export * from './util';
|
|
18
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { PublicClient } from 'viem';
|
|
2
|
+
import type { PoolKey } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* @description Sort two token addresses for pool key (currency0 < currency1)
|
|
5
|
+
*/
|
|
6
|
+
export declare const sortTokens: (tokenA: `0x${string}`, tokenB: `0x${string}`) => [`0x${string}`, `0x${string}`];
|
|
7
|
+
/**
|
|
8
|
+
* @description Default pool configuration
|
|
9
|
+
* 0.3% fee tier is the most common on Uniswap
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_POOL_CONFIG: {
|
|
12
|
+
readonly fee: 3000;
|
|
13
|
+
readonly tickSpacing: 60;
|
|
14
|
+
readonly hooks: "0x0000000000000000000000000000000000000000";
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @description Create a pool key for two tokens
|
|
18
|
+
* @param token0 First token address
|
|
19
|
+
* @param token1 Second token address
|
|
20
|
+
* @param fee Fee tier (in hundredths of a bip, e.g. 3000 = 0.3%). Defaults to 3000 (0.3%)
|
|
21
|
+
* @param tickSpacing Tick spacing. Defaults to 60 (for 0.3% fee tier)
|
|
22
|
+
* @param hooks Hooks address. Defaults to zero address (no hooks)
|
|
23
|
+
* @returns Properly sorted PoolKey
|
|
24
|
+
*/
|
|
25
|
+
export declare const createPoolKey: (token0: `0x${string}`, token1: `0x${string}`, fee?: number, tickSpacing?: number, hooks?: `0x${string}`) => PoolKey;
|
|
26
|
+
/**
|
|
27
|
+
* @description Calculate pool ID from pool key (keccak256 of abi.encode(PoolKey))
|
|
28
|
+
* @param poolKey Pool key
|
|
29
|
+
* @returns Pool ID as bytes32
|
|
30
|
+
*/
|
|
31
|
+
export declare const getPoolId: (poolKey: PoolKey) => `0x${string}`;
|
|
32
|
+
/**
|
|
33
|
+
* @description Common fee tiers and their corresponding tick spacings
|
|
34
|
+
* Ordered by preference: 0.3% is most common for major pairs, then 0.05%, then 1%
|
|
35
|
+
* From Uniswap V4 documentation
|
|
36
|
+
*/
|
|
37
|
+
export declare const COMMON_FEE_TIERS: readonly [{
|
|
38
|
+
readonly fee: 3000;
|
|
39
|
+
readonly tickSpacing: 60;
|
|
40
|
+
}, {
|
|
41
|
+
readonly fee: 500;
|
|
42
|
+
readonly tickSpacing: 10;
|
|
43
|
+
}, {
|
|
44
|
+
readonly fee: 10000;
|
|
45
|
+
readonly tickSpacing: 200;
|
|
46
|
+
}];
|
|
47
|
+
/**
|
|
48
|
+
* @description Parameters for discovering a pool
|
|
49
|
+
*/
|
|
50
|
+
export type DiscoverPoolParams = {
|
|
51
|
+
publicClient: PublicClient;
|
|
52
|
+
token0: `0x${string}`;
|
|
53
|
+
token1: `0x${string}`;
|
|
54
|
+
hooks?: `0x${string}`;
|
|
55
|
+
feeTiers?: readonly {
|
|
56
|
+
fee: number;
|
|
57
|
+
tickSpacing: number;
|
|
58
|
+
}[];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* @description Return type for pool discovery
|
|
62
|
+
*/
|
|
63
|
+
export type DiscoverPoolReturnType = {
|
|
64
|
+
poolKey: PoolKey;
|
|
65
|
+
sqrtPriceX96: bigint;
|
|
66
|
+
liquidity: bigint;
|
|
67
|
+
tick: number;
|
|
68
|
+
} | null;
|
|
69
|
+
/**
|
|
70
|
+
* @description Discover an existing pool by trying common fee tiers
|
|
71
|
+
* @param params Discovery parameters
|
|
72
|
+
* @returns Pool data if found, null otherwise
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* This function tries to find an initialized pool by:
|
|
76
|
+
* 1. Trying common fee tiers (0.05%, 0.3%, 1%)
|
|
77
|
+
* 2. Querying StateView contract to check if pool exists and has liquidity
|
|
78
|
+
* 3. Returning the first valid pool found
|
|
79
|
+
*
|
|
80
|
+
* Uses Uniswap V4's StateView contract to fetch pool state:
|
|
81
|
+
* - getSlot0(): sqrtPriceX96, tick, protocol/LP fees
|
|
82
|
+
* - getLiquidity(): pool liquidity
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const pool = await discoverPool({
|
|
87
|
+
* publicClient,
|
|
88
|
+
* token0: WETH_ADDRESS,
|
|
89
|
+
* token1: USDC_ADDRESS,
|
|
90
|
+
* })
|
|
91
|
+
* if (pool) {
|
|
92
|
+
* console.log('Found pool:', pool.poolKey)
|
|
93
|
+
* console.log('Liquidity:', pool.liquidity)
|
|
94
|
+
* }
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare const discoverPool: ({ publicClient, token0, token1, hooks, feeTiers, }: DiscoverPoolParams) => Promise<DiscoverPoolReturnType>;
|
|
98
|
+
/**
|
|
99
|
+
* @description Find a liquid pool by discovering pools with liquidity
|
|
100
|
+
* @param params Discovery parameters
|
|
101
|
+
* @returns Pool key if found, null otherwise
|
|
102
|
+
*
|
|
103
|
+
* @remarks
|
|
104
|
+
* This is a convenience wrapper around discoverPool that returns just the pool key.
|
|
105
|
+
* It uses the StateView contract to find pools with actual liquidity.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const poolKey = await findLiquidPool({
|
|
110
|
+
* publicClient,
|
|
111
|
+
* token0: WETH_ADDRESS,
|
|
112
|
+
* token1: USDC_ADDRESS,
|
|
113
|
+
* })
|
|
114
|
+
* if (poolKey) {
|
|
115
|
+
* console.log('Found pool with fee tier:', poolKey.fee)
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export type FindLiquidPoolParams = DiscoverPoolParams;
|
|
120
|
+
export declare const findLiquidPool: (params: FindLiquidPoolParams) => Promise<PoolKey | null>;
|
|
121
|
+
//# sourceMappingURL=pool-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-key.d.ts","sourceRoot":"","sources":["../../src/pool-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAKxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,QAAQ,KAAK,MAAM,EAAE,EACrB,QAAQ,KAAK,MAAM,EAAE,KACpB,CAAC,KAAK,MAAM,EAAE,EAAE,KAAK,MAAM,EAAE,CAE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;CAItB,CAAA;AAEV;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,KAAK,MAAM,EAAE,EACrB,QAAQ,KAAK,MAAM,EAAE,EACrB,MAAK,MAAgC,EACrC,cAAa,MAAwC,EACrD,QAAO,KAAK,MAAM,EAA8B,KAC/C,OASF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,KAAG,KAAK,MAAM,EAkBvD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;EAInB,CAAA;AAEV;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,QAAQ,CAAC,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC3D,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAA;AAER;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,YAAY,GAAU,oDAMhC,kBAAkB,KAAG,OAAO,CAAC,sBAAsB,CA0DrD,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAA;AAErD,eAAO,MAAM,cAAc,GAAU,QAAQ,oBAAoB,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAGzF,CAAA"}
|