levr-sdk 0.0.2 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +256 -235
  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/balance.js +19 -1
  6. package/dist/esm/balance.js.map +1 -1
  7. package/dist/esm/client/hook/index.js +14 -3
  8. package/dist/esm/client/hook/index.js.map +1 -1
  9. package/dist/esm/client/hook/use-fee-receivers.js +11 -29
  10. package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
  11. package/dist/esm/client/hook/use-governance.js +19 -254
  12. package/dist/esm/client/hook/use-governance.js.map +1 -1
  13. package/dist/esm/client/hook/use-pool.js +26 -0
  14. package/dist/esm/client/hook/use-pool.js.map +1 -0
  15. package/dist/esm/client/hook/use-prepare.js +6 -3
  16. package/dist/esm/client/hook/use-prepare.js.map +1 -1
  17. package/dist/esm/client/hook/use-project.js +24 -9
  18. package/dist/esm/client/hook/use-project.js.map +1 -1
  19. package/dist/esm/client/hook/use-proposal.js +48 -0
  20. package/dist/esm/client/hook/use-proposal.js.map +1 -0
  21. package/dist/esm/client/hook/use-stake.js +29 -195
  22. package/dist/esm/client/hook/use-stake.js.map +1 -1
  23. package/dist/esm/client/hook/use-swap.js +9 -13
  24. package/dist/esm/client/hook/use-swap.js.map +1 -1
  25. package/dist/esm/client/hook/use-user.js +25 -0
  26. package/dist/esm/client/hook/use-user.js.map +1 -0
  27. package/dist/esm/client/levr-provider.js +65 -107
  28. package/dist/esm/client/levr-provider.js.map +1 -1
  29. package/dist/esm/client/query-keys.js +9 -21
  30. package/dist/esm/client/query-keys.js.map +1 -1
  31. package/dist/esm/constants.js +1 -1
  32. package/dist/esm/fee-receivers.js +25 -13
  33. package/dist/esm/fee-receivers.js.map +1 -1
  34. package/dist/esm/governance.js +35 -414
  35. package/dist/esm/governance.js.map +1 -1
  36. package/dist/esm/index.js +4 -2
  37. package/dist/esm/index.js.map +1 -1
  38. package/dist/esm/pool.js +70 -0
  39. package/dist/esm/pool.js.map +1 -0
  40. package/dist/esm/project.js +389 -135
  41. package/dist/esm/project.js.map +1 -1
  42. package/dist/esm/proposal.js +156 -0
  43. package/dist/esm/proposal.js.map +1 -0
  44. package/dist/esm/quote/index.js +2 -2
  45. package/dist/esm/quote/index.js.map +1 -1
  46. package/dist/esm/stake.js +34 -299
  47. package/dist/esm/stake.js.map +1 -1
  48. package/dist/esm/treasury.js +162 -0
  49. package/dist/esm/treasury.js.map +1 -0
  50. package/dist/esm/user.js +153 -0
  51. package/dist/esm/user.js.map +1 -0
  52. package/dist/types/abis/LevrFactory_v1.d.ts +48 -0
  53. package/dist/types/abis/LevrGovernor_v1.d.ts +12 -18
  54. package/dist/types/abis/LevrStaking_v1.d.ts +5 -1
  55. package/dist/types/balance.d.ts +15 -0
  56. package/dist/types/balance.d.ts.map +1 -1
  57. package/dist/types/client/hook/index.d.ts +11 -3
  58. package/dist/types/client/hook/index.d.ts.map +1 -1
  59. package/dist/types/client/hook/use-fee-receivers.d.ts +6 -16
  60. package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
  61. package/dist/types/client/hook/use-governance.d.ts +4 -98
  62. package/dist/types/client/hook/use-governance.d.ts.map +1 -1
  63. package/dist/types/client/hook/use-pool.d.ts +12 -0
  64. package/dist/types/client/hook/use-pool.d.ts.map +1 -0
  65. package/dist/types/client/hook/use-prepare.d.ts +1 -2
  66. package/dist/types/client/hook/use-prepare.d.ts.map +1 -1
  67. package/dist/types/client/hook/use-project.d.ts +5 -0
  68. package/dist/types/client/hook/use-project.d.ts.map +1 -1
  69. package/dist/types/client/hook/use-proposal.d.ts +18 -0
  70. package/dist/types/client/hook/use-proposal.d.ts.map +1 -0
  71. package/dist/types/client/hook/use-stake.d.ts +14 -73
  72. package/dist/types/client/hook/use-stake.d.ts.map +1 -1
  73. package/dist/types/client/hook/use-swap.d.ts +3 -8
  74. package/dist/types/client/hook/use-swap.d.ts.map +1 -1
  75. package/dist/types/client/hook/use-user.d.ts +13 -0
  76. package/dist/types/client/hook/use-user.d.ts.map +1 -0
  77. package/dist/types/client/levr-provider.d.ts +30 -50
  78. package/dist/types/client/levr-provider.d.ts.map +1 -1
  79. package/dist/types/client/query-keys.d.ts +13 -25
  80. package/dist/types/client/query-keys.d.ts.map +1 -1
  81. package/dist/types/fee-receivers.d.ts +28 -0
  82. package/dist/types/fee-receivers.d.ts.map +1 -1
  83. package/dist/types/governance.d.ts +5 -92
  84. package/dist/types/governance.d.ts.map +1 -1
  85. package/dist/types/index.d.ts +4 -2
  86. package/dist/types/index.d.ts.map +1 -1
  87. package/dist/types/pool.d.ts +590 -0
  88. package/dist/types/pool.d.ts.map +1 -0
  89. package/dist/types/project.d.ts +56 -1
  90. package/dist/types/project.d.ts.map +1 -1
  91. package/dist/types/proposal.d.ts +1161 -0
  92. package/dist/types/proposal.d.ts.map +1 -0
  93. package/dist/types/quote/index.d.ts +2 -2
  94. package/dist/types/quote/index.d.ts.map +1 -1
  95. package/dist/types/stake.d.ts +16 -41
  96. package/dist/types/stake.d.ts.map +1 -1
  97. package/dist/types/treasury.d.ts +16 -0
  98. package/dist/types/treasury.d.ts.map +1 -0
  99. package/dist/types/user.d.ts +188 -0
  100. package/dist/types/user.d.ts.map +1 -0
  101. package/package.json +5 -2
  102. package/dist/esm/client/hook/use-balance.js +0 -57
  103. package/dist/esm/client/hook/use-balance.js.map +0 -1
  104. package/dist/esm/client/hook/use-projects.js +0 -22
  105. package/dist/esm/client/hook/use-projects.js.map +0 -1
  106. package/dist/esm/client/hook/use-proposals.js +0 -29
  107. package/dist/esm/client/hook/use-proposals.js.map +0 -1
  108. package/dist/esm/projects.js +0 -184
  109. package/dist/esm/projects.js.map +0 -1
  110. package/dist/esm/proposals.js +0 -98
  111. package/dist/esm/proposals.js.map +0 -1
  112. package/dist/types/client/hook/use-balance.d.ts +0 -20
  113. package/dist/types/client/hook/use-balance.d.ts.map +0 -1
  114. package/dist/types/client/hook/use-projects.d.ts +0 -6
  115. package/dist/types/client/hook/use-projects.d.ts.map +0 -1
  116. package/dist/types/client/hook/use-proposals.d.ts +0 -16
  117. package/dist/types/client/hook/use-proposals.d.ts.map +0 -1
  118. package/dist/types/projects.d.ts +0 -20
  119. package/dist/types/projects.d.ts.map +0 -1
  120. package/dist/types/proposals.d.ts +0 -20
  121. package/dist/types/proposals.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../src/proposal.ts"],"names":[],"mappings":"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"}
@@ -53,8 +53,8 @@
53
53
  * // Use v4Bytecode.address and v4Bytecode.data in multicall
54
54
  * ```
55
55
  */
56
- export type { QuoteV3Params, QuoteV3ReadReturnType, QuoteV3BytecodeReturnType, } from './v3';
57
- export type { QuoteV4Params, QuoteV4ReadReturnType, QuoteV4BytecodeReturnType, } from './v4';
56
+ export type { QuoteV3BytecodeReturnType, QuoteV3Params, QuoteV3ReadReturnType } from './v3';
57
+ export type { QuoteV4BytecodeReturnType, QuoteV4Params, QuoteV4ReadReturnType } from './v4';
58
58
  /**
59
59
  * @description Unified quote API for Uniswap V3 and V4
60
60
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/quote/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAGH,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,MAAM,CAAA;AAEb,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,MAAM,CAAA;AAMb;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB;;OAEG;;QAED;;;;WAIG;;QAEH;;;;WAIG;;;IAGL;;OAEG;;QAED;;;;WAIG;;QAEH;;;;WAIG;;;CAGN,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/quote/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAGH,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,MAAM,CAAA;AAC3F,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,MAAM,CAAA;AAM3F;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB;;OAEG;;QAED;;;;WAIG;;QAEH;;;;WAIG;;;IAGL;;OAEG;;QAED;;;;WAIG;;QAEH;;;;WAIG;;;CAGN,CAAA"}
@@ -1,13 +1,10 @@
1
1
  import type { TransactionReceipt } from 'viem';
2
- import type { BalanceResult, PopPublicClient, PopWalletClient, PricingResult } from './types';
2
+ import type { Project } from '.';
3
+ import type { BalanceResult, PopPublicClient, PopWalletClient } from './types';
3
4
  export type StakeConfig = {
4
5
  wallet: PopWalletClient;
5
6
  publicClient: PopPublicClient;
6
- stakingAddress: `0x${string}`;
7
- tokenAddress: `0x${string}`;
8
- tokenDecimals: number;
9
- trustedForwarder?: `0x${string}`;
10
- pricing?: PricingResult;
7
+ project: Project;
11
8
  };
12
9
  export type UnstakeParams = {
13
10
  amount: number | string | bigint;
@@ -42,6 +39,10 @@ export type StakeOutstandingRewards = {
42
39
  export type StakeClaimableRewards = {
43
40
  claimable: BalanceResult;
44
41
  };
42
+ export type VotingPowerResult = {
43
+ tokenDays: bigint;
44
+ formatted: string;
45
+ };
45
46
  export declare class Stake {
46
47
  private wallet;
47
48
  private publicClient;
@@ -51,7 +52,6 @@ export declare class Stake {
51
52
  private chainId;
52
53
  private userAddress;
53
54
  private trustedForwarder?;
54
- private pricing?;
55
55
  constructor(config: StakeConfig);
56
56
  /**
57
57
  * Approve ERC20 tokens for spending by the staking contract
@@ -63,36 +63,16 @@ export declare class Stake {
63
63
  stake(amount: number | string | bigint): Promise<TransactionReceipt>;
64
64
  /**
65
65
  * Unstake tokens from the staking contract
66
+ * @returns Transaction receipt with the new voting power after unstake
66
67
  */
67
- unstake({ amount, to }: UnstakeParams): Promise<TransactionReceipt>;
68
+ unstake({ amount, to }: UnstakeParams): Promise<{
69
+ receipt: TransactionReceipt;
70
+ newVotingPower: bigint;
71
+ }>;
68
72
  /**
69
73
  * Claim rewards from the staking contract
70
74
  */
71
75
  claimRewards(params: ClaimParams | void): Promise<TransactionReceipt>;
72
- /**
73
- * Get allowance for a token and spender
74
- */
75
- getAllowance(): Promise<BalanceResult>;
76
- /**
77
- * Get pool data from staking contract
78
- */
79
- getPoolData(): Promise<StakePoolData>;
80
- /**
81
- * Get user data from staking contract
82
- */
83
- getUserData(): Promise<StakeUserData>;
84
- /**
85
- * Get outstanding rewards for the token (for accrual purposes)
86
- */
87
- getOutstandingRewards(tokenAddress?: `0x${string}`): Promise<StakeOutstandingRewards>;
88
- /**
89
- * Get claimable rewards for the current user and token
90
- */
91
- getClaimableRewards(tokenAddress?: `0x${string}`): Promise<StakeClaimableRewards>;
92
- /**
93
- * Get reward rate per second for a specific token
94
- */
95
- getRewardRatePerSecond(tokenAddress?: `0x${string}`): Promise<BalanceResult>;
96
76
  /**
97
77
  * Accrue rewards by triggering automatic collection from LP locker and claiming from ClankerFeeLocker
98
78
  */
@@ -102,15 +82,10 @@ export declare class Stake {
102
82
  */
103
83
  accrueAllRewards(tokenAddresses: `0x${string}`[]): Promise<TransactionReceipt>;
104
84
  /**
105
- * Calculate WETH APR using USD pricing data
106
- * No on-chain quotes needed - uses existing pricing data
107
- * Formula: (wethRewardRatePerSecond * secondsPerYear * wethPriceInTokens / totalStaked) * 10000
108
- *
109
- * @returns WETH APR in basis points and percentage
85
+ * Simulate voting power after an unstake (without executing the transaction)
86
+ * @param amount Amount to unstake
87
+ * @returns Predicted voting power in token-days after the unstake
110
88
  */
111
- calculateWethApr(): Promise<{
112
- raw: bigint;
113
- percentage: number;
114
- }>;
89
+ votingPowerOnUnstake(amount: number | string | bigint, userAddress?: `0x${string}`): Promise<VotingPowerResult>;
115
90
  }
116
91
  //# sourceMappingURL=stake.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stake.d.ts","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stake.d.ts","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { BalanceResult, PopPublicClient } from './types';
2
+ export type AirdropStatus = {
3
+ availableAmount: BalanceResult;
4
+ allocatedAmount: BalanceResult;
5
+ isAvailable: boolean;
6
+ error?: string;
7
+ };
8
+ /**
9
+ * Get treasury airdrop status
10
+ */
11
+ export declare function getTreasuryAirdropStatus(publicClient: PopPublicClient, clankerToken: `0x${string}`, treasury: `0x${string}`, tokenDecimals: number, tokenUsdPrice: number | null): Promise<AirdropStatus | null>;
12
+ /**
13
+ * Get available airdrop amount for treasury
14
+ */
15
+ export declare function getTreasuryAirdropAvailable(publicClient: PopPublicClient, clankerToken: `0x${string}`, treasury: `0x${string}`): Promise<bigint>;
16
+ //# sourceMappingURL=treasury.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treasury.d.ts","sourceRoot":"","sources":["../../src/treasury.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE7D,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,aAAa,CAAA;IAC9B,eAAe,EAAE,aAAa,CAAA;IAC9B,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA8JD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,eAAe,EAC7B,YAAY,EAAE,KAAK,MAAM,EAAE,EAC3B,QAAQ,EAAE,KAAK,MAAM,EAAE,EACvB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA8B/B;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,eAAe,EAC7B,YAAY,EAAE,KAAK,MAAM,EAAE,EAC3B,QAAQ,EAAE,KAAK,MAAM,EAAE,GACtB,OAAO,CAAC,MAAM,CAAC,CAGjB"}
@@ -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/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.2",
4
+ "version": "0.1.1",
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,57 +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, pricing, 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
- pricing,
52
- });
53
- },
54
- enabled: e && !!publicClient && !!userAddress && tokenAddresses.length > 0,
55
- refetchInterval: 10000,
56
- });
57
- }
@@ -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;AAI/D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAezC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,YAAY,EACZ,oBAAoB,GAAG,EAAE,EACzB,OAAO,EACP,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;YAE1D,OAAO,OAAO,CAAC;gBACb,YAAY,EAAE,YAAa;gBAC3B,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,cAAc;gBACtB,OAAO;aACR,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,29 +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
- return proposalsListQuery({
16
- publicClient: publicClient,
17
- governorAddress: governorAddress,
18
- tokenDecimals,
19
- fromBlock: undefined,
20
- toBlock: "latest",
21
- pageSize: 50,
22
- });
23
- },
24
- enabled: e && !!publicClient && !!governorAddress,
25
- retry: 1,
26
- staleTime: 5000,
27
- refetchInterval: 30000,
28
- });
29
- }
@@ -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,OAAO,kBAAkB,CAAC;gBACxB,YAAY,EAAE,YAAa;gBAC3B,eAAe,EAAE,eAAgB;gBACjC,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"}