levr-sdk 0.0.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 (179) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +711 -0
  3. package/dist/esm/abis/IClankerAirdrop.js +443 -0
  4. package/dist/esm/abis/IClankerHookDynamicFee.js +198 -0
  5. package/dist/esm/abis/IClankerHookStaticFee.js +75 -0
  6. package/dist/esm/abis/IClankerLPLocker.js +402 -0
  7. package/dist/esm/abis/IClankerLpLockerMultiple.js +609 -0
  8. package/dist/esm/abis/IClankerToken.js +421 -0
  9. package/dist/esm/abis/LevrFactory_v1.js +608 -0
  10. package/dist/esm/abis/LevrForwarder_v1.js +622 -0
  11. package/dist/esm/abis/LevrGovernor_v1.js +726 -0
  12. package/dist/esm/abis/LevrStakedToken_v1.js +441 -0
  13. package/dist/esm/abis/LevrStaking_v1.js +607 -0
  14. package/dist/esm/abis/LevrTreasury_v1.js +219 -0
  15. package/dist/esm/abis/Permit2.js +29 -0
  16. package/dist/esm/abis/V4Quoter.js +466 -0
  17. package/dist/esm/abis/WETH9.js +153 -0
  18. package/dist/esm/abis/index.js +23 -0
  19. package/dist/esm/balance.js +72 -0
  20. package/dist/esm/balance.js.map +1 -0
  21. package/dist/esm/build-calldatas-v4.js +98 -0
  22. package/dist/esm/build-calldatas-v4.js.map +1 -0
  23. package/dist/esm/build-clanker-v4.js +128 -0
  24. package/dist/esm/build-clanker-v4.js.map +1 -0
  25. package/dist/esm/client/hook/index.js +36 -0
  26. package/dist/esm/client/hook/index.js.map +1 -0
  27. package/dist/esm/client/hook/use-balance.js +56 -0
  28. package/dist/esm/client/hook/use-balance.js.map +1 -0
  29. package/dist/esm/client/hook/use-clanker.js +57 -0
  30. package/dist/esm/client/hook/use-clanker.js.map +1 -0
  31. package/dist/esm/client/hook/use-deploy.js +16 -0
  32. package/dist/esm/client/hook/use-deploy.js.map +1 -0
  33. package/dist/esm/client/hook/use-fee-receivers.js +54 -0
  34. package/dist/esm/client/hook/use-fee-receivers.js.map +1 -0
  35. package/dist/esm/client/hook/use-governance.js +389 -0
  36. package/dist/esm/client/hook/use-governance.js.map +1 -0
  37. package/dist/esm/client/hook/use-prepare.js +47 -0
  38. package/dist/esm/client/hook/use-prepare.js.map +1 -0
  39. package/dist/esm/client/hook/use-project.js +29 -0
  40. package/dist/esm/client/hook/use-project.js.map +1 -0
  41. package/dist/esm/client/hook/use-projects.js +22 -0
  42. package/dist/esm/client/hook/use-projects.js.map +1 -0
  43. package/dist/esm/client/hook/use-proposals.js +31 -0
  44. package/dist/esm/client/hook/use-proposals.js.map +1 -0
  45. package/dist/esm/client/hook/use-register.js +101 -0
  46. package/dist/esm/client/hook/use-register.js.map +1 -0
  47. package/dist/esm/client/hook/use-stake.js +327 -0
  48. package/dist/esm/client/hook/use-stake.js.map +1 -0
  49. package/dist/esm/client/hook/use-swap.js +110 -0
  50. package/dist/esm/client/hook/use-swap.js.map +1 -0
  51. package/dist/esm/client/index.js +4 -0
  52. package/dist/esm/client/index.js.map +1 -0
  53. package/dist/esm/client/levr-provider.js +201 -0
  54. package/dist/esm/client/levr-provider.js.map +1 -0
  55. package/dist/esm/client/query-keys.js +61 -0
  56. package/dist/esm/client/query-keys.js.map +1 -0
  57. package/dist/esm/constants.js +182 -0
  58. package/dist/esm/constants.js.map +1 -0
  59. package/dist/esm/deploy-v4.js +46 -0
  60. package/dist/esm/deploy-v4.js.map +1 -0
  61. package/dist/esm/fee-receivers.js +52 -0
  62. package/dist/esm/fee-receivers.js.map +1 -0
  63. package/dist/esm/governance.js +555 -0
  64. package/dist/esm/governance.js.map +1 -0
  65. package/dist/esm/index.js +18 -0
  66. package/dist/esm/index.js.map +1 -0
  67. package/dist/esm/project.js +146 -0
  68. package/dist/esm/project.js.map +1 -0
  69. package/dist/esm/projects.js +212 -0
  70. package/dist/esm/projects.js.map +1 -0
  71. package/dist/esm/proposals.js +98 -0
  72. package/dist/esm/proposals.js.map +1 -0
  73. package/dist/esm/quote-v4.js +169 -0
  74. package/dist/esm/quote-v4.js.map +1 -0
  75. package/dist/esm/schema/base.schema.js +11 -0
  76. package/dist/esm/schema/base.schema.js.map +1 -0
  77. package/dist/esm/schema/clanker.schema.js +191 -0
  78. package/dist/esm/schema/clanker.schema.js.map +1 -0
  79. package/dist/esm/schema/index.js +4 -0
  80. package/dist/esm/schema/index.js.map +1 -0
  81. package/dist/esm/schema/levr.schema.js +114 -0
  82. package/dist/esm/schema/levr.schema.js.map +1 -0
  83. package/dist/esm/stake.js +384 -0
  84. package/dist/esm/stake.js.map +1 -0
  85. package/dist/esm/swap-v4.js +281 -0
  86. package/dist/esm/swap-v4.js.map +1 -0
  87. package/dist/esm/types.js +2 -0
  88. package/dist/esm/types.js.map +1 -0
  89. package/dist/esm/util.js +19 -0
  90. package/dist/esm/util.js.map +1 -0
  91. package/dist/types/abis/IClankerAirdrop.d.ts +348 -0
  92. package/dist/types/abis/IClankerHookDynamicFee.d.ts +156 -0
  93. package/dist/types/abis/IClankerHookStaticFee.d.ts +58 -0
  94. package/dist/types/abis/IClankerLPLocker.d.ts +316 -0
  95. package/dist/types/abis/IClankerLpLockerMultiple.d.ts +481 -0
  96. package/dist/types/abis/IClankerToken.d.ts +326 -0
  97. package/dist/types/abis/LevrFactory_v1.d.ts +471 -0
  98. package/dist/types/abis/LevrForwarder_v1.d.ts +478 -0
  99. package/dist/types/abis/LevrGovernor_v1.d.ts +562 -0
  100. package/dist/types/abis/LevrStakedToken_v1.d.ts +338 -0
  101. package/dist/types/abis/LevrStaking_v1.d.ts +468 -0
  102. package/dist/types/abis/LevrTreasury_v1.d.ts +169 -0
  103. package/dist/types/abis/Permit2.d.ts +54 -0
  104. package/dist/types/abis/V4Quoter.d.ts +496 -0
  105. package/dist/types/abis/WETH9.d.ts +244 -0
  106. package/dist/types/abis/index.d.ts +15 -0
  107. package/dist/types/balance.d.ts +24 -0
  108. package/dist/types/balance.d.ts.map +1 -0
  109. package/dist/types/build-calldatas-v4.d.ts +20 -0
  110. package/dist/types/build-calldatas-v4.d.ts.map +1 -0
  111. package/dist/types/build-clanker-v4.d.ts +12 -0
  112. package/dist/types/build-clanker-v4.d.ts.map +1 -0
  113. package/dist/types/client/hook/index.d.ts +32 -0
  114. package/dist/types/client/hook/index.d.ts.map +1 -0
  115. package/dist/types/client/hook/use-balance.d.ts +18 -0
  116. package/dist/types/client/hook/use-balance.d.ts.map +1 -0
  117. package/dist/types/client/hook/use-clanker.d.ts +23 -0
  118. package/dist/types/client/hook/use-clanker.d.ts.map +1 -0
  119. package/dist/types/client/hook/use-deploy.d.ts +45 -0
  120. package/dist/types/client/hook/use-deploy.d.ts.map +1 -0
  121. package/dist/types/client/hook/use-fee-receivers.d.ts +26 -0
  122. package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -0
  123. package/dist/types/client/hook/use-governance.d.ts +145 -0
  124. package/dist/types/client/hook/use-governance.d.ts.map +1 -0
  125. package/dist/types/client/hook/use-prepare.d.ts +21 -0
  126. package/dist/types/client/hook/use-prepare.d.ts.map +1 -0
  127. package/dist/types/client/hook/use-project.d.ts +11 -0
  128. package/dist/types/client/hook/use-project.d.ts.map +1 -0
  129. package/dist/types/client/hook/use-projects.d.ts +6 -0
  130. package/dist/types/client/hook/use-projects.d.ts.map +1 -0
  131. package/dist/types/client/hook/use-proposals.d.ts +16 -0
  132. package/dist/types/client/hook/use-proposals.d.ts.map +1 -0
  133. package/dist/types/client/hook/use-register.d.ts +31 -0
  134. package/dist/types/client/hook/use-register.d.ts.map +1 -0
  135. package/dist/types/client/hook/use-stake.d.ts +195 -0
  136. package/dist/types/client/hook/use-stake.d.ts.map +1 -0
  137. package/dist/types/client/hook/use-swap.d.ts +59 -0
  138. package/dist/types/client/hook/use-swap.d.ts.map +1 -0
  139. package/dist/types/client/index.d.ts +4 -0
  140. package/dist/types/client/index.d.ts.map +1 -0
  141. package/dist/types/client/levr-provider.d.ts +127 -0
  142. package/dist/types/client/levr-provider.d.ts.map +1 -0
  143. package/dist/types/client/query-keys.d.ts +61 -0
  144. package/dist/types/client/query-keys.d.ts.map +1 -0
  145. package/dist/types/constants.d.ts +101 -0
  146. package/dist/types/constants.d.ts.map +1 -0
  147. package/dist/types/deploy-v4.d.ts +13 -0
  148. package/dist/types/deploy-v4.d.ts.map +1 -0
  149. package/dist/types/fee-receivers.d.ts +29 -0
  150. package/dist/types/fee-receivers.d.ts.map +1 -0
  151. package/dist/types/governance.d.ts +205 -0
  152. package/dist/types/governance.d.ts.map +1 -0
  153. package/dist/types/index.d.ts +18 -0
  154. package/dist/types/index.d.ts.map +1 -0
  155. package/dist/types/project.d.ts +51 -0
  156. package/dist/types/project.d.ts.map +1 -0
  157. package/dist/types/projects.d.ts +20 -0
  158. package/dist/types/projects.d.ts.map +1 -0
  159. package/dist/types/proposals.d.ts +20 -0
  160. package/dist/types/proposals.d.ts.map +1 -0
  161. package/dist/types/quote-v4.d.ts +54 -0
  162. package/dist/types/quote-v4.d.ts.map +1 -0
  163. package/dist/types/schema/base.schema.d.ts +5 -0
  164. package/dist/types/schema/base.schema.d.ts.map +1 -0
  165. package/dist/types/schema/clanker.schema.d.ts +104 -0
  166. package/dist/types/schema/clanker.schema.d.ts.map +1 -0
  167. package/dist/types/schema/index.d.ts +4 -0
  168. package/dist/types/schema/index.d.ts.map +1 -0
  169. package/dist/types/schema/levr.schema.d.ts +34 -0
  170. package/dist/types/schema/levr.schema.d.ts.map +1 -0
  171. package/dist/types/stake.d.ts +137 -0
  172. package/dist/types/stake.d.ts.map +1 -0
  173. package/dist/types/swap-v4.d.ts +97 -0
  174. package/dist/types/swap-v4.d.ts.map +1 -0
  175. package/dist/types/types.d.ts +20 -0
  176. package/dist/types/types.d.ts.map +1 -0
  177. package/dist/types/util.d.ts +5 -0
  178. package/dist/types/util.d.ts.map +1 -0
  179. package/package.json +100 -0
@@ -0,0 +1,104 @@
1
+ import { Schema } from 'effect';
2
+ export declare const Metadata: Schema.Struct<{
3
+ description: Schema.optional<typeof Schema.String>;
4
+ socialMediaUrls: Schema.optional<Schema.mutable<Schema.Array$<Schema.mutable<Schema.Struct<{
5
+ platform: Schema.refine<string, typeof Schema.String>;
6
+ url: Schema.refine<string, typeof Schema.String>;
7
+ }>>>>>;
8
+ auditUrls: Schema.optional<Schema.mutable<Schema.Array$<Schema.refine<string, typeof Schema.String>>>>;
9
+ }>;
10
+ export declare const DevBuy: Schema.Struct<{
11
+ ethAmount: Schema.SchemaClass<number, number, never>;
12
+ poolKey: Schema.optional<Schema.mutable<Schema.Struct<{
13
+ currency0: Schema.Schema<`0x${string}`, `0x${string}`, never>;
14
+ currency1: Schema.Schema<`0x${string}`, `0x${string}`, never>;
15
+ fee: Schema.SchemaClass<number, number, never>;
16
+ tickSpacing: Schema.SchemaClass<number, number, never>;
17
+ hooks: Schema.Schema<`0x${string}`, `0x${string}`, never>;
18
+ }>>>;
19
+ amountOutMin: Schema.optional<typeof Schema.Number>;
20
+ }>;
21
+ export declare const ClankerDeploymentSchema: Schema.Struct<{
22
+ name: Schema.refine<string, typeof Schema.String>;
23
+ symbol: Schema.refine<string, typeof Schema.String>;
24
+ image: Schema.optional<typeof Schema.String>;
25
+ chainId: Schema.optional<typeof Schema.Number>;
26
+ tokenAdmin: Schema.Schema<`0x${string}`, `0x${string}`, never>;
27
+ vanity: Schema.optional<typeof Schema.Boolean>;
28
+ metadata: Schema.optional<Schema.Struct<{
29
+ description: Schema.optional<typeof Schema.String>;
30
+ socialMediaUrls: Schema.optional<Schema.mutable<Schema.Array$<Schema.mutable<Schema.Struct<{
31
+ platform: Schema.refine<string, typeof Schema.String>;
32
+ url: Schema.refine<string, typeof Schema.String>;
33
+ }>>>>>;
34
+ auditUrls: Schema.optional<Schema.mutable<Schema.Array$<Schema.refine<string, typeof Schema.String>>>>;
35
+ }>>;
36
+ context: Schema.optional<Schema.mutable<Schema.Struct<{
37
+ interface: Schema.optional<typeof Schema.String>;
38
+ platform: Schema.optional<typeof Schema.String>;
39
+ messageId: Schema.optional<typeof Schema.String>;
40
+ id: Schema.optional<typeof Schema.String>;
41
+ }>>>;
42
+ pool: Schema.optional<Schema.mutable<Schema.Struct<{
43
+ pairedToken: Schema.optional<Schema.Union<[Schema.Literal<["WETH"]>, Schema.Schema<`0x${string}`, `0x${string}`, never>]>>;
44
+ tickIfToken0IsClanker: Schema.optional<typeof Schema.Number>;
45
+ tickSpacing: Schema.optional<typeof Schema.Number>;
46
+ positions: Schema.mutable<Schema.Array$<Schema.mutable<Schema.Struct<{
47
+ tickLower: Schema.SchemaClass<number, number, never>;
48
+ tickUpper: Schema.SchemaClass<number, number, never>;
49
+ positionBps: Schema.SchemaClass<number, number, never>;
50
+ }>>>>;
51
+ }>>>;
52
+ locker: Schema.optional<Schema.mutable<Schema.Struct<{
53
+ locker: Schema.Union<[Schema.Literal<["Locker"]>, Schema.Schema<`0x${string}`, `0x${string}`, never>]>;
54
+ lockerData: Schema.optional<Schema.Schema<`0x${string}`, `0x${string}`, never>>;
55
+ }>>>;
56
+ vault: Schema.optional<Schema.mutable<Schema.Struct<{
57
+ percentage: Schema.SchemaClass<number, number, never>;
58
+ lockupDuration: Schema.SchemaClass<number, number, never>;
59
+ vestingDuration: Schema.optional<typeof Schema.Number>;
60
+ recipient: Schema.optional<Schema.Schema<`0x${string}`, `0x${string}`, never>>;
61
+ }>>>;
62
+ airdrop: Schema.optional<Schema.mutable<Schema.Struct<{
63
+ admin: Schema.optional<Schema.Schema<`0x${string}`, `0x${string}`, never>>;
64
+ merkleRoot: Schema.Schema<`0x${string}`, `0x${string}`, never>;
65
+ lockupDuration: Schema.SchemaClass<number, number, never>;
66
+ vestingDuration: Schema.optional<typeof Schema.Number>;
67
+ amount: Schema.SchemaClass<number, number, never>;
68
+ }>>>;
69
+ devBuy: Schema.optional<Schema.Struct<{
70
+ ethAmount: Schema.SchemaClass<number, number, never>;
71
+ poolKey: Schema.optional<Schema.mutable<Schema.Struct<{
72
+ currency0: Schema.Schema<`0x${string}`, `0x${string}`, never>;
73
+ currency1: Schema.Schema<`0x${string}`, `0x${string}`, never>;
74
+ fee: Schema.SchemaClass<number, number, never>;
75
+ tickSpacing: Schema.SchemaClass<number, number, never>;
76
+ hooks: Schema.Schema<`0x${string}`, `0x${string}`, never>;
77
+ }>>>;
78
+ amountOutMin: Schema.optional<typeof Schema.Number>;
79
+ }>>;
80
+ fees: Schema.optional<Schema.mutable<Schema.Union<[Schema.mutable<Schema.Struct<{
81
+ type: Schema.optional<Schema.Literal<["static"]>>;
82
+ clankerFee: Schema.SchemaClass<number, number, never>;
83
+ pairedFee: Schema.SchemaClass<number, number, never>;
84
+ }>>, Schema.mutable<Schema.Struct<{
85
+ type: Schema.optional<Schema.Literal<["dynamic"]>>;
86
+ baseFee: Schema.SchemaClass<number, number, never>;
87
+ maxFee: Schema.SchemaClass<number, number, never>;
88
+ referenceTickFilterPeriod: Schema.SchemaClass<number, number, never>;
89
+ resetPeriod: Schema.SchemaClass<number, number, never>;
90
+ resetTickFilter: Schema.SchemaClass<number, number, never>;
91
+ feeControlNumerator: Schema.SchemaClass<number, number, never>;
92
+ decayFilterBps: Schema.SchemaClass<number, number, never>;
93
+ }>>]>>>;
94
+ rewards: Schema.optional<Schema.mutable<Schema.Struct<{
95
+ recipients: Schema.mutable<Schema.Array$<Schema.mutable<Schema.Struct<{
96
+ admin: Schema.Schema<`0x${string}`, `0x${string}`, never>;
97
+ recipient: Schema.Schema<`0x${string}`, `0x${string}`, never>;
98
+ bps: Schema.SchemaClass<number, number, never>;
99
+ token: Schema.Union<[Schema.Literal<["Both"]>, Schema.Literal<["Paired"]>, Schema.Literal<["Clanker"]>]>;
100
+ }>>>>;
101
+ }>>>;
102
+ }>;
103
+ export type ClankerDeploymentSchemaType = typeof ClankerDeploymentSchema.Type;
104
+ //# sourceMappingURL=clanker.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clanker.schema.d.ts","sourceRoot":"","sources":["../../../src/schema/clanker.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAW/B,eAAO,MAAM,QAAQ;;;;;;;EAI6C,CAAA;AAwFlE,eAAO,MAAM,MAAM;;;;;;;;;;EAQjB,CAAA;AA6EF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB4B,CAAA;AAEhE,MAAM,MAAM,2BAA2B,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA"}
@@ -0,0 +1,4 @@
1
+ export * from './base.schema';
2
+ export * from './clanker.schema';
3
+ export * from './levr.schema';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { Schema } from 'effect';
2
+ export declare const LevrClankerDeploymentSchema: Schema.filter<Schema.filter<Schema.Struct<{
3
+ metadata: Schema.optional<Schema.Struct<{
4
+ description: Schema.optional<typeof Schema.String>;
5
+ telegramLink: Schema.optional<typeof Schema.String>;
6
+ websiteLink: Schema.optional<typeof Schema.String>;
7
+ xLink: Schema.optional<typeof Schema.String>;
8
+ farcasterLink: Schema.optional<typeof Schema.String>;
9
+ }>>;
10
+ devBuy: Schema.optional<Schema.Literal<["0.1 ETH", "0.5 ETH", "1 ETH"]>>;
11
+ airdrop: Schema.optional<Schema.Array$<Schema.Struct<{
12
+ amount: Schema.SchemaClass<number, number, never>;
13
+ account: Schema.Schema<`0x${string}`, `0x${string}`, never>;
14
+ }>>>;
15
+ treasuryFunding: Schema.Literal<["30%" | "40%" | "50%" | "60%" | "70%" | "80%" | "90%"]>;
16
+ fees: Schema.Union<[Schema.Struct<{
17
+ type: Schema.Literal<["static"]>;
18
+ feeTier: Schema.Literal<["1%" | "2%" | "3%"]>;
19
+ }>, Schema.Struct<{
20
+ type: Schema.Literal<["dynamic 3%"]>;
21
+ }>]>;
22
+ stakingReward: Schema.optional<Schema.Literal<["70%" | "80%" | "90%" | "100%"]>>;
23
+ rewards: Schema.optional<Schema.Array$<Schema.Struct<{
24
+ admin: Schema.Schema<`0x${string}`, `0x${string}`, never>;
25
+ recipient: Schema.Schema<`0x${string}`, `0x${string}`, never>;
26
+ percentage: Schema.SchemaClass<number, number, never>;
27
+ token: Schema.Literal<["Both", "Paired", "Clanker"]>;
28
+ }>>>;
29
+ symbol: Schema.refine<string, typeof Schema.String>;
30
+ name: Schema.refine<string, typeof Schema.String>;
31
+ image: Schema.optional<typeof Schema.String>;
32
+ }>>>;
33
+ export type LevrClankerDeploymentSchemaType = typeof LevrClankerDeploymentSchema.Type;
34
+ //# sourceMappingURL=levr.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levr.schema.d.ts","sourceRoot":"","sources":["../../../src/schema/levr.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AA2G/B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+CvC,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG,OAAO,2BAA2B,CAAC,IAAI,CAAA"}
@@ -0,0 +1,137 @@
1
+ import type { TransactionReceipt } from 'viem';
2
+ import type { PoolKey, PopPublicClient, PopWalletClient } from './types';
3
+ export type StakeConfig = {
4
+ wallet: PopWalletClient;
5
+ publicClient: PopPublicClient;
6
+ stakingAddress: `0x${string}`;
7
+ tokenAddress: `0x${string}`;
8
+ tokenDecimals: number;
9
+ trustedForwarder?: `0x${string}`;
10
+ };
11
+ export type UnstakeParams = {
12
+ amount: number | string | bigint;
13
+ to?: `0x${string}`;
14
+ };
15
+ export type ClaimParams = {
16
+ tokens?: `0x${string}`[];
17
+ to?: `0x${string}`;
18
+ };
19
+ export declare class Stake {
20
+ private wallet;
21
+ private publicClient;
22
+ private stakingAddress;
23
+ private tokenAddress;
24
+ private tokenDecimals;
25
+ private chainId;
26
+ private userAddress;
27
+ private trustedForwarder?;
28
+ constructor(config: StakeConfig);
29
+ /**
30
+ * Approve ERC20 tokens for spending by the staking contract
31
+ */
32
+ approve(amount: number | string | bigint): Promise<TransactionReceipt>;
33
+ /**
34
+ * Stake tokens in the staking contract
35
+ */
36
+ stake(amount: number | string | bigint): Promise<TransactionReceipt>;
37
+ /**
38
+ * Unstake tokens from the staking contract
39
+ */
40
+ unstake({ amount, to }: UnstakeParams): Promise<TransactionReceipt>;
41
+ /**
42
+ * Claim rewards from the staking contract
43
+ */
44
+ claimRewards(params: ClaimParams | void): Promise<TransactionReceipt>;
45
+ /**
46
+ * Get allowance for a token and spender
47
+ */
48
+ getAllowance(): Promise<{
49
+ raw: bigint;
50
+ formatted: string;
51
+ }>;
52
+ /**
53
+ * Get pool data from staking contract
54
+ */
55
+ getPoolData(): Promise<{
56
+ totalStaked: {
57
+ raw: bigint;
58
+ formatted: string;
59
+ };
60
+ escrowBalance: {
61
+ raw: bigint;
62
+ formatted: string;
63
+ };
64
+ streamParams: {
65
+ windowSeconds: number;
66
+ streamStart: bigint;
67
+ streamEnd: bigint;
68
+ isActive: boolean;
69
+ };
70
+ rewardRatePerSecond: {
71
+ raw: bigint;
72
+ formatted: string;
73
+ };
74
+ }>;
75
+ /**
76
+ * Get user data from staking contract
77
+ */
78
+ getUserData(): Promise<{
79
+ stakedBalance: {
80
+ raw: bigint;
81
+ formatted: string;
82
+ };
83
+ aprBps: {
84
+ raw: bigint;
85
+ percentage: number;
86
+ };
87
+ }>;
88
+ /**
89
+ * Get outstanding rewards for the token (for accrual purposes)
90
+ */
91
+ getOutstandingRewards(tokenAddress?: `0x${string}`): Promise<{
92
+ available: {
93
+ raw: bigint;
94
+ formatted: string;
95
+ };
96
+ pending: {
97
+ raw: bigint;
98
+ formatted: string;
99
+ };
100
+ }>;
101
+ /**
102
+ * Get claimable rewards for the current user and token
103
+ */
104
+ getClaimableRewards(tokenAddress?: `0x${string}`): Promise<{
105
+ claimable: {
106
+ raw: bigint;
107
+ formatted: string;
108
+ };
109
+ }>;
110
+ /**
111
+ * Get reward rate per second for a specific token
112
+ */
113
+ getRewardRatePerSecond(tokenAddress?: `0x${string}`): Promise<{
114
+ raw: bigint;
115
+ formatted: string;
116
+ }>;
117
+ /**
118
+ * Accrue rewards by triggering automatic collection from LP locker and claiming from ClankerFeeLocker
119
+ */
120
+ accrueRewards(tokenAddress?: `0x${string}`): Promise<TransactionReceipt>;
121
+ /**
122
+ * Accrue rewards for multiple tokens in a single transaction using forwarder multicall
123
+ */
124
+ accrueAllRewards(tokenAddresses: `0x${string}`[]): Promise<TransactionReceipt>;
125
+ /**
126
+ * Calculate WETH APR using pool price and reward rates
127
+ * Formula: (wethRewardRatePerSecond * secondsPerYear * wethPriceInUnderlying / totalStaked) * 10000
128
+ *
129
+ * @param poolKey - The Uniswap V4 pool key for price discovery
130
+ * @returns WETH APR in basis points and percentage
131
+ */
132
+ calculateWethApr(poolKey: PoolKey): Promise<{
133
+ raw: bigint;
134
+ percentage: number;
135
+ }>;
136
+ }
137
+ //# sourceMappingURL=stake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stake.d.ts","sourceRoot":"","sources":["../../src/stake.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import type { PublicClient, TransactionReceipt, WalletClient } from 'viem';
2
+ import type { PoolKey } from './types';
3
+ export type SwapV4Params = {
4
+ publicClient: PublicClient;
5
+ wallet: WalletClient;
6
+ chainId: number;
7
+ poolKey: PoolKey;
8
+ zeroForOne: boolean;
9
+ amountIn: bigint;
10
+ amountOutMinimum: bigint;
11
+ /**
12
+ * Hook data to pass to the pool's hook contract
13
+ * @remarks
14
+ * - Standard pools: Use '0x' (default)
15
+ * - Clanker pools with extensions: May require specific encoded data for pool extension
16
+ * - Format depends on the specific hook implementation
17
+ */
18
+ hookData?: `0x${string}`;
19
+ onApproveERC20Success?: (receipt: TransactionReceipt) => void;
20
+ onApproveERC20Error?: (error: unknown) => void;
21
+ onApprovePermit2Success?: (receipt: TransactionReceipt) => void;
22
+ onApprovePermit2Error?: (error: unknown) => void;
23
+ };
24
+ export type SwapV4ReturnType = TransactionReceipt;
25
+ /**
26
+ * @description Execute a Uniswap V4 swap with automatic native ETH handling
27
+ * @param params Swap parameters including pool key and amounts
28
+ * @returns Transaction receipt
29
+ *
30
+ * @remarks
31
+ * **Architecture:**
32
+ * - Uses Universal Router with V4Planner for encoding swap actions
33
+ * - Automatically handles native ETH ↔ WETH conversions (users never hold WETH)
34
+ * - ERC20 approvals via Permit2 (only for non-WETH tokens)
35
+ * - 20-minute deadline from current block timestamp
36
+ *
37
+ * **Execution Flow:**
38
+ *
39
+ * 1. **Approvals (ERC20 Tokens Only)**:
40
+ * - Checks token balance and existing allowances via multicall
41
+ * - Token → Permit2: Infinite approval if needed
42
+ * - Permit2 → Router: MAX_UINT160 approval with 30-day expiration
43
+ * - Native ETH swaps skip this step entirely
44
+ *
45
+ * 2. **Action Encoding**:
46
+ * - **RoutePlanner Commands**:
47
+ * - `WRAP_ETH` (if input is WETH): Wraps msg.value to router's WETH balance
48
+ * - `V4_SWAP`: Executes the V4Planner actions (see below)
49
+ * - `UNWRAP_WETH` (if output is WETH): Converts router's WETH to native ETH for user
50
+ *
51
+ * - **V4Planner Actions** (nested in V4_SWAP):
52
+ * - `SWAP_EXACT_IN_SINGLE`: Execute the swap with specified pool and amounts
53
+ * - `SETTLE` or `SETTLE_ALL`: Pay for input tokens
54
+ * - `SETTLE(currency, amount, false)`: Router pays from its balance (for WETH input after WRAP_ETH)
55
+ * - `SETTLE_ALL(currency, amount)`: User pays from their token balance (for ERC20 input)
56
+ * - `TAKE` or `TAKE_ALL`: Receive output tokens
57
+ * - `TAKE(currency, routerAddress, 0)`: Router receives WETH (before UNWRAP_WETH)
58
+ * - `TAKE_ALL(currency, 0)`: User directly receives tokens
59
+ *
60
+ * 3. **Transaction Execution**:
61
+ * - Calls `execute(commands, inputs, deadline)` on Universal Router
62
+ * - Sends msg.value = amountIn for WETH input (native ETH)
63
+ * - Sends msg.value = 0 for ERC20 token input
64
+ * - Waits for receipt and validates success
65
+ *
66
+ * **Native ETH Flows:**
67
+ * - **Buy tokens with ETH** (WETH → Token):
68
+ * - User sends ETH as msg.value
69
+ * - WRAP_ETH wraps it to router's WETH balance
70
+ * - SETTLE pays swap from router's WETH (payerIsUser=false)
71
+ * - TAKE_ALL sends tokens directly to user
72
+ *
73
+ * - **Sell tokens for ETH** (Token → WETH):
74
+ * - SETTLE_ALL pays swap from user's token balance (via Permit2)
75
+ * - TAKE sends WETH to router
76
+ * - UNWRAP_WETH converts router's WETH to native ETH
77
+ * - User receives native ETH (sent to MSG_SENDER)
78
+ *
79
+ * - **Token ↔ Token**: Standard ERC20 flow, no WRAP/UNWRAP needed
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * // Buy tokens with native ETH
84
+ * const receipt = await swapV4({
85
+ * publicClient,
86
+ * wallet,
87
+ * chainId: base.id,
88
+ * poolKey,
89
+ * zeroForOne: true, // WETH → Token
90
+ * amountIn: parseEther('0.01'),
91
+ * amountOutMinimum: parseUnits('100', tokenDecimals),
92
+ * hookData: '0x', // Optional: pool-specific hook data
93
+ * })
94
+ * ```
95
+ */
96
+ export declare const swapV4: ({ publicClient, wallet, chainId, poolKey, zeroForOne, amountIn, amountOutMinimum, hookData, onApproveERC20Success, onApproveERC20Error, onApprovePermit2Success, onApprovePermit2Error, }: SwapV4Params) => Promise<SwapV4ReturnType>;
97
+ //# sourceMappingURL=swap-v4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap-v4.d.ts","sourceRoot":"","sources":["../../src/swap-v4.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAY1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;IAGxB,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC7D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,uBAAuB,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC/D,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;AAcjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,eAAO,MAAM,MAAM,GAAU,2LAa1B,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAkNzC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import type { Account, Chain, PublicClient, Transport, WalletClient } from 'viem';
2
+ export type PopWalletClient = WalletClient<Transport, Chain, Account>;
3
+ export type PopPublicClient = PublicClient<Transport, Chain>;
4
+ /**
5
+ * @description Uniswap V4 Pool Key structure
6
+ */
7
+ export type PoolKey = {
8
+ currency0: `0x${string}`;
9
+ currency1: `0x${string}`;
10
+ fee: number;
11
+ tickSpacing: number;
12
+ hooks: `0x${string}`;
13
+ };
14
+ export type CallData = {
15
+ target: `0x${string}`;
16
+ allowFailure: boolean;
17
+ value: bigint;
18
+ callData: `0x${string}`;
19
+ };
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAEjF,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AACrE,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AAE5D;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAA;IACxB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAA;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,KAAK,MAAM,EAAE,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;CACxB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Check if approval is needed for a given amount
3
+ */
4
+ export declare function needsApproval(currentAllowance: string | number | bigint, requiredAmount: string | number | bigint, decimals?: number): boolean;
5
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAEA;;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 ADDED
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "levr-sdk",
3
+ "description": "Leverage your Clanker launch with DAO capabilities",
4
+ "version": "0.0.1",
5
+ "license": "Apache-2.0",
6
+ "sideEffects": false,
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/esm/index.js",
10
+ "types": "./dist/types/index.d.ts"
11
+ },
12
+ "./client": {
13
+ "import": "./dist/esm/client/index.js",
14
+ "types": "./dist/types/client/index.d.ts"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "devnet": "bash script/devnet.sh",
22
+ "devnet:redeploy": "bash script/devnet.sh --redeploy",
23
+ "update-abis": "bun run script/update-abis.ts && prettier --write src/abis/**/*.ts",
24
+ "watch": "bun run script/tsgo-watch.ts",
25
+ "type-check": "tsgo --noEmit --pretty",
26
+ "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"",
27
+ "lint": "eslint",
28
+ "fill-placeholders": "sh ./script/fill-placeholders.sh",
29
+ "warp": "bun -e \"import { warpAnvil } from './test/util.ts'; await warpAnvil(120)\"",
30
+ "build": "bun build:esm && bun build:types && bun build:cleanup",
31
+ "build:esm": "tsc --project ./tsconfig.esm.json && tsc-alias --outDir ./dist/esm && ts-add-js-extension --dir=dist/esm --showprogress=false",
32
+ "build:types": "tsc --project ./tsconfig.types.json && tsc-alias --outDir ./dist/types",
33
+ "build:cleanup": "rm -f dist/types/abis/*.d.ts.map dist/esm/abis/*.js.map && find dist/esm/abis -name '*.js' -type f -exec sed -i.bak '/^\\/\\/# sourceMappingURL=/d' {} + && find dist/types/abis -name '*.d.ts' -type f -exec sed -i.bak '/^\\/\\/# sourceMappingURL=/d' {} + && find dist -name '*.bak' -type f -delete",
34
+ "clean": "rm -rf dist tsconfig.tsbuildinfo node_modules bun.lockb",
35
+ "postinstall": "husky || true",
36
+ "prepack": "pinst --disable",
37
+ "package": "bun run build && npm pack",
38
+ "postpack": "pinst --enable",
39
+ "release": "standard-version -a",
40
+ "release:alpha": "standard-version -a --prerelease alpha --skip.changelog",
41
+ "release:beta": "standard-version -a --prerelease beta --skip.changelog",
42
+ "release:pub": "git push --follow-tags origin $(git rev-parse --abbrev-ref HEAD)"
43
+ },
44
+ "lint-staged": {
45
+ "*.{ts,tsx,js,jsx,mjs,cjs,json,md,css}": [
46
+ "eslint --fix",
47
+ "prettier --write"
48
+ ]
49
+ },
50
+ "resolutions": {
51
+ "eslint": "^9.17.0",
52
+ "typescript": "^5.8.0"
53
+ },
54
+ "peerDependencies": {
55
+ "@tanstack/react-query": "^5.90.2",
56
+ "react": "^19.2.0",
57
+ "viem": "^2.37.11",
58
+ "wagmi": "^2.17.5"
59
+ },
60
+ "dependencies": {
61
+ "@uniswap/sdk-core": "^7.7.2",
62
+ "@uniswap/universal-router-sdk": "^4.19.7",
63
+ "@uniswap/v4-sdk": "^1.21.4",
64
+ "clanker-sdk": "^4.1.23",
65
+ "debug": "^4.4.1",
66
+ "effect": "^3.18.1",
67
+ "type-fest-4": "npm:type-fest@latest"
68
+ },
69
+ "devDependencies": {
70
+ "@commitlint/cli": "^19.8.1",
71
+ "@commitlint/config-conventional": "^19.8.1",
72
+ "@types/bun": "^1.2.22",
73
+ "@types/debug": "^4.1.12",
74
+ "eslint-plugin-prettier": "^5.5.4",
75
+ "eslint-plugin-simple-import-sort": "^12.1.1",
76
+ "husky": "^9.1.7",
77
+ "lint-staged": "^15.5.2",
78
+ "pinst": "^3.0.0",
79
+ "prettier": "^3.6.2",
80
+ "prettier-plugin-sh": "0.17.4",
81
+ "standard-version": "^9.5.0",
82
+ "ts-add-js-extension": "^1.6.6",
83
+ "tsc-alias": "^1.8.16",
84
+ "tsc-files": "^1.1.4",
85
+ "typescript-eslint": "^8.44.0"
86
+ },
87
+ "homepage": "https://github.com/quantidexyz/levr-sdk",
88
+ "repository": "quantidexyz/levr-sdk",
89
+ "authors": [
90
+ "quantidexyz"
91
+ ],
92
+ "keywords": [
93
+ "npm",
94
+ "contracts",
95
+ "web3",
96
+ "ethereum",
97
+ "solidity",
98
+ "evm"
99
+ ]
100
+ }