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.
Files changed (156) hide show
  1. package/README.md +109 -13
  2. package/dist/esm/abis/LevrFactory_v1.js +63 -0
  3. package/dist/esm/abis/LevrGovernor_v1.js +15 -24
  4. package/dist/esm/abis/LevrStaking_v1.js +7 -1
  5. package/dist/esm/abis/StateView.js +149 -0
  6. package/dist/esm/abis/V3QuoterV2.js +26 -0
  7. package/dist/esm/abis/index.js +4 -0
  8. package/dist/esm/balance.js +48 -4
  9. package/dist/esm/balance.js.map +1 -1
  10. package/dist/esm/client/hook/index.js +14 -3
  11. package/dist/esm/client/hook/index.js.map +1 -1
  12. package/dist/esm/client/hook/use-fee-receivers.js +11 -30
  13. package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
  14. package/dist/esm/client/hook/use-governance.js +20 -274
  15. package/dist/esm/client/hook/use-governance.js.map +1 -1
  16. package/dist/esm/client/hook/use-pool.js +26 -0
  17. package/dist/esm/client/hook/use-pool.js.map +1 -0
  18. package/dist/esm/client/hook/use-prepare.js +6 -3
  19. package/dist/esm/client/hook/use-prepare.js.map +1 -1
  20. package/dist/esm/client/hook/use-project.js +28 -16
  21. package/dist/esm/client/hook/use-project.js.map +1 -1
  22. package/dist/esm/client/hook/use-proposal.js +48 -0
  23. package/dist/esm/client/hook/use-proposal.js.map +1 -0
  24. package/dist/esm/client/hook/use-stake.js +29 -215
  25. package/dist/esm/client/hook/use-stake.js.map +1 -1
  26. package/dist/esm/client/hook/use-swap.js +23 -19
  27. package/dist/esm/client/hook/use-swap.js.map +1 -1
  28. package/dist/esm/client/hook/use-user.js +25 -0
  29. package/dist/esm/client/hook/use-user.js.map +1 -0
  30. package/dist/esm/client/levr-provider.js +73 -108
  31. package/dist/esm/client/levr-provider.js.map +1 -1
  32. package/dist/esm/client/query-keys.js +10 -22
  33. package/dist/esm/client/query-keys.js.map +1 -1
  34. package/dist/esm/constants.js +42 -1
  35. package/dist/esm/constants.js.map +1 -1
  36. package/dist/esm/fee-receivers.js +28 -13
  37. package/dist/esm/fee-receivers.js.map +1 -1
  38. package/dist/esm/governance.js +35 -399
  39. package/dist/esm/governance.js.map +1 -1
  40. package/dist/esm/index.js +7 -3
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/pool-key.js +152 -0
  43. package/dist/esm/pool-key.js.map +1 -0
  44. package/dist/esm/pool.js +70 -0
  45. package/dist/esm/pool.js.map +1 -0
  46. package/dist/esm/project.js +415 -118
  47. package/dist/esm/project.js.map +1 -1
  48. package/dist/esm/proposal.js +156 -0
  49. package/dist/esm/proposal.js.map +1 -0
  50. package/dist/esm/quote/index.js +98 -0
  51. package/dist/esm/quote/index.js.map +1 -0
  52. package/dist/esm/quote/v3.js +62 -0
  53. package/dist/esm/quote/v3.js.map +1 -0
  54. package/dist/esm/quote/v4.js +228 -0
  55. package/dist/esm/quote/v4.js.map +1 -0
  56. package/dist/esm/stake.js +34 -237
  57. package/dist/esm/stake.js.map +1 -1
  58. package/dist/esm/treasury.js +162 -0
  59. package/dist/esm/treasury.js.map +1 -0
  60. package/dist/esm/usd-price.js +149 -0
  61. package/dist/esm/usd-price.js.map +1 -0
  62. package/dist/esm/user.js +153 -0
  63. package/dist/esm/user.js.map +1 -0
  64. package/dist/esm/util.js +45 -1
  65. package/dist/esm/util.js.map +1 -1
  66. package/dist/types/abis/LevrFactory_v1.d.ts +48 -0
  67. package/dist/types/abis/LevrGovernor_v1.d.ts +12 -18
  68. package/dist/types/abis/LevrStaking_v1.d.ts +5 -1
  69. package/dist/types/abis/StateView.d.ts +278 -0
  70. package/dist/types/abis/V3QuoterV2.d.ts +39 -0
  71. package/dist/types/abis/index.d.ts +2 -0
  72. package/dist/types/balance.d.ts +19 -6
  73. package/dist/types/balance.d.ts.map +1 -1
  74. package/dist/types/client/hook/index.d.ts +12 -4
  75. package/dist/types/client/hook/index.d.ts.map +1 -1
  76. package/dist/types/client/hook/use-fee-receivers.d.ts +6 -16
  77. package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
  78. package/dist/types/client/hook/use-governance.d.ts +4 -93
  79. package/dist/types/client/hook/use-governance.d.ts.map +1 -1
  80. package/dist/types/client/hook/use-pool.d.ts +12 -0
  81. package/dist/types/client/hook/use-pool.d.ts.map +1 -0
  82. package/dist/types/client/hook/use-prepare.d.ts +1 -2
  83. package/dist/types/client/hook/use-prepare.d.ts.map +1 -1
  84. package/dist/types/client/hook/use-project.d.ts +8 -1
  85. package/dist/types/client/hook/use-project.d.ts.map +1 -1
  86. package/dist/types/client/hook/use-proposal.d.ts +18 -0
  87. package/dist/types/client/hook/use-proposal.d.ts.map +1 -0
  88. package/dist/types/client/hook/use-stake.d.ts +14 -168
  89. package/dist/types/client/hook/use-stake.d.ts.map +1 -1
  90. package/dist/types/client/hook/use-swap.d.ts +5 -9
  91. package/dist/types/client/hook/use-swap.d.ts.map +1 -1
  92. package/dist/types/client/hook/use-user.d.ts +13 -0
  93. package/dist/types/client/hook/use-user.d.ts.map +1 -0
  94. package/dist/types/client/levr-provider.d.ts +41 -68
  95. package/dist/types/client/levr-provider.d.ts.map +1 -1
  96. package/dist/types/client/query-keys.d.ts +14 -26
  97. package/dist/types/client/query-keys.d.ts.map +1 -1
  98. package/dist/types/constants.d.ts +18 -0
  99. package/dist/types/constants.d.ts.map +1 -1
  100. package/dist/types/fee-receivers.d.ts +29 -2
  101. package/dist/types/fee-receivers.d.ts.map +1 -1
  102. package/dist/types/governance.d.ts +8 -108
  103. package/dist/types/governance.d.ts.map +1 -1
  104. package/dist/types/index.d.ts +7 -3
  105. package/dist/types/index.d.ts.map +1 -1
  106. package/dist/types/pool-key.d.ts +121 -0
  107. package/dist/types/pool-key.d.ts.map +1 -0
  108. package/dist/types/pool.d.ts +590 -0
  109. package/dist/types/pool.d.ts.map +1 -0
  110. package/dist/types/project.d.ts +61 -11
  111. package/dist/types/project.d.ts.map +1 -1
  112. package/dist/types/proposal.d.ts +1161 -0
  113. package/dist/types/proposal.d.ts.map +1 -0
  114. package/dist/types/quote/index.d.ts +97 -0
  115. package/dist/types/quote/index.d.ts.map +1 -0
  116. package/dist/types/quote/v3.d.ts +78 -0
  117. package/dist/types/quote/v3.d.ts.map +1 -0
  118. package/dist/types/quote/v4.d.ts +95 -0
  119. package/dist/types/quote/v4.d.ts.map +1 -0
  120. package/dist/types/stake.d.ts +41 -87
  121. package/dist/types/stake.d.ts.map +1 -1
  122. package/dist/types/treasury.d.ts +16 -0
  123. package/dist/types/treasury.d.ts.map +1 -0
  124. package/dist/types/types.d.ts +15 -0
  125. package/dist/types/types.d.ts.map +1 -1
  126. package/dist/types/usd-price.d.ts +141 -0
  127. package/dist/types/usd-price.d.ts.map +1 -0
  128. package/dist/types/user.d.ts +188 -0
  129. package/dist/types/user.d.ts.map +1 -0
  130. package/dist/types/util.d.ts +17 -0
  131. package/dist/types/util.d.ts.map +1 -1
  132. package/package.json +5 -2
  133. package/dist/esm/client/hook/use-balance.js +0 -56
  134. package/dist/esm/client/hook/use-balance.js.map +0 -1
  135. package/dist/esm/client/hook/use-projects.js +0 -22
  136. package/dist/esm/client/hook/use-projects.js.map +0 -1
  137. package/dist/esm/client/hook/use-proposals.js +0 -31
  138. package/dist/esm/client/hook/use-proposals.js.map +0 -1
  139. package/dist/esm/projects.js +0 -212
  140. package/dist/esm/projects.js.map +0 -1
  141. package/dist/esm/proposals.js +0 -98
  142. package/dist/esm/proposals.js.map +0 -1
  143. package/dist/esm/quote-v4.js +0 -169
  144. package/dist/esm/quote-v4.js.map +0 -1
  145. package/dist/types/client/hook/use-balance.d.ts +0 -18
  146. package/dist/types/client/hook/use-balance.d.ts.map +0 -1
  147. package/dist/types/client/hook/use-projects.d.ts +0 -6
  148. package/dist/types/client/hook/use-projects.d.ts.map +0 -1
  149. package/dist/types/client/hook/use-proposals.d.ts +0 -16
  150. package/dist/types/client/hook/use-proposals.d.ts.map +0 -1
  151. package/dist/types/projects.d.ts +0 -20
  152. package/dist/types/projects.d.ts.map +0 -1
  153. package/dist/types/proposals.d.ts +0 -20
  154. package/dist/types/proposals.d.ts.map +0 -1
  155. package/dist/types/quote-v4.d.ts +0 -54
  156. 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, chainId, userAddress, }: FeeReceiversParams): Promise<FeeReceiverAdmin[] | undefined>;
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,OAAO,EAAE,MAAM,CAAA;IACf,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;;GAEG;AACH,wBAAsB,YAAY,CAAC,EACjC,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,WAAW,GACZ,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,CA8B9D;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
+ {"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 { PopPublicClient, PopWalletClient } from './types';
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
- governorAddress: `0x${string}`;
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
- raw: bigint;
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 governorAddress;
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;AAM9C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,EAAE,eAAe,CAAA;IAC7B,eAAe,EAAE,KAAK,MAAM,EAAE,CAAA;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,KAAK,MAAM,EAAE,CAAA;IAC3B,gBAAgB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,KAAK,MAAM,EAAE,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;IACvB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,SAAS,EAAE,KAAK,MAAM,EAAE,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAA;IAC5C,cAAc,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAA;IACjD,YAAY,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAA;IAC/C,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,KAAK,MAAM,EAAE,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;CAC5B,CAAA;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAe;gBAEtB,MAAM,EAAE,gBAAgB;IAYpC;;OAEG;IACG,eAAe,CACnB,SAAS,EAAE,KAAK,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAChC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,kBAAkB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IA+C/D;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAC/B,OAAO,CAAC;QAAE,OAAO,EAAE,kBAAkB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IA+C/D;;OAEG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoBtF;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoB/E;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA8CjF;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ1C;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAWhF;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1D;;OAEG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,GACpB,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAYlE;;OAEG;IACG,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhG;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhE;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlE;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWpE;;OAEG;IACG,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASnE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAQ1C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAQ3C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAQ9C;;OAEG;IACG,yBAAyB,CAC7B,SAAS,EAAE,KAAK,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAChC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QACT,cAAc,EAAE,kBAAkB,CAAA;QAClC,cAAc,EAAE,kBAAkB,CAAA;QAClC,UAAU,EAAE,MAAM,CAAA;KACnB,CAAC;IAeF;;OAEG;IACG,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QACtE,cAAc,EAAE,kBAAkB,CAAA;QAClC,cAAc,EAAE,kBAAkB,CAAA;QAClC,UAAU,EAAE,MAAM,CAAA;KACnB,CAAC;IAWF;;OAEG;YACW,sBAAsB;IAuJpC;;OAEG;IACG,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,eAAe,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;QACnD,eAAe,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAA;QACnD,WAAW,EAAE,OAAO,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAC;IA2CF;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAuClD"}
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/governance.ts"],"names":[],"mappings":"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"}
@@ -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 './projects';
11
- export * from './proposals';
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,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA"}
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"}