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 @@
1
+ {"version":3,"file":"base.schema.js","sourceRoot":"","sources":["../../../src/schema/base.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,EAAE,CAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAC9E,WAAW,EAAE,wBAAwB;CACtC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;IACrF,WAAW,EAAE,kCAAkC;CAChD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAC/C,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACtC,CAAC,WAAW,CAAC;IACZ,WAAW,EAAE,0BAA0B;CACxC,CAAgD,CAAA"}
@@ -0,0 +1,191 @@
1
+ import { Schema } from "effect";
2
+ import { EthereumAddress, NonEmptyString, UrlString } from "./base.schema.js";
3
+ const SocialLink = Schema.Struct({
4
+ platform: NonEmptyString("Platform is required"),
5
+ url: UrlString,
6
+ })
7
+ .annotations({ description: "Social media link entry" })
8
+ .pipe(Schema.mutable);
9
+ export const Metadata = Schema.Struct({
10
+ description: Schema.optional(Schema.String),
11
+ socialMediaUrls: Schema.optional(Schema.Array(SocialLink).pipe(Schema.mutable)),
12
+ auditUrls: Schema.optional(Schema.Array(UrlString).pipe(Schema.mutable)),
13
+ }).annotations({ description: "Token metadata (SDK-compatible)" });
14
+ const Context = Schema.Struct({
15
+ interface: Schema.optional(Schema.String),
16
+ platform: Schema.optional(Schema.String),
17
+ messageId: Schema.optional(Schema.String),
18
+ id: Schema.optional(Schema.String),
19
+ })
20
+ .annotations({ description: "Social provenance for the token" })
21
+ .pipe(Schema.mutable);
22
+ const PoolPosition = Schema.Struct({
23
+ tickLower: Schema.Number.annotations({
24
+ description: "Lower tick boundary",
25
+ }),
26
+ tickUpper: Schema.Number.annotations({
27
+ description: "Upper tick boundary",
28
+ }),
29
+ positionBps: Schema.Number.annotations({
30
+ description: "Position size in basis points",
31
+ }),
32
+ })
33
+ .annotations({ description: "Pool position configuration" })
34
+ .pipe(Schema.mutable);
35
+ const Pool = Schema.Struct({
36
+ pairedToken: Schema.optional(Schema.Union(Schema.Literal("WETH"), EthereumAddress)),
37
+ tickIfToken0IsClanker: Schema.optional(Schema.Number),
38
+ tickSpacing: Schema.optional(Schema.Number),
39
+ positions: Schema.Array(PoolPosition).pipe(Schema.mutable).annotations({
40
+ description: "Pool liquidity positions",
41
+ }),
42
+ })
43
+ .annotations({ description: "Pool configuration" })
44
+ .pipe(Schema.mutable);
45
+ const Locker = Schema.Struct({
46
+ locker: Schema.Union(Schema.Literal("Locker"), EthereumAddress).annotations({
47
+ description: "Locker contract address or 'Locker'",
48
+ }),
49
+ lockerData: Schema.optional(EthereumAddress),
50
+ })
51
+ .annotations({ description: "Token locker configuration" })
52
+ .pipe(Schema.mutable);
53
+ const Vault = Schema.Struct({
54
+ percentage: Schema.Number.annotations({
55
+ description: "Percentage of tokens to vault (0-100)",
56
+ }),
57
+ lockupDuration: Schema.Number.annotations({
58
+ description: "Lockup duration in seconds",
59
+ }),
60
+ vestingDuration: Schema.optional(Schema.Number),
61
+ recipient: Schema.optional(EthereumAddress),
62
+ })
63
+ .annotations({ description: "Token vault configuration" })
64
+ .pipe(Schema.mutable);
65
+ const Airdrop = Schema.Struct({
66
+ admin: Schema.optional(EthereumAddress),
67
+ merkleRoot: EthereumAddress.annotations({
68
+ description: "Merkle root for airdrop claims",
69
+ }),
70
+ lockupDuration: Schema.Number.annotations({
71
+ description: "Lockup duration in seconds",
72
+ }),
73
+ vestingDuration: Schema.optional(Schema.Number),
74
+ amount: Schema.Number.annotations({
75
+ description: "Total airdrop amount",
76
+ }),
77
+ })
78
+ .annotations({ description: "Token airdrop configuration" })
79
+ .pipe(Schema.mutable);
80
+ const PoolKey = Schema.Struct({
81
+ currency0: EthereumAddress,
82
+ currency1: EthereumAddress,
83
+ fee: Schema.Number.annotations({
84
+ description: "Pool fee in basis points",
85
+ }),
86
+ tickSpacing: Schema.Number.annotations({
87
+ description: "Tick spacing",
88
+ }),
89
+ hooks: EthereumAddress,
90
+ })
91
+ .annotations({ description: "Uniswap V4 pool key" })
92
+ .pipe(Schema.mutable);
93
+ export const DevBuy = Schema.Struct({
94
+ ethAmount: Schema.Number.annotations({
95
+ description: "ETH amount for dev buy",
96
+ }),
97
+ poolKey: Schema.optional(PoolKey),
98
+ amountOutMin: Schema.optional(Schema.Number),
99
+ }).annotations({
100
+ description: "Developer token buy configuration",
101
+ });
102
+ const StaticFees = Schema.Struct({
103
+ type: Schema.optional(Schema.Literal("static")),
104
+ clankerFee: Schema.Number.annotations({
105
+ description: "Clanker token fee in basis points",
106
+ }),
107
+ pairedFee: Schema.Number.annotations({
108
+ description: "Paired token fee in basis points",
109
+ }),
110
+ })
111
+ .annotations({ description: "Static fee configuration" })
112
+ .pipe(Schema.mutable);
113
+ const DynamicFees = Schema.Struct({
114
+ type: Schema.optional(Schema.Literal("dynamic")),
115
+ baseFee: Schema.Number.annotations({
116
+ description: "Base fee in basis points",
117
+ }),
118
+ maxFee: Schema.Number.annotations({
119
+ description: "Maximum fee in basis points",
120
+ }),
121
+ referenceTickFilterPeriod: Schema.Number.annotations({
122
+ description: "Reference tick filter period",
123
+ }),
124
+ resetPeriod: Schema.Number.annotations({
125
+ description: "Reset period",
126
+ }),
127
+ resetTickFilter: Schema.Number.annotations({
128
+ description: "Reset tick filter",
129
+ }),
130
+ feeControlNumerator: Schema.Number.annotations({
131
+ description: "Fee control numerator",
132
+ }),
133
+ decayFilterBps: Schema.Number.annotations({
134
+ description: "Decay filter in basis points",
135
+ }),
136
+ })
137
+ .annotations({ description: "Dynamic fee configuration" })
138
+ .pipe(Schema.mutable);
139
+ const Fees = Schema.Union(StaticFees, DynamicFees)
140
+ .annotations({
141
+ description: "Fee structure configuration",
142
+ })
143
+ .pipe(Schema.mutable);
144
+ const RewardRecipient = Schema.Struct({
145
+ admin: EthereumAddress.annotations({
146
+ description: "Admin address for recipient",
147
+ }),
148
+ recipient: EthereumAddress.annotations({
149
+ description: "Recipient address",
150
+ }),
151
+ bps: Schema.Number.annotations({
152
+ description: "Reward share in basis points",
153
+ }),
154
+ token: Schema.Union(Schema.Literal("Both"), Schema.Literal("Paired"), Schema.Literal("Clanker")).annotations({
155
+ description: "Token type for rewards",
156
+ }),
157
+ })
158
+ .annotations({ description: "Reward recipient configuration" })
159
+ .pipe(Schema.mutable);
160
+ const Rewards = Schema.Struct({
161
+ recipients: Schema.Array(RewardRecipient).pipe(Schema.mutable).annotations({
162
+ description: "List of reward recipients",
163
+ }),
164
+ })
165
+ .annotations({ description: "Rewards configuration" })
166
+ .pipe(Schema.mutable);
167
+ // Full schema for complete deployment configuration
168
+ export const ClankerDeploymentSchema = Schema.Struct({
169
+ name: NonEmptyString("Name is required").annotations({
170
+ description: "Token name",
171
+ }),
172
+ symbol: NonEmptyString("Symbol is required").annotations({
173
+ description: "Token symbol (ticker)",
174
+ }),
175
+ image: Schema.optional(Schema.String),
176
+ chainId: Schema.optional(Schema.Number),
177
+ tokenAdmin: EthereumAddress.annotations({
178
+ description: "Token admin address",
179
+ }),
180
+ vanity: Schema.optional(Schema.Boolean),
181
+ metadata: Schema.optional(Metadata),
182
+ context: Schema.optional(Context),
183
+ pool: Schema.optional(Pool),
184
+ locker: Schema.optional(Locker),
185
+ vault: Schema.optional(Vault),
186
+ airdrop: Schema.optional(Airdrop),
187
+ devBuy: Schema.optional(DevBuy),
188
+ fees: Schema.optional(Fees),
189
+ rewards: Schema.optional(Rewards),
190
+ }).annotations({ description: "Full Clanker v4 deploy config" });
191
+ //# sourceMappingURL=clanker.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clanker.schema.js","sourceRoot":"","sources":["../../../src/schema/clanker.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./base.schema.js";
2
+ export * from "./clanker.schema.js";
3
+ export * from "./levr.schema.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA"}
@@ -0,0 +1,114 @@
1
+ import { Schema } from "effect";
2
+ import { STAKING_REWARDS, STATIC_FEE_TIERS, TREASURY_AIRDROP_AMOUNTS } from "../constants.js";
3
+ import { EthereumAddress } from "./base.schema.js";
4
+ import { ClankerDeploymentSchema } from "./clanker.schema.js";
5
+ const LevrMetadata = Schema.Struct({
6
+ description: Schema.optional(Schema.String).annotations({
7
+ description: "Clanker token description",
8
+ }),
9
+ telegramLink: Schema.optional(Schema.String).annotations({
10
+ description: "Telegram link for the project",
11
+ }),
12
+ websiteLink: Schema.optional(Schema.String).annotations({
13
+ description: "Website link for the project",
14
+ }),
15
+ xLink: Schema.optional(Schema.String).annotations({
16
+ description: "X link for the project",
17
+ }),
18
+ farcasterLink: Schema.optional(Schema.String).annotations({
19
+ description: "Farcaster link for the project",
20
+ }),
21
+ }).annotations({
22
+ description: "Clanker token metadata",
23
+ });
24
+ const TreasuryFunding = Schema.Literal(...Object.keys(TREASURY_AIRDROP_AMOUNTS)).annotations({
25
+ description: "Amount to fund the treasury during deployment",
26
+ });
27
+ const LevrAirdrop = Schema.Array(Schema.Struct({
28
+ amount: Schema.Number.annotations({
29
+ description: "Total airdrop amount",
30
+ }),
31
+ account: EthereumAddress.annotations({
32
+ description: "Account address",
33
+ }),
34
+ })).annotations({
35
+ description: "Clanker token airdrop, bigger portian is reserved for the treasury",
36
+ });
37
+ const LevrDevBuy = Schema.Literal("0.1 ETH", "0.5 ETH", "1 ETH").annotations({
38
+ description: "Amount to buy during deployment",
39
+ });
40
+ const LevrStaticFeeTier = Schema.Literal(...Object.keys(STATIC_FEE_TIERS)).annotations({
41
+ description: "Fee tier for the static fee",
42
+ });
43
+ const LevrStaticFee = Schema.Struct({
44
+ type: Schema.Literal("static"),
45
+ feeTier: LevrStaticFeeTier,
46
+ }).annotations({
47
+ description: "Fees don't fluctuate",
48
+ });
49
+ const LevrDynamicFee = Schema.Struct({
50
+ type: Schema.Literal("dynamic 3%"),
51
+ }).annotations({
52
+ description: "Fees fluctuate based on market conditions",
53
+ });
54
+ const LevrFees = Schema.Union(LevrStaticFee, LevrDynamicFee).annotations({
55
+ description: "Fees for the clanker token",
56
+ });
57
+ const LevrRewardRecipients = Schema.Array(Schema.Struct({
58
+ admin: EthereumAddress.annotations({
59
+ description: "Admin address for recipient",
60
+ }),
61
+ recipient: EthereumAddress.annotations({
62
+ description: "Recipient address",
63
+ }),
64
+ percentage: Schema.Number.annotations({
65
+ description: "Percentage of rewards to recipient",
66
+ }),
67
+ token: Schema.Literal("Both", "Paired", "Clanker").annotations({
68
+ description: "Token type for rewards",
69
+ }),
70
+ })).annotations({
71
+ description: "Reward recipient for the clanker token",
72
+ });
73
+ const LevrStakingReward = Schema.Literal(...Object.keys(STAKING_REWARDS)).annotations({
74
+ description: "The precentage that is distributed to the staking contract",
75
+ });
76
+ /**
77
+ * Maximum allowed sum of treasury funding and airdrop amounts (90% of 100B tokens)
78
+ */
79
+ const MAX_TOTAL_ALLOCATION = 90000000000; // 90B tokens
80
+ /**
81
+ * Maximum allowed sum of staking reward and rewards recipients
82
+ */
83
+ const MAX_TOTAL_REWARDS = 10000; // 100% of rewards are distributed to the staking contract
84
+ export const LevrClankerDeploymentSchema = Schema.Struct({
85
+ ...ClankerDeploymentSchema.pick("name", "symbol", "image").fields,
86
+ metadata: Schema.optional(LevrMetadata),
87
+ devBuy: Schema.optional(LevrDevBuy),
88
+ airdrop: Schema.optional(LevrAirdrop),
89
+ treasuryFunding: TreasuryFunding,
90
+ fees: LevrFees,
91
+ stakingReward: Schema.optional(LevrStakingReward),
92
+ rewards: Schema.optional(LevrRewardRecipients),
93
+ }).pipe(Schema.filter((data) => {
94
+ // Calculate total airdrop amount
95
+ const airdropTotal = data.airdrop?.reduce((sum, entry) => sum + entry.amount, 0) ?? 0;
96
+ // Get treasury funding (default to 0 if not provided)
97
+ const treasuryAmount = TREASURY_AIRDROP_AMOUNTS[data.treasuryFunding ?? "30%"];
98
+ // Check if the sum exceeds the maximum allocation
99
+ const total = airdropTotal + treasuryAmount;
100
+ return total <= MAX_TOTAL_ALLOCATION;
101
+ }, {
102
+ message: () => `Total allocation (airdrop + treasury funding) cannot exceed ${MAX_TOTAL_ALLOCATION.toLocaleString()} tokens (90% of 100B)`,
103
+ }), Schema.filter((data) => {
104
+ // Get staking reward in basis points (default to 100% if not provided)
105
+ const stakingRewardBps = STAKING_REWARDS[data.stakingReward ?? "100%"];
106
+ // Calculate total rewards recipients percentage
107
+ const rewardRecipientsTotal = data.rewards?.reduce((sum, entry) => sum + entry.percentage, 0) ?? 0;
108
+ // Check if the sum exceeds 100% (10,000 basis points)
109
+ const totalRewards = stakingRewardBps + rewardRecipientsTotal;
110
+ return totalRewards <= MAX_TOTAL_REWARDS;
111
+ }, {
112
+ message: () => `Total rewards (staking reward + reward recipients) cannot exceed 100% (${MAX_TOTAL_REWARDS.toLocaleString()} basis points)`,
113
+ }));
114
+ //# sourceMappingURL=levr.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levr.schema.js","sourceRoot":"","sources":["../../../src/schema/levr.schema.ts"],"names":[],"mappings":"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"}