levr-sdk 0.3.1 → 0.5.0-alpha.2

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 (740) hide show
  1. package/dist/esm/packages/clanker-sdk/src/abi/uniswap/UniswapV3Factory.js +136 -0
  2. package/dist/esm/packages/clanker-sdk/src/abi/uniswap/UniswapV3Factory.js.map +1 -0
  3. package/dist/esm/packages/clanker-sdk/src/abi/uniswap/UniswapV3NonfungiblePositionManager.js +603 -0
  4. package/dist/esm/packages/clanker-sdk/src/abi/uniswap/UniswapV3NonfungiblePositionManager.js.map +1 -0
  5. package/dist/esm/packages/clanker-sdk/src/abi/v0/Clanker.js +312 -0
  6. package/dist/esm/packages/clanker-sdk/src/abi/v0/Clanker.js.map +1 -0
  7. package/dist/esm/packages/clanker-sdk/src/abi/v1/Clanker.js +323 -0
  8. package/dist/esm/packages/clanker-sdk/src/abi/v1/Clanker.js.map +1 -0
  9. package/dist/esm/packages/clanker-sdk/src/abi/v2/Clanker.js +315 -0
  10. package/dist/esm/packages/clanker-sdk/src/abi/v2/Clanker.js.map +1 -0
  11. package/dist/esm/packages/clanker-sdk/src/abi/v2/LpLockerv2.js +321 -0
  12. package/dist/esm/packages/clanker-sdk/src/abi/v2/LpLockerv2.js.map +1 -0
  13. package/dist/esm/packages/clanker-sdk/src/abi/v3/Clanker.js +323 -0
  14. package/dist/esm/packages/clanker-sdk/src/abi/v3/Clanker.js.map +1 -0
  15. package/dist/esm/packages/clanker-sdk/src/abi/v3/ClankerToken.js +548 -0
  16. package/dist/esm/packages/clanker-sdk/src/abi/v3/ClankerToken.js.map +1 -0
  17. package/dist/esm/packages/clanker-sdk/src/abi/v3.1/Clanker.js +689 -0
  18. package/dist/esm/packages/clanker-sdk/src/abi/v3.1/Clanker.js.map +1 -0
  19. package/dist/esm/packages/clanker-sdk/src/abi/v3.1/ClankerToken.js +1794 -0
  20. package/dist/esm/packages/clanker-sdk/src/abi/v3.1/ClankerToken.js.map +1 -0
  21. package/dist/esm/packages/clanker-sdk/src/abi/v3.1/ClankerVault.js +234 -0
  22. package/dist/esm/packages/clanker-sdk/src/abi/v3.1/ClankerVault.js.map +1 -0
  23. package/dist/esm/packages/clanker-sdk/src/abi/v3.1/LpLockerv2.js +571 -0
  24. package/dist/esm/packages/clanker-sdk/src/abi/v3.1/LpLockerv2.js.map +1 -0
  25. package/dist/esm/packages/clanker-sdk/src/abi/v4/Clanker.js +437 -0
  26. package/dist/esm/packages/clanker-sdk/src/abi/v4/Clanker.js.map +1 -0
  27. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerAirdrop.js +198 -0
  28. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerAirdrop.js.map +1 -0
  29. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerAirdropV2.js +290 -0
  30. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerAirdropV2.js.map +1 -0
  31. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerFeeLocker.js +160 -0
  32. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerFeeLocker.js.map +1 -0
  33. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerHook.js +1476 -0
  34. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerHook.js.map +1 -0
  35. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerHookDynamicFee.js +758 -0
  36. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerHookDynamicFee.js.map +1 -0
  37. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerHookStaticFee.js +636 -0
  38. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerHookStaticFee.js.map +1 -0
  39. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerLocker.js +459 -0
  40. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerLocker.js.map +1 -0
  41. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerMevBlockDelay.js +84 -0
  42. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerMevBlockDelay.js.map +1 -0
  43. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerSniperAuction.js +342 -0
  44. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerSniperAuction.js.map +1 -0
  45. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerSniperUtil.js +80 -0
  46. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerSniperUtil.js.map +1 -0
  47. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerToken.js +554 -0
  48. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerToken.js.map +1 -0
  49. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerUniV4EthDevBuy.js +170 -0
  50. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerUniV4EthDevBuy.js.map +1 -0
  51. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerUniv3EthDevBuy.js +172 -0
  52. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerUniv3EthDevBuy.js.map +1 -0
  53. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerVault.js +221 -0
  54. package/dist/esm/packages/clanker-sdk/src/abi/v4/ClankerVault.js.map +1 -0
  55. package/dist/esm/packages/clanker-sdk/src/abi/v4.1/ClankerHookDynamicFee.js +829 -0
  56. package/dist/esm/packages/clanker-sdk/src/abi/v4.1/ClankerHookDynamicFee.js.map +1 -0
  57. package/dist/esm/packages/clanker-sdk/src/abi/v4.1/ClankerHookStaticFee.js +717 -0
  58. package/dist/esm/packages/clanker-sdk/src/abi/v4.1/ClankerHookStaticFee.js.map +1 -0
  59. package/dist/esm/packages/clanker-sdk/src/abi/v4.1/ClankerMevSniperAuction.js +415 -0
  60. package/dist/esm/packages/clanker-sdk/src/abi/v4.1/ClankerMevSniperAuction.js.map +1 -0
  61. package/dist/esm/packages/clanker-sdk/src/abi/v4.1/ClankerPool.js +11 -0
  62. package/dist/esm/packages/clanker-sdk/src/abi/v4.1/ClankerPool.js.map +1 -0
  63. package/dist/esm/packages/clanker-sdk/src/config/clankerTokenV3.js +272 -0
  64. package/dist/esm/packages/clanker-sdk/src/config/clankerTokenV3.js.map +1 -0
  65. package/dist/esm/packages/clanker-sdk/src/config/clankerTokenV4.js +508 -0
  66. package/dist/esm/packages/clanker-sdk/src/config/clankerTokenV4.js.map +1 -0
  67. package/dist/esm/packages/clanker-sdk/src/config/clankerTokens.js +2 -0
  68. package/dist/esm/packages/clanker-sdk/src/config/clankerTokens.js.map +1 -0
  69. package/dist/esm/packages/clanker-sdk/src/constants.js +95 -0
  70. package/dist/esm/packages/clanker-sdk/src/constants.js.map +1 -0
  71. package/dist/esm/packages/clanker-sdk/src/deployment/deploy.js +53 -0
  72. package/dist/esm/packages/clanker-sdk/src/deployment/deploy.js.map +1 -0
  73. package/dist/esm/packages/clanker-sdk/src/extensions/DevBuyExtension.js +89 -0
  74. package/dist/esm/packages/clanker-sdk/src/extensions/DevBuyExtension.js.map +1 -0
  75. package/dist/esm/packages/clanker-sdk/src/extensions/IClankerExtension.js +2 -0
  76. package/dist/esm/packages/clanker-sdk/src/extensions/IClankerExtension.js.map +1 -0
  77. package/dist/esm/packages/clanker-sdk/src/extensions/VaultExtension.js +26 -0
  78. package/dist/esm/packages/clanker-sdk/src/extensions/VaultExtension.js.map +1 -0
  79. package/dist/esm/packages/clanker-sdk/src/extensions/index.js +4 -0
  80. package/dist/esm/packages/clanker-sdk/src/extensions/index.js.map +1 -0
  81. package/dist/esm/packages/clanker-sdk/src/index.js +6 -0
  82. package/dist/esm/packages/clanker-sdk/src/index.js.map +1 -0
  83. package/dist/esm/packages/clanker-sdk/src/services/vanityAddress.js +40 -0
  84. package/dist/esm/packages/clanker-sdk/src/services/vanityAddress.js.map +1 -0
  85. package/dist/esm/packages/clanker-sdk/src/utils/clanker-contracts.js +2 -0
  86. package/dist/esm/packages/clanker-sdk/src/utils/clanker-contracts.js.map +1 -0
  87. package/dist/esm/packages/clanker-sdk/src/utils/clankers.js +212 -0
  88. package/dist/esm/packages/clanker-sdk/src/utils/clankers.js.map +1 -0
  89. package/dist/esm/packages/clanker-sdk/src/utils/errors.js +80 -0
  90. package/dist/esm/packages/clanker-sdk/src/utils/errors.js.map +1 -0
  91. package/dist/esm/packages/clanker-sdk/src/utils/market-cap.js +19 -0
  92. package/dist/esm/packages/clanker-sdk/src/utils/market-cap.js.map +1 -0
  93. package/dist/esm/packages/clanker-sdk/src/utils/merkleTree.js +37 -0
  94. package/dist/esm/packages/clanker-sdk/src/utils/merkleTree.js.map +1 -0
  95. package/dist/esm/packages/clanker-sdk/src/utils/meta.js +9 -0
  96. package/dist/esm/packages/clanker-sdk/src/utils/meta.js.map +1 -0
  97. package/dist/esm/packages/clanker-sdk/src/utils/write-clanker-contracts.js +70 -0
  98. package/dist/esm/packages/clanker-sdk/src/utils/write-clanker-contracts.js.map +1 -0
  99. package/dist/esm/packages/clanker-sdk/src/utils/zod-onchain.js +39 -0
  100. package/dist/esm/packages/clanker-sdk/src/utils/zod-onchain.js.map +1 -0
  101. package/dist/esm/packages/clanker-sdk/src/v3/index.js +151 -0
  102. package/dist/esm/packages/clanker-sdk/src/v3/index.js.map +1 -0
  103. package/dist/esm/packages/clanker-sdk/src/v4/extensions/airdrop.js +144 -0
  104. package/dist/esm/packages/clanker-sdk/src/v4/extensions/airdrop.js.map +1 -0
  105. package/dist/esm/packages/clanker-sdk/src/v4/extensions/index.js +2 -0
  106. package/dist/esm/packages/clanker-sdk/src/v4/extensions/index.js.map +1 -0
  107. package/dist/esm/packages/clanker-sdk/src/v4/index.js +383 -0
  108. package/dist/esm/packages/clanker-sdk/src/v4/index.js.map +1 -0
  109. package/dist/esm/{abis → src/abis}/ClankerAirdropV2.js +1 -0
  110. package/dist/esm/src/abis/ClankerAirdropV2.js.map +1 -0
  111. package/dist/esm/{abis → src/abis}/ClankerVault.js +1 -0
  112. package/dist/esm/src/abis/ClankerVault.js.map +1 -0
  113. package/dist/esm/{abis → src/abis}/IClankerAirdrop.js +1 -0
  114. package/dist/esm/src/abis/IClankerAirdrop.js.map +1 -0
  115. package/dist/esm/src/abis/IClankerFeeLocker.js +216 -0
  116. package/dist/esm/src/abis/IClankerFeeLocker.js.map +1 -0
  117. package/dist/esm/{abis → src/abis}/IClankerHookDynamicFee.js +1 -0
  118. package/dist/esm/src/abis/IClankerHookDynamicFee.js.map +1 -0
  119. package/dist/esm/{abis → src/abis}/IClankerHookStaticFee.js +1 -0
  120. package/dist/esm/src/abis/IClankerHookStaticFee.js.map +1 -0
  121. package/dist/esm/{abis → src/abis}/IClankerLPLocker.js +1 -0
  122. package/dist/esm/src/abis/IClankerLPLocker.js.map +1 -0
  123. package/dist/esm/src/abis/IClankerLpLockerFeeConversion.js +27 -0
  124. package/dist/esm/src/abis/IClankerLpLockerFeeConversion.js.map +1 -0
  125. package/dist/esm/{abis → src/abis}/IClankerLpLockerMultiple.js +1 -0
  126. package/dist/esm/src/abis/IClankerLpLockerMultiple.js.map +1 -0
  127. package/dist/esm/{abis → src/abis}/IClankerToken.js +1 -0
  128. package/dist/esm/src/abis/IClankerToken.js.map +1 -0
  129. package/dist/esm/src/abis/LevrDeployer_v1.js +87 -0
  130. package/dist/esm/src/abis/LevrDeployer_v1.js.map +1 -0
  131. package/dist/esm/{abis → src/abis}/LevrFactory_v1.js +604 -66
  132. package/dist/esm/src/abis/LevrFactory_v1.js.map +1 -0
  133. package/dist/esm/{abis → src/abis}/LevrFeeSplitterFactory_v1.js +1 -0
  134. package/dist/esm/src/abis/LevrFeeSplitterFactory_v1.js.map +1 -0
  135. package/dist/esm/{abis → src/abis}/LevrFeeSplitter_v1.js +6 -58
  136. package/dist/esm/src/abis/LevrFeeSplitter_v1.js.map +1 -0
  137. package/dist/esm/{abis → src/abis}/LevrForwarder_v1.js +1 -0
  138. package/dist/esm/src/abis/LevrForwarder_v1.js.map +1 -0
  139. package/dist/esm/{abis → src/abis}/LevrGovernor_v1.js +216 -14
  140. package/dist/esm/src/abis/LevrGovernor_v1.js.map +1 -0
  141. package/dist/esm/{abis → src/abis}/LevrStakedToken_v1.js +16 -0
  142. package/dist/esm/src/abis/LevrStakedToken_v1.js.map +1 -0
  143. package/dist/esm/{abis → src/abis}/LevrStaking_v1.js +319 -63
  144. package/dist/esm/src/abis/LevrStaking_v1.js.map +1 -0
  145. package/dist/esm/{abis → src/abis}/LevrTreasury_v1.js +35 -38
  146. package/dist/esm/src/abis/LevrTreasury_v1.js.map +1 -0
  147. package/dist/esm/{abis → src/abis}/Permit2.js +1 -0
  148. package/dist/esm/src/abis/Permit2.js.map +1 -0
  149. package/dist/esm/{abis → src/abis}/StateView.js +1 -0
  150. package/dist/esm/src/abis/StateView.js.map +1 -0
  151. package/dist/esm/src/abis/V3Pool.js +36 -0
  152. package/dist/esm/src/abis/V3Pool.js.map +1 -0
  153. package/dist/esm/{abis → src/abis}/V3QuoterV2.js +1 -0
  154. package/dist/esm/src/abis/V3QuoterV2.js.map +1 -0
  155. package/dist/esm/{abis → src/abis}/V4Quoter.js +1 -0
  156. package/dist/esm/src/abis/V4Quoter.js.map +1 -0
  157. package/dist/esm/{abis → src/abis}/WETH9.js +1 -0
  158. package/dist/esm/src/abis/WETH9.js.map +1 -0
  159. package/dist/esm/{abis → src/abis}/index.js +4 -0
  160. package/dist/esm/src/abis/index.js.map +1 -0
  161. package/dist/esm/{airdrop.js → src/airdrop.js} +29 -14
  162. package/dist/esm/src/airdrop.js.map +1 -0
  163. package/dist/esm/{balance.js → src/balance.js} +3 -3
  164. package/dist/esm/src/balance.js.map +1 -0
  165. package/dist/esm/{build-calldatas-v4.js → src/build-calldatas-v4.js} +4 -10
  166. package/dist/esm/src/build-calldatas-v4.js.map +1 -0
  167. package/dist/esm/{build-clanker-v4.js → src/build-clanker-v4.js} +118 -10
  168. package/dist/esm/src/build-clanker-v4.js.map +1 -0
  169. package/dist/esm/{client → src/client}/hook/index.js +6 -5
  170. package/dist/esm/src/client/hook/index.js.map +1 -0
  171. package/dist/esm/src/client/hook/use-airdrop.js.map +1 -0
  172. package/dist/esm/{client → src/client}/hook/use-clanker.js +1 -1
  173. package/dist/esm/src/client/hook/use-clanker.js.map +1 -0
  174. package/dist/esm/src/client/hook/use-configure-splits.js.map +1 -0
  175. package/dist/esm/src/client/hook/use-deploy.js.map +1 -0
  176. package/dist/esm/{client → src/client}/hook/use-factory.js +5 -11
  177. package/dist/esm/src/client/hook/use-factory.js.map +1 -0
  178. package/dist/esm/src/client/hook/use-fee-receivers.js.map +1 -0
  179. package/dist/esm/src/client/hook/use-governance.js.map +1 -0
  180. package/dist/esm/src/client/hook/use-metrics.js +63 -0
  181. package/dist/esm/src/client/hook/use-metrics.js.map +1 -0
  182. package/dist/esm/src/client/hook/use-prepare.js.map +1 -0
  183. package/dist/esm/src/client/hook/use-project.js +133 -0
  184. package/dist/esm/src/client/hook/use-project.js.map +1 -0
  185. package/dist/esm/{client → src/client}/hook/use-proposal.js +6 -5
  186. package/dist/esm/src/client/hook/use-proposal.js.map +1 -0
  187. package/dist/esm/{client → src/client}/hook/use-register.js +1 -1
  188. package/dist/esm/src/client/hook/use-register.js.map +1 -0
  189. package/dist/esm/{client → src/client}/hook/use-stake.js +4 -10
  190. package/dist/esm/src/client/hook/use-stake.js.map +1 -0
  191. package/dist/esm/src/client/hook/use-subscription.js +98 -0
  192. package/dist/esm/src/client/hook/use-subscription.js.map +1 -0
  193. package/dist/esm/{client → src/client}/hook/use-swap.js +5 -4
  194. package/dist/esm/src/client/hook/use-swap.js.map +1 -0
  195. package/dist/esm/src/client/hook/use-user.js.map +1 -0
  196. package/dist/esm/src/client/hook/use-vault.js.map +1 -0
  197. package/dist/esm/src/client/index.js.map +1 -0
  198. package/dist/esm/src/client/levr-provider.js +136 -0
  199. package/dist/esm/src/client/levr-provider.js.map +1 -0
  200. package/dist/esm/{client → src/client}/query-keys.js +16 -6
  201. package/dist/esm/src/client/query-keys.js.map +1 -0
  202. package/dist/esm/src/constants/chain.js +248 -0
  203. package/dist/esm/src/constants/chain.js.map +1 -0
  204. package/dist/esm/src/constants/clanker.js +89 -0
  205. package/dist/esm/src/constants/clanker.js.map +1 -0
  206. package/dist/esm/src/constants/config.js +71 -0
  207. package/dist/esm/src/constants/config.js.map +1 -0
  208. package/dist/esm/src/constants/index.js +24 -0
  209. package/dist/esm/src/constants/index.js.map +1 -0
  210. package/dist/esm/src/constants/levr.js +41 -0
  211. package/dist/esm/src/constants/levr.js.map +1 -0
  212. package/dist/esm/src/constants/uniswap.js +123 -0
  213. package/dist/esm/src/constants/uniswap.js.map +1 -0
  214. package/dist/esm/{deploy-v4.js → src/deploy-v4.js} +1 -1
  215. package/dist/esm/src/deploy-v4.js.map +1 -0
  216. package/dist/esm/src/factory.js +40 -0
  217. package/dist/esm/src/factory.js.map +1 -0
  218. package/dist/esm/{fee-receivers.js → src/fee-receivers.js} +6 -6
  219. package/dist/esm/src/fee-receivers.js.map +1 -0
  220. package/dist/esm/{fee-splitter.js → src/fee-splitter.js} +1 -1
  221. package/dist/esm/src/fee-splitter.js.map +1 -0
  222. package/dist/esm/{governance.js → src/governance.js} +4 -3
  223. package/dist/esm/src/governance.js.map +1 -0
  224. package/dist/esm/src/graphql/client.js +62 -0
  225. package/dist/esm/src/graphql/client.js.map +1 -0
  226. package/dist/esm/src/graphql/constants.js +2 -0
  227. package/dist/esm/src/graphql/constants.js.map +1 -0
  228. package/dist/esm/src/graphql/fields/factory.js +24 -0
  229. package/dist/esm/src/graphql/fields/factory.js.map +1 -0
  230. package/dist/esm/src/graphql/fields/index.js +5 -0
  231. package/dist/esm/src/graphql/fields/index.js.map +1 -0
  232. package/dist/esm/src/graphql/fields/metrics.js +28 -0
  233. package/dist/esm/src/graphql/fields/metrics.js.map +1 -0
  234. package/dist/esm/src/graphql/fields/project.js +108 -0
  235. package/dist/esm/src/graphql/fields/project.js.map +1 -0
  236. package/dist/esm/src/graphql/fields/proposal.js +97 -0
  237. package/dist/esm/src/graphql/fields/proposal.js.map +1 -0
  238. package/dist/esm/src/graphql/gen/index.js +25 -0
  239. package/dist/esm/src/graphql/gen/index.js.map +1 -0
  240. package/dist/esm/src/graphql/gen/runtime/batcher.js +207 -0
  241. package/dist/esm/src/graphql/gen/runtime/batcher.js.map +1 -0
  242. package/dist/esm/src/graphql/gen/runtime/createClient.js +25 -0
  243. package/dist/esm/src/graphql/gen/runtime/createClient.js.map +1 -0
  244. package/dist/esm/src/graphql/gen/runtime/error.js +18 -0
  245. package/dist/esm/src/graphql/gen/runtime/error.js.map +1 -0
  246. package/dist/esm/src/graphql/gen/runtime/fetcher.js +68 -0
  247. package/dist/esm/src/graphql/gen/runtime/fetcher.js.map +1 -0
  248. package/dist/esm/src/graphql/gen/runtime/generateGraphqlOperation.js +126 -0
  249. package/dist/esm/src/graphql/gen/runtime/generateGraphqlOperation.js.map +1 -0
  250. package/dist/esm/src/graphql/gen/runtime/index.js +10 -0
  251. package/dist/esm/src/graphql/gen/runtime/index.js.map +1 -0
  252. package/dist/esm/src/graphql/gen/runtime/linkTypeMap.js +92 -0
  253. package/dist/esm/src/graphql/gen/runtime/linkTypeMap.js.map +1 -0
  254. package/dist/esm/src/graphql/gen/runtime/typeSelection.js +4 -0
  255. package/dist/esm/src/graphql/gen/runtime/typeSelection.js.map +1 -0
  256. package/dist/esm/src/graphql/gen/runtime/types.js +3 -0
  257. package/dist/esm/src/graphql/gen/runtime/types.js.map +1 -0
  258. package/dist/esm/src/graphql/gen/schema.js +527 -0
  259. package/dist/esm/src/graphql/gen/schema.js.map +1 -0
  260. package/dist/esm/src/graphql/gen/types.js +4298 -0
  261. package/dist/esm/src/graphql/gen/types.js.map +1 -0
  262. package/dist/esm/src/graphql/index.js +18 -0
  263. package/dist/esm/src/graphql/index.js.map +1 -0
  264. package/dist/esm/src/graphql/subscription-manager.js +101 -0
  265. package/dist/esm/src/graphql/subscription-manager.js.map +1 -0
  266. package/dist/esm/{index.js → src/index.js} +1 -2
  267. package/dist/esm/src/index.js.map +1 -0
  268. package/dist/esm/src/ipfs-merkle-tree.js.map +1 -0
  269. package/dist/esm/{pool-key.js → src/pool-key.js} +1 -1
  270. package/dist/esm/src/pool-key.js.map +1 -0
  271. package/dist/esm/src/project.js +680 -0
  272. package/dist/esm/src/project.js.map +1 -0
  273. package/dist/esm/src/proposal.js +181 -0
  274. package/dist/esm/src/proposal.js.map +1 -0
  275. package/dist/esm/src/quote/index.js.map +1 -0
  276. package/dist/esm/src/quote/v3.js.map +1 -0
  277. package/dist/esm/{quote → src/quote}/v4.js +1 -1
  278. package/dist/esm/src/quote/v4.js.map +1 -0
  279. package/dist/esm/src/schema/base.schema.js.map +1 -0
  280. package/dist/esm/{schema → src/schema}/clanker.schema.js +26 -2
  281. package/dist/esm/src/schema/clanker.schema.js.map +1 -0
  282. package/dist/esm/src/schema/index.js.map +1 -0
  283. package/dist/esm/{schema → src/schema}/levr.schema.js +53 -12
  284. package/dist/esm/src/schema/levr.schema.js.map +1 -0
  285. package/dist/esm/{stake.js → src/stake.js} +154 -80
  286. package/dist/esm/src/stake.js.map +1 -0
  287. package/dist/esm/{swap-v4.js → src/swap-v4.js} +2 -13
  288. package/dist/esm/src/swap-v4.js.map +1 -0
  289. package/dist/esm/{types.js.map → src/types.js.map} +1 -1
  290. package/dist/esm/src/usd-price.js +274 -0
  291. package/dist/esm/src/usd-price.js.map +1 -0
  292. package/dist/esm/{user.js → src/user.js} +37 -25
  293. package/dist/esm/src/user.js.map +1 -0
  294. package/dist/esm/src/util.js +137 -0
  295. package/dist/esm/src/util.js.map +1 -0
  296. package/dist/esm/{vault.js → src/vault.js} +1 -1
  297. package/dist/esm/src/vault.js.map +1 -0
  298. package/dist/types/packages/clanker-sdk/src/abi/uniswap/UniswapV3Factory.d.ts +185 -0
  299. package/dist/types/packages/clanker-sdk/src/abi/uniswap/UniswapV3Factory.d.ts.map +1 -0
  300. package/dist/types/packages/clanker-sdk/src/abi/uniswap/UniswapV3NonfungiblePositionManager.d.ts +949 -0
  301. package/dist/types/packages/clanker-sdk/src/abi/uniswap/UniswapV3NonfungiblePositionManager.d.ts.map +1 -0
  302. package/dist/types/packages/clanker-sdk/src/abi/v0/Clanker.d.ts +402 -0
  303. package/dist/types/packages/clanker-sdk/src/abi/v0/Clanker.d.ts.map +1 -0
  304. package/dist/types/packages/clanker-sdk/src/abi/v1/Clanker.d.ts +491 -0
  305. package/dist/types/packages/clanker-sdk/src/abi/v1/Clanker.d.ts.map +1 -0
  306. package/dist/types/packages/clanker-sdk/src/abi/v2/Clanker.d.ts +463 -0
  307. package/dist/types/packages/clanker-sdk/src/abi/v2/Clanker.d.ts.map +1 -0
  308. package/dist/types/packages/clanker-sdk/src/abi/v2/LpLockerv2.d.ts +428 -0
  309. package/dist/types/packages/clanker-sdk/src/abi/v2/LpLockerv2.d.ts.map +1 -0
  310. package/dist/types/packages/clanker-sdk/src/abi/v3/Clanker.d.ts +499 -0
  311. package/dist/types/packages/clanker-sdk/src/abi/v3/Clanker.d.ts.map +1 -0
  312. package/dist/types/packages/clanker-sdk/src/abi/v3/ClankerToken.d.ts +846 -0
  313. package/dist/types/packages/clanker-sdk/src/abi/v3/ClankerToken.d.ts.map +1 -0
  314. package/dist/types/packages/clanker-sdk/src/abi/v3.1/Clanker.d.ts +846 -0
  315. package/dist/types/packages/clanker-sdk/src/abi/v3.1/Clanker.d.ts.map +1 -0
  316. package/dist/types/packages/clanker-sdk/src/abi/v3.1/ClankerToken.d.ts +2654 -0
  317. package/dist/types/packages/clanker-sdk/src/abi/v3.1/ClankerToken.d.ts.map +1 -0
  318. package/dist/types/packages/clanker-sdk/src/abi/v3.1/ClankerVault.d.ts +289 -0
  319. package/dist/types/packages/clanker-sdk/src/abi/v3.1/ClankerVault.d.ts.map +1 -0
  320. package/dist/types/packages/clanker-sdk/src/abi/v3.1/LpLockerv2.d.ts +670 -0
  321. package/dist/types/packages/clanker-sdk/src/abi/v3.1/LpLockerv2.d.ts.map +1 -0
  322. package/dist/types/packages/clanker-sdk/src/abi/v4/Clanker.d.ts +819 -0
  323. package/dist/types/packages/clanker-sdk/src/abi/v4/Clanker.d.ts.map +1 -0
  324. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerAirdrop.d.ts +413 -0
  325. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerAirdrop.d.ts.map +1 -0
  326. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerAirdropV2.d.ts +573 -0
  327. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerAirdropV2.d.ts.map +1 -0
  328. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerFeeLocker.d.ts +290 -0
  329. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerFeeLocker.d.ts.map +1 -0
  330. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHook.d.ts +1143 -0
  331. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHook.d.ts.map +1 -0
  332. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHookDynamicFee.d.ts +1430 -0
  333. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHookDynamicFee.d.ts.map +1 -0
  334. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHookStaticFee.d.ts +1219 -0
  335. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHookStaticFee.d.ts.map +1 -0
  336. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerLocker.d.ts +845 -0
  337. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerLocker.d.ts.map +1 -0
  338. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerMevBlockDelay.d.ts +151 -0
  339. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerMevBlockDelay.d.ts.map +1 -0
  340. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerSniperAuction.d.ts +572 -0
  341. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerSniperAuction.d.ts.map +1 -0
  342. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerSniperUtil.d.ts +167 -0
  343. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerSniperUtil.d.ts.map +1 -0
  344. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerToken.d.ts +981 -0
  345. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerToken.d.ts.map +1 -0
  346. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerUniV4EthDevBuy.d.ts +325 -0
  347. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerUniV4EthDevBuy.d.ts.map +1 -0
  348. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerUniv3EthDevBuy.d.ts +326 -0
  349. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerUniv3EthDevBuy.d.ts.map +1 -0
  350. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerVault.d.ts +414 -0
  351. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerVault.d.ts.map +1 -0
  352. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerHookDynamicFee.d.ts +92 -0
  353. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerHookDynamicFee.d.ts.map +1 -0
  354. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerHookStaticFee.d.ts +88 -0
  355. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerHookStaticFee.d.ts.map +1 -0
  356. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerMevSniperAuction.d.ts +69 -0
  357. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerMevSniperAuction.d.ts.map +1 -0
  358. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerPool.d.ts +9 -0
  359. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerPool.d.ts.map +1 -0
  360. package/dist/types/packages/clanker-sdk/src/config/clankerTokenV3.d.ts +64 -0
  361. package/dist/types/packages/clanker-sdk/src/config/clankerTokenV3.d.ts.map +1 -0
  362. package/dist/types/packages/clanker-sdk/src/config/clankerTokenV4.d.ts +136 -0
  363. package/dist/types/packages/clanker-sdk/src/config/clankerTokenV4.d.ts.map +1 -0
  364. package/dist/types/packages/clanker-sdk/src/config/clankerTokens.d.ts +12 -0
  365. package/dist/types/packages/clanker-sdk/src/config/clankerTokens.d.ts.map +1 -0
  366. package/dist/types/packages/clanker-sdk/src/constants.d.ts +29 -0
  367. package/dist/types/packages/clanker-sdk/src/constants.d.ts.map +1 -0
  368. package/dist/types/packages/clanker-sdk/src/deployment/deploy.d.ts +21 -0
  369. package/dist/types/packages/clanker-sdk/src/deployment/deploy.d.ts.map +1 -0
  370. package/dist/types/packages/clanker-sdk/src/extensions/DevBuyExtension.d.ts +52 -0
  371. package/dist/types/packages/clanker-sdk/src/extensions/DevBuyExtension.d.ts.map +1 -0
  372. package/dist/types/packages/clanker-sdk/src/extensions/IClankerExtension.d.ts +36 -0
  373. package/dist/types/packages/clanker-sdk/src/extensions/IClankerExtension.d.ts.map +1 -0
  374. package/dist/types/packages/clanker-sdk/src/extensions/VaultExtension.d.ts +17 -0
  375. package/dist/types/packages/clanker-sdk/src/extensions/VaultExtension.d.ts.map +1 -0
  376. package/dist/types/packages/clanker-sdk/src/extensions/index.d.ts +4 -0
  377. package/dist/types/packages/clanker-sdk/src/extensions/index.d.ts.map +1 -0
  378. package/dist/types/packages/clanker-sdk/src/index.d.ts +8 -0
  379. package/dist/types/packages/clanker-sdk/src/index.d.ts.map +1 -0
  380. package/dist/types/packages/clanker-sdk/src/services/vanityAddress.d.ts +15 -0
  381. package/dist/types/packages/clanker-sdk/src/services/vanityAddress.d.ts.map +1 -0
  382. package/dist/types/packages/clanker-sdk/src/utils/clanker-contracts.d.ts +16 -0
  383. package/dist/types/packages/clanker-sdk/src/utils/clanker-contracts.d.ts.map +1 -0
  384. package/dist/types/packages/clanker-sdk/src/utils/clankers.d.ts +9506 -0
  385. package/dist/types/packages/clanker-sdk/src/utils/clankers.d.ts.map +1 -0
  386. package/dist/types/packages/clanker-sdk/src/utils/errors.d.ts +16 -0
  387. package/dist/types/packages/clanker-sdk/src/utils/errors.d.ts.map +1 -0
  388. package/dist/types/packages/clanker-sdk/src/utils/market-cap.d.ts +12 -0
  389. package/dist/types/packages/clanker-sdk/src/utils/market-cap.d.ts.map +1 -0
  390. package/dist/types/packages/clanker-sdk/src/utils/merkleTree.d.ts +19 -0
  391. package/dist/types/packages/clanker-sdk/src/utils/merkleTree.d.ts.map +1 -0
  392. package/dist/types/packages/clanker-sdk/src/utils/meta.d.ts +7 -0
  393. package/dist/types/packages/clanker-sdk/src/utils/meta.d.ts.map +1 -0
  394. package/dist/types/packages/clanker-sdk/src/utils/write-clanker-contracts.d.ts +57 -0
  395. package/dist/types/packages/clanker-sdk/src/utils/write-clanker-contracts.d.ts.map +1 -0
  396. package/dist/types/packages/clanker-sdk/src/utils/zod-onchain.d.ts +29 -0
  397. package/dist/types/packages/clanker-sdk/src/utils/zod-onchain.d.ts.map +1 -0
  398. package/dist/types/packages/clanker-sdk/src/v3/index.d.ts +3167 -0
  399. package/dist/types/packages/clanker-sdk/src/v3/index.d.ts.map +1 -0
  400. package/dist/types/packages/clanker-sdk/src/v4/extensions/airdrop.d.ts +108 -0
  401. package/dist/types/packages/clanker-sdk/src/v4/extensions/airdrop.d.ts.map +1 -0
  402. package/dist/types/packages/clanker-sdk/src/v4/extensions/index.d.ts +2 -0
  403. package/dist/types/packages/clanker-sdk/src/v4/extensions/index.d.ts.map +1 -0
  404. package/dist/types/packages/clanker-sdk/src/v4/index.d.ts +3781 -0
  405. package/dist/types/packages/clanker-sdk/src/v4/index.d.ts.map +1 -0
  406. package/dist/types/{abis → src/abis}/ClankerAirdropV2.d.ts +1 -0
  407. package/dist/types/src/abis/ClankerAirdropV2.d.ts.map +1 -0
  408. package/dist/types/{abis → src/abis}/ClankerVault.d.ts +1 -0
  409. package/dist/types/src/abis/ClankerVault.d.ts.map +1 -0
  410. package/dist/types/{abis → src/abis}/IClankerAirdrop.d.ts +1 -0
  411. package/dist/types/src/abis/IClankerAirdrop.d.ts.map +1 -0
  412. package/dist/types/src/abis/IClankerFeeLocker.d.ts +170 -0
  413. package/dist/types/src/abis/IClankerFeeLocker.d.ts.map +1 -0
  414. package/dist/types/{abis → src/abis}/IClankerHookDynamicFee.d.ts +1 -0
  415. package/dist/types/src/abis/IClankerHookDynamicFee.d.ts.map +1 -0
  416. package/dist/types/{abis → src/abis}/IClankerHookStaticFee.d.ts +1 -0
  417. package/dist/types/src/abis/IClankerHookStaticFee.d.ts.map +1 -0
  418. package/dist/types/{abis → src/abis}/IClankerLPLocker.d.ts +1 -0
  419. package/dist/types/src/abis/IClankerLPLocker.d.ts.map +1 -0
  420. package/dist/types/src/abis/IClankerLpLockerFeeConversion.d.ts +21 -0
  421. package/dist/types/src/abis/IClankerLpLockerFeeConversion.d.ts.map +1 -0
  422. package/dist/types/{abis → src/abis}/IClankerLpLockerMultiple.d.ts +1 -0
  423. package/dist/types/src/abis/IClankerLpLockerMultiple.d.ts.map +1 -0
  424. package/dist/types/{abis → src/abis}/IClankerToken.d.ts +1 -0
  425. package/dist/types/src/abis/IClankerToken.d.ts.map +1 -0
  426. package/dist/types/src/abis/LevrDeployer_v1.d.ts +68 -0
  427. package/dist/types/src/abis/LevrDeployer_v1.d.ts.map +1 -0
  428. package/dist/types/{abis → src/abis}/LevrFactory_v1.d.ts +455 -39
  429. package/dist/types/src/abis/LevrFactory_v1.d.ts.map +1 -0
  430. package/dist/types/{abis → src/abis}/LevrFeeSplitterFactory_v1.d.ts +1 -0
  431. package/dist/types/src/abis/LevrFeeSplitterFactory_v1.d.ts.map +1 -0
  432. package/dist/types/{abis → src/abis}/LevrFeeSplitter_v1.d.ts +5 -44
  433. package/dist/types/src/abis/LevrFeeSplitter_v1.d.ts.map +1 -0
  434. package/dist/types/{abis → src/abis}/LevrForwarder_v1.d.ts +1 -0
  435. package/dist/types/src/abis/LevrForwarder_v1.d.ts.map +1 -0
  436. package/dist/types/{abis → src/abis}/LevrGovernor_v1.d.ts +173 -14
  437. package/dist/types/src/abis/LevrGovernor_v1.d.ts.map +1 -0
  438. package/dist/types/{abis → src/abis}/LevrStakedToken_v1.d.ts +13 -0
  439. package/dist/types/src/abis/LevrStakedToken_v1.d.ts.map +1 -0
  440. package/dist/types/{abis → src/abis}/LevrStaking_v1.d.ts +259 -61
  441. package/dist/types/src/abis/LevrStaking_v1.d.ts.map +1 -0
  442. package/dist/types/{abis → src/abis}/LevrTreasury_v1.d.ts +30 -31
  443. package/dist/types/src/abis/LevrTreasury_v1.d.ts.map +1 -0
  444. package/dist/types/{abis → src/abis}/Permit2.d.ts +1 -0
  445. package/dist/types/src/abis/Permit2.d.ts.map +1 -0
  446. package/dist/types/{abis → src/abis}/StateView.d.ts +1 -0
  447. package/dist/types/src/abis/StateView.d.ts.map +1 -0
  448. package/dist/types/src/abis/V3Pool.d.ts +50 -0
  449. package/dist/types/src/abis/V3Pool.d.ts.map +1 -0
  450. package/dist/types/{abis → src/abis}/V3QuoterV2.d.ts +1 -0
  451. package/dist/types/src/abis/V3QuoterV2.d.ts.map +1 -0
  452. package/dist/types/{abis → src/abis}/V4Quoter.d.ts +1 -0
  453. package/dist/types/src/abis/V4Quoter.d.ts.map +1 -0
  454. package/dist/types/{abis → src/abis}/WETH9.d.ts +1 -0
  455. package/dist/types/src/abis/WETH9.d.ts.map +1 -0
  456. package/dist/types/{abis → src/abis}/index.d.ts +4 -0
  457. package/dist/types/src/abis/index.d.ts.map +1 -0
  458. package/dist/types/{airdrop.d.ts → src/airdrop.d.ts} +2 -1
  459. package/dist/types/src/airdrop.d.ts.map +1 -0
  460. package/dist/types/src/balance.d.ts.map +1 -0
  461. package/dist/types/{build-calldatas-v4.d.ts → src/build-calldatas-v4.d.ts} +1 -1
  462. package/dist/types/src/build-calldatas-v4.d.ts.map +1 -0
  463. package/dist/types/{build-clanker-v4.d.ts → src/build-clanker-v4.d.ts} +2 -1
  464. package/dist/types/src/build-clanker-v4.d.ts.map +1 -0
  465. package/dist/types/{client → src/client}/hook/index.d.ts +6 -5
  466. package/dist/types/src/client/hook/index.d.ts.map +1 -0
  467. package/dist/types/src/client/hook/use-airdrop.d.ts.map +1 -0
  468. package/dist/types/src/client/hook/use-clanker.d.ts.map +1 -0
  469. package/dist/types/src/client/hook/use-configure-splits.d.ts.map +1 -0
  470. package/dist/types/{client → src/client}/hook/use-deploy.d.ts +2 -1
  471. package/dist/types/src/client/hook/use-deploy.d.ts.map +1 -0
  472. package/dist/types/{client → src/client}/hook/use-factory.d.ts +4 -2
  473. package/dist/types/src/client/hook/use-factory.d.ts.map +1 -0
  474. package/dist/types/src/client/hook/use-fee-receivers.d.ts.map +1 -0
  475. package/dist/types/src/client/hook/use-governance.d.ts.map +1 -0
  476. package/dist/types/src/client/hook/use-metrics.d.ts +16 -0
  477. package/dist/types/src/client/hook/use-metrics.d.ts.map +1 -0
  478. package/dist/types/src/client/hook/use-prepare.d.ts.map +1 -0
  479. package/dist/types/{client → src/client}/hook/use-project.d.ts +22 -6
  480. package/dist/types/src/client/hook/use-project.d.ts.map +1 -0
  481. package/dist/types/{client → src/client}/hook/use-proposal.d.ts +2 -2
  482. package/dist/types/src/client/hook/use-proposal.d.ts.map +1 -0
  483. package/dist/types/src/client/hook/use-register.d.ts.map +1 -0
  484. package/dist/types/src/client/hook/use-stake.d.ts.map +1 -0
  485. package/dist/types/src/client/hook/use-subscription.d.ts +33 -0
  486. package/dist/types/src/client/hook/use-subscription.d.ts.map +1 -0
  487. package/dist/types/src/client/hook/use-swap.d.ts.map +1 -0
  488. package/dist/types/src/client/hook/use-user.d.ts.map +1 -0
  489. package/dist/types/src/client/hook/use-vault.d.ts.map +1 -0
  490. package/dist/types/src/client/index.d.ts.map +1 -0
  491. package/dist/types/{client → src/client}/levr-provider.d.ts +1 -15
  492. package/dist/types/src/client/levr-provider.d.ts.map +1 -0
  493. package/dist/types/{client → src/client}/query-keys.d.ts +9 -6
  494. package/dist/types/src/client/query-keys.d.ts.map +1 -0
  495. package/dist/types/src/constants/chain.d.ts +117 -0
  496. package/dist/types/src/constants/chain.d.ts.map +1 -0
  497. package/dist/types/src/constants/clanker.d.ts +31 -0
  498. package/dist/types/src/constants/clanker.d.ts.map +1 -0
  499. package/dist/types/src/constants/config.d.ts +71 -0
  500. package/dist/types/src/constants/config.d.ts.map +1 -0
  501. package/dist/types/src/constants/index.d.ts +19 -0
  502. package/dist/types/src/constants/index.d.ts.map +1 -0
  503. package/dist/types/src/constants/levr.d.ts +22 -0
  504. package/dist/types/src/constants/levr.d.ts.map +1 -0
  505. package/dist/types/src/constants/uniswap.d.ts +50 -0
  506. package/dist/types/src/constants/uniswap.d.ts.map +1 -0
  507. package/dist/types/src/deploy-v4.d.ts.map +1 -0
  508. package/dist/types/src/factory.d.ts +21 -0
  509. package/dist/types/src/factory.d.ts.map +1 -0
  510. package/dist/types/{fee-receivers.d.ts → src/fee-receivers.d.ts} +20 -180
  511. package/dist/types/src/fee-receivers.d.ts.map +1 -0
  512. package/dist/types/src/fee-splitter.d.ts.map +1 -0
  513. package/dist/types/{governance.d.ts → src/governance.d.ts} +2 -0
  514. package/dist/types/src/governance.d.ts.map +1 -0
  515. package/dist/types/src/graphql/client.d.ts +12 -0
  516. package/dist/types/src/graphql/client.d.ts.map +1 -0
  517. package/dist/types/src/graphql/constants.d.ts +2 -0
  518. package/dist/types/src/graphql/constants.d.ts.map +1 -0
  519. package/dist/types/src/graphql/fields/factory.d.ts +22 -0
  520. package/dist/types/src/graphql/fields/factory.d.ts.map +1 -0
  521. package/dist/types/src/graphql/fields/index.d.ts +5 -0
  522. package/dist/types/src/graphql/fields/index.d.ts.map +1 -0
  523. package/dist/types/src/graphql/fields/metrics.d.ts +36 -0
  524. package/dist/types/src/graphql/fields/metrics.d.ts.map +1 -0
  525. package/dist/types/src/graphql/fields/project.d.ts +249 -0
  526. package/dist/types/src/graphql/fields/project.d.ts.map +1 -0
  527. package/dist/types/src/graphql/fields/proposal.d.ts +195 -0
  528. package/dist/types/src/graphql/fields/proposal.d.ts.map +1 -0
  529. package/dist/types/src/graphql/gen/index.d.ts +23 -0
  530. package/dist/types/src/graphql/gen/index.d.ts.map +1 -0
  531. package/dist/types/src/graphql/gen/runtime/batcher.d.ts +106 -0
  532. package/dist/types/src/graphql/gen/runtime/batcher.d.ts.map +1 -0
  533. package/dist/types/src/graphql/gen/runtime/createClient.d.ts +18 -0
  534. package/dist/types/src/graphql/gen/runtime/createClient.d.ts.map +1 -0
  535. package/dist/types/src/graphql/gen/runtime/error.d.ts +19 -0
  536. package/dist/types/src/graphql/gen/runtime/error.d.ts.map +1 -0
  537. package/dist/types/src/graphql/gen/runtime/fetcher.d.ts +11 -0
  538. package/dist/types/src/graphql/gen/runtime/fetcher.d.ts.map +1 -0
  539. package/dist/types/src/graphql/gen/runtime/generateGraphqlOperation.d.ts +31 -0
  540. package/dist/types/src/graphql/gen/runtime/generateGraphqlOperation.d.ts.map +1 -0
  541. package/dist/types/src/graphql/gen/runtime/index.d.ts +12 -0
  542. package/dist/types/src/graphql/gen/runtime/index.d.ts.map +1 -0
  543. package/dist/types/src/graphql/gen/runtime/linkTypeMap.d.ts +10 -0
  544. package/dist/types/src/graphql/gen/runtime/linkTypeMap.d.ts.map +1 -0
  545. package/dist/types/src/graphql/gen/runtime/typeSelection.d.ts +29 -0
  546. package/dist/types/src/graphql/gen/runtime/typeSelection.d.ts.map +1 -0
  547. package/dist/types/src/graphql/gen/runtime/types.d.ts +53 -0
  548. package/dist/types/src/graphql/gen/runtime/types.d.ts.map +1 -0
  549. package/dist/types/src/graphql/gen/schema.d.ts +6056 -0
  550. package/dist/types/src/graphql/gen/schema.d.ts.map +1 -0
  551. package/dist/types/src/graphql/gen/types.d.ts +3867 -0
  552. package/dist/types/src/graphql/gen/types.d.ts.map +1 -0
  553. package/dist/types/src/graphql/index.d.ts +19 -0
  554. package/dist/types/src/graphql/index.d.ts.map +1 -0
  555. package/dist/types/src/graphql/subscription-manager.d.ts +64 -0
  556. package/dist/types/src/graphql/subscription-manager.d.ts.map +1 -0
  557. package/dist/types/{index.d.ts → src/index.d.ts} +0 -1
  558. package/dist/types/src/index.d.ts.map +1 -0
  559. package/dist/types/src/ipfs-merkle-tree.d.ts.map +1 -0
  560. package/dist/types/src/pool-key.d.ts.map +1 -0
  561. package/dist/types/{project.d.ts → src/project.d.ts} +41 -18
  562. package/dist/types/src/project.d.ts.map +1 -0
  563. package/dist/types/src/proposal.d.ts +34 -0
  564. package/dist/types/src/proposal.d.ts.map +1 -0
  565. package/dist/types/src/quote/index.d.ts.map +1 -0
  566. package/dist/types/src/quote/v3.d.ts.map +1 -0
  567. package/dist/types/src/quote/v4.d.ts.map +1 -0
  568. package/dist/types/src/schema/base.schema.d.ts.map +1 -0
  569. package/dist/types/{schema → src/schema}/clanker.schema.d.ts +16 -4
  570. package/dist/types/src/schema/clanker.schema.d.ts.map +1 -0
  571. package/dist/types/src/schema/index.d.ts.map +1 -0
  572. package/dist/types/{schema → src/schema}/levr.schema.d.ts +23 -1
  573. package/dist/types/src/schema/levr.schema.d.ts.map +1 -0
  574. package/dist/types/{stake.d.ts → src/stake.d.ts} +28 -35
  575. package/dist/types/src/stake.d.ts.map +1 -0
  576. package/dist/types/src/swap-v4.d.ts.map +1 -0
  577. package/dist/types/{types.d.ts → src/types.d.ts} +1 -1
  578. package/dist/types/src/types.d.ts.map +1 -0
  579. package/dist/types/src/usd-price.d.ts +189 -0
  580. package/dist/types/src/usd-price.d.ts.map +1 -0
  581. package/dist/types/{proposal.d.ts → src/user.d.ts} +532 -709
  582. package/dist/types/src/user.d.ts.map +1 -0
  583. package/dist/types/{util.d.ts → src/util.d.ts} +11 -0
  584. package/dist/types/src/util.d.ts.map +1 -0
  585. package/dist/types/src/vault.d.ts.map +1 -0
  586. package/package.json +17 -4
  587. package/dist/esm/airdrop.js.map +0 -1
  588. package/dist/esm/balance.js.map +0 -1
  589. package/dist/esm/build-calldatas-v4.js.map +0 -1
  590. package/dist/esm/build-clanker-v4.js.map +0 -1
  591. package/dist/esm/client/hook/index.js.map +0 -1
  592. package/dist/esm/client/hook/use-airdrop.js.map +0 -1
  593. package/dist/esm/client/hook/use-clanker.js.map +0 -1
  594. package/dist/esm/client/hook/use-configure-splits.js.map +0 -1
  595. package/dist/esm/client/hook/use-deploy.js.map +0 -1
  596. package/dist/esm/client/hook/use-factory.js.map +0 -1
  597. package/dist/esm/client/hook/use-fee-receivers.js.map +0 -1
  598. package/dist/esm/client/hook/use-governance.js.map +0 -1
  599. package/dist/esm/client/hook/use-pool.js +0 -26
  600. package/dist/esm/client/hook/use-pool.js.map +0 -1
  601. package/dist/esm/client/hook/use-prepare.js.map +0 -1
  602. package/dist/esm/client/hook/use-project.js +0 -69
  603. package/dist/esm/client/hook/use-project.js.map +0 -1
  604. package/dist/esm/client/hook/use-proposal.js.map +0 -1
  605. package/dist/esm/client/hook/use-register.js.map +0 -1
  606. package/dist/esm/client/hook/use-stake.js.map +0 -1
  607. package/dist/esm/client/hook/use-swap.js.map +0 -1
  608. package/dist/esm/client/hook/use-user.js.map +0 -1
  609. package/dist/esm/client/hook/use-vault.js.map +0 -1
  610. package/dist/esm/client/index.js.map +0 -1
  611. package/dist/esm/client/levr-provider.js +0 -185
  612. package/dist/esm/client/levr-provider.js.map +0 -1
  613. package/dist/esm/client/query-keys.js.map +0 -1
  614. package/dist/esm/constants.js +0 -300
  615. package/dist/esm/constants.js.map +0 -1
  616. package/dist/esm/deploy-v4.js.map +0 -1
  617. package/dist/esm/factory.js +0 -94
  618. package/dist/esm/factory.js.map +0 -1
  619. package/dist/esm/fee-receivers.js.map +0 -1
  620. package/dist/esm/fee-splitter.js.map +0 -1
  621. package/dist/esm/governance.js.map +0 -1
  622. package/dist/esm/index.js.map +0 -1
  623. package/dist/esm/ipfs-merkle-tree.js.map +0 -1
  624. package/dist/esm/pool-key.js.map +0 -1
  625. package/dist/esm/pool.js +0 -70
  626. package/dist/esm/pool.js.map +0 -1
  627. package/dist/esm/project.js +0 -574
  628. package/dist/esm/project.js.map +0 -1
  629. package/dist/esm/proposal.js +0 -156
  630. package/dist/esm/proposal.js.map +0 -1
  631. package/dist/esm/quote/index.js.map +0 -1
  632. package/dist/esm/quote/v3.js.map +0 -1
  633. package/dist/esm/quote/v4.js.map +0 -1
  634. package/dist/esm/schema/base.schema.js.map +0 -1
  635. package/dist/esm/schema/clanker.schema.js.map +0 -1
  636. package/dist/esm/schema/index.js.map +0 -1
  637. package/dist/esm/schema/levr.schema.js.map +0 -1
  638. package/dist/esm/stake.js.map +0 -1
  639. package/dist/esm/swap-v4.js.map +0 -1
  640. package/dist/esm/usd-price.js +0 -166
  641. package/dist/esm/usd-price.js.map +0 -1
  642. package/dist/esm/user.js.map +0 -1
  643. package/dist/esm/util.js +0 -63
  644. package/dist/esm/util.js.map +0 -1
  645. package/dist/esm/vault.js.map +0 -1
  646. package/dist/types/airdrop.d.ts.map +0 -1
  647. package/dist/types/balance.d.ts.map +0 -1
  648. package/dist/types/build-calldatas-v4.d.ts.map +0 -1
  649. package/dist/types/build-clanker-v4.d.ts.map +0 -1
  650. package/dist/types/client/hook/index.d.ts.map +0 -1
  651. package/dist/types/client/hook/use-airdrop.d.ts.map +0 -1
  652. package/dist/types/client/hook/use-clanker.d.ts.map +0 -1
  653. package/dist/types/client/hook/use-configure-splits.d.ts.map +0 -1
  654. package/dist/types/client/hook/use-deploy.d.ts.map +0 -1
  655. package/dist/types/client/hook/use-factory.d.ts.map +0 -1
  656. package/dist/types/client/hook/use-fee-receivers.d.ts.map +0 -1
  657. package/dist/types/client/hook/use-governance.d.ts.map +0 -1
  658. package/dist/types/client/hook/use-pool.d.ts +0 -12
  659. package/dist/types/client/hook/use-pool.d.ts.map +0 -1
  660. package/dist/types/client/hook/use-prepare.d.ts.map +0 -1
  661. package/dist/types/client/hook/use-project.d.ts.map +0 -1
  662. package/dist/types/client/hook/use-proposal.d.ts.map +0 -1
  663. package/dist/types/client/hook/use-register.d.ts.map +0 -1
  664. package/dist/types/client/hook/use-stake.d.ts.map +0 -1
  665. package/dist/types/client/hook/use-swap.d.ts.map +0 -1
  666. package/dist/types/client/hook/use-user.d.ts.map +0 -1
  667. package/dist/types/client/hook/use-vault.d.ts.map +0 -1
  668. package/dist/types/client/index.d.ts.map +0 -1
  669. package/dist/types/client/levr-provider.d.ts.map +0 -1
  670. package/dist/types/client/query-keys.d.ts.map +0 -1
  671. package/dist/types/constants.d.ts +0 -177
  672. package/dist/types/constants.d.ts.map +0 -1
  673. package/dist/types/deploy-v4.d.ts.map +0 -1
  674. package/dist/types/factory.d.ts +0 -21
  675. package/dist/types/factory.d.ts.map +0 -1
  676. package/dist/types/fee-receivers.d.ts.map +0 -1
  677. package/dist/types/fee-splitter.d.ts.map +0 -1
  678. package/dist/types/governance.d.ts.map +0 -1
  679. package/dist/types/index.d.ts.map +0 -1
  680. package/dist/types/ipfs-merkle-tree.d.ts.map +0 -1
  681. package/dist/types/pool-key.d.ts.map +0 -1
  682. package/dist/types/pool.d.ts +0 -590
  683. package/dist/types/pool.d.ts.map +0 -1
  684. package/dist/types/project.d.ts.map +0 -1
  685. package/dist/types/proposal.d.ts.map +0 -1
  686. package/dist/types/quote/index.d.ts.map +0 -1
  687. package/dist/types/quote/v3.d.ts.map +0 -1
  688. package/dist/types/quote/v4.d.ts.map +0 -1
  689. package/dist/types/schema/base.schema.d.ts.map +0 -1
  690. package/dist/types/schema/clanker.schema.d.ts.map +0 -1
  691. package/dist/types/schema/index.d.ts.map +0 -1
  692. package/dist/types/schema/levr.schema.d.ts.map +0 -1
  693. package/dist/types/stake.d.ts.map +0 -1
  694. package/dist/types/swap-v4.d.ts.map +0 -1
  695. package/dist/types/types.d.ts.map +0 -1
  696. package/dist/types/usd-price.d.ts +0 -146
  697. package/dist/types/usd-price.d.ts.map +0 -1
  698. package/dist/types/user.d.ts +0 -188
  699. package/dist/types/user.d.ts.map +0 -1
  700. package/dist/types/util.d.ts.map +0 -1
  701. package/dist/types/vault.d.ts.map +0 -1
  702. /package/dist/esm/{client → src/client}/hook/use-airdrop.js +0 -0
  703. /package/dist/esm/{client → src/client}/hook/use-configure-splits.js +0 -0
  704. /package/dist/esm/{client → src/client}/hook/use-deploy.js +0 -0
  705. /package/dist/esm/{client → src/client}/hook/use-fee-receivers.js +0 -0
  706. /package/dist/esm/{client → src/client}/hook/use-governance.js +0 -0
  707. /package/dist/esm/{client → src/client}/hook/use-prepare.js +0 -0
  708. /package/dist/esm/{client → src/client}/hook/use-user.js +0 -0
  709. /package/dist/esm/{client → src/client}/hook/use-vault.js +0 -0
  710. /package/dist/esm/{client → src/client}/index.js +0 -0
  711. /package/dist/esm/{ipfs-merkle-tree.js → src/ipfs-merkle-tree.js} +0 -0
  712. /package/dist/esm/{quote → src/quote}/index.js +0 -0
  713. /package/dist/esm/{quote → src/quote}/v3.js +0 -0
  714. /package/dist/esm/{schema → src/schema}/base.schema.js +0 -0
  715. /package/dist/esm/{schema → src/schema}/index.js +0 -0
  716. /package/dist/esm/{types.js → src/types.js} +0 -0
  717. /package/dist/types/{balance.d.ts → src/balance.d.ts} +0 -0
  718. /package/dist/types/{client → src/client}/hook/use-airdrop.d.ts +0 -0
  719. /package/dist/types/{client → src/client}/hook/use-clanker.d.ts +0 -0
  720. /package/dist/types/{client → src/client}/hook/use-configure-splits.d.ts +0 -0
  721. /package/dist/types/{client → src/client}/hook/use-fee-receivers.d.ts +0 -0
  722. /package/dist/types/{client → src/client}/hook/use-governance.d.ts +0 -0
  723. /package/dist/types/{client → src/client}/hook/use-prepare.d.ts +0 -0
  724. /package/dist/types/{client → src/client}/hook/use-register.d.ts +0 -0
  725. /package/dist/types/{client → src/client}/hook/use-stake.d.ts +0 -0
  726. /package/dist/types/{client → src/client}/hook/use-swap.d.ts +0 -0
  727. /package/dist/types/{client → src/client}/hook/use-user.d.ts +0 -0
  728. /package/dist/types/{client → src/client}/hook/use-vault.d.ts +0 -0
  729. /package/dist/types/{client → src/client}/index.d.ts +0 -0
  730. /package/dist/types/{deploy-v4.d.ts → src/deploy-v4.d.ts} +0 -0
  731. /package/dist/types/{fee-splitter.d.ts → src/fee-splitter.d.ts} +0 -0
  732. /package/dist/types/{ipfs-merkle-tree.d.ts → src/ipfs-merkle-tree.d.ts} +0 -0
  733. /package/dist/types/{pool-key.d.ts → src/pool-key.d.ts} +0 -0
  734. /package/dist/types/{quote → src/quote}/index.d.ts +0 -0
  735. /package/dist/types/{quote → src/quote}/v3.d.ts +0 -0
  736. /package/dist/types/{quote → src/quote}/v4.d.ts +0 -0
  737. /package/dist/types/{schema → src/schema}/base.schema.d.ts +0 -0
  738. /package/dist/types/{schema → src/schema}/index.d.ts +0 -0
  739. /package/dist/types/{swap-v4.d.ts → src/swap-v4.d.ts} +0 -0
  740. /package/dist/types/{vault.d.ts → src/vault.d.ts} +0 -0
@@ -0,0 +1,680 @@
1
+ import { erc20Abi, zeroAddress } from "viem";
2
+ import { IClankerFeeLocker, IClankerLpLockerFeeConversion, LevrFactory_v1, LevrStaking_v1, } from "./abis/index.js";
3
+ import { formatBalanceWithUsd } from "./balance.js";
4
+ import { GET_FACTORY_ADDRESS, GET_FEE_LOCKER_ADDRESS, GET_LP_LOCKER_ADDRESS, WETH, } from "./constants/index.js";
5
+ import { getFeeReceiverContracts, getFeeSplitterDynamicContracts, getFeeSplitterStaticContracts, parseFeeReceivers, parseFeeSplitterDynamic, parseFeeSplitterStatic, } from "./fee-receivers.js";
6
+ import { getFeeSplitter } from "./fee-splitter.js";
7
+ import { query } from "./graphql/index.js";
8
+ import { getLevrProjectByIdFields } from "./graphql/fields/project.js";
9
+ import { getPairedTokenUsdPrice, getUsdPrice } from "./usd-price.js";
10
+ import { isWETH } from "./util.js";
11
+ async function fetchFeePreferences({ publicClient, chainId, clankerToken, slotCount, }) {
12
+ if (!slotCount)
13
+ return undefined;
14
+ const lpLockerAddress = GET_LP_LOCKER_ADDRESS(chainId);
15
+ if (!lpLockerAddress)
16
+ return undefined;
17
+ try {
18
+ const contracts = Array.from({ length: slotCount }, (_, index) => ({
19
+ address: lpLockerAddress,
20
+ abi: IClankerLpLockerFeeConversion,
21
+ functionName: "feePreferences",
22
+ args: [clankerToken, BigInt(index)],
23
+ }));
24
+ const results = await publicClient.multicall({
25
+ allowFailure: true,
26
+ contracts,
27
+ });
28
+ const preferences = new Array(slotCount).fill(undefined);
29
+ results.forEach((result, index) => {
30
+ if (result.status === "success") {
31
+ preferences[index] = Number(result.result);
32
+ }
33
+ });
34
+ return preferences.some((value) => value !== undefined) ? preferences : undefined;
35
+ }
36
+ catch (error) {
37
+ return undefined;
38
+ }
39
+ }
40
+ // ---
41
+ // Paired Token Resolution
42
+ /**
43
+ * Resolves paired token info from pool key and indexed data.
44
+ * Handles WETH/WBNB detection and fallback symbol resolution.
45
+ */
46
+ function resolvePairedToken(poolKey, clankerToken, clankerSymbol, v4Pool, chainId) {
47
+ // Get paired token address from pool key (case-insensitive)
48
+ const isCurrency0Clanker = poolKey.currency0.toLowerCase() === clankerToken.toLowerCase();
49
+ const pairedTokenAddress = isCurrency0Clanker ? poolKey.currency1 : poolKey.currency0;
50
+ // Check if paired token is native (WETH/WBNB)
51
+ const wethInfo = WETH(chainId);
52
+ const isNativeByAddress = isWETH(pairedTokenAddress, chainId);
53
+ // Find paired token from indexed v4Pool data
54
+ const indexedPairedToken = findIndexedPairedToken(v4Pool, pairedTokenAddress);
55
+ // Also check if native by symbol (fallback when address doesn't match)
56
+ const isNativeBySymbol = wethInfo && indexedPairedToken?.symbol === wethInfo.symbol;
57
+ // Return native token info if WETH/WBNB
58
+ if ((isNativeByAddress || isNativeBySymbol) && wethInfo) {
59
+ return {
60
+ address: wethInfo.address,
61
+ symbol: wethInfo.symbol,
62
+ decimals: wethInfo.decimals,
63
+ isNative: true,
64
+ };
65
+ }
66
+ // Return non-native paired token info
67
+ const symbol = resolveSymbol(indexedPairedToken?.symbol);
68
+ return {
69
+ address: pairedTokenAddress,
70
+ symbol,
71
+ decimals: indexedPairedToken?.decimals ?? 18,
72
+ isNative: false,
73
+ };
74
+ }
75
+ /**
76
+ * Finds the paired token from indexed v4Pool data by address matching.
77
+ */
78
+ function findIndexedPairedToken(v4Pool, pairedTokenAddress) {
79
+ if (!v4Pool)
80
+ return null;
81
+ const { token0, token1 } = v4Pool;
82
+ const targetAddress = pairedTokenAddress.toLowerCase();
83
+ // Match by address
84
+ if (token0?.address?.toLowerCase() === targetAddress)
85
+ return token0;
86
+ if (token1?.address?.toLowerCase() === targetAddress)
87
+ return token1;
88
+ return null;
89
+ }
90
+ /**
91
+ * Resolves symbol for paired token.
92
+ * Returns the symbol if available, otherwise falls back to 'PAIRED'.
93
+ *
94
+ * Note: We no longer check against clankerSymbol because tokens can legitimately
95
+ * have the same symbol (e.g., a clanker named "U" paired with U stablecoin).
96
+ * Address matching in findIndexedPairedToken ensures we get the correct token.
97
+ */
98
+ function resolveSymbol(symbol) {
99
+ if (symbol)
100
+ return symbol;
101
+ return "PAIRED";
102
+ }
103
+ // ---
104
+ // Contract Getters
105
+ function getTreasuryContracts(clankerToken, treasury, staking, pairedTokenAddress) {
106
+ const contracts = [
107
+ {
108
+ address: clankerToken,
109
+ abi: erc20Abi,
110
+ functionName: "balanceOf",
111
+ args: [treasury],
112
+ },
113
+ {
114
+ address: clankerToken,
115
+ abi: erc20Abi,
116
+ functionName: "balanceOf",
117
+ args: [staking],
118
+ },
119
+ {
120
+ address: staking,
121
+ abi: LevrStaking_v1,
122
+ functionName: "escrowBalance",
123
+ args: [clankerToken],
124
+ },
125
+ ];
126
+ if (pairedTokenAddress) {
127
+ contracts.push({
128
+ address: pairedTokenAddress,
129
+ abi: erc20Abi,
130
+ functionName: "balanceOf",
131
+ args: [staking],
132
+ });
133
+ }
134
+ return contracts;
135
+ }
136
+ function getStakingContracts(staking, clankerToken, pairedTokenAddress) {
137
+ const baseContracts = [
138
+ {
139
+ address: staking,
140
+ abi: LevrStaking_v1,
141
+ functionName: "totalStaked",
142
+ },
143
+ {
144
+ address: staking,
145
+ abi: LevrStaking_v1,
146
+ functionName: "aprBps",
147
+ },
148
+ {
149
+ address: staking,
150
+ abi: LevrStaking_v1,
151
+ functionName: "outstandingRewards",
152
+ args: [clankerToken],
153
+ },
154
+ {
155
+ address: staking,
156
+ abi: LevrStaking_v1,
157
+ functionName: "rewardRatePerSecond",
158
+ args: [clankerToken],
159
+ },
160
+ {
161
+ address: staking,
162
+ abi: LevrStaking_v1,
163
+ functionName: "getTokenStreamInfo",
164
+ args: [clankerToken],
165
+ },
166
+ ];
167
+ const pairedContracts = pairedTokenAddress
168
+ ? [
169
+ {
170
+ address: staking,
171
+ abi: LevrStaking_v1,
172
+ functionName: "outstandingRewards",
173
+ args: [pairedTokenAddress],
174
+ },
175
+ {
176
+ address: staking,
177
+ abi: LevrStaking_v1,
178
+ functionName: "rewardRatePerSecond",
179
+ args: [pairedTokenAddress],
180
+ },
181
+ {
182
+ address: staking,
183
+ abi: LevrStaking_v1,
184
+ functionName: "getTokenStreamInfo",
185
+ args: [pairedTokenAddress],
186
+ },
187
+ ]
188
+ : [];
189
+ return [...baseContracts, ...pairedContracts];
190
+ }
191
+ function getPendingFeesContracts(feeLockerAddress, feeRecipient, clankerToken, pairedTokenAddress) {
192
+ const baseContracts = [
193
+ {
194
+ address: feeLockerAddress,
195
+ abi: IClankerFeeLocker,
196
+ functionName: "availableFees",
197
+ args: [feeRecipient, clankerToken],
198
+ },
199
+ ];
200
+ const pairedContracts = pairedTokenAddress
201
+ ? [
202
+ {
203
+ address: feeLockerAddress,
204
+ abi: IClankerFeeLocker,
205
+ functionName: "availableFees",
206
+ args: [feeRecipient, pairedTokenAddress],
207
+ },
208
+ ]
209
+ : [];
210
+ return [...baseContracts, ...pairedContracts];
211
+ }
212
+ // ---
213
+ // Parsers
214
+ function parseTreasuryStats(results, tokenDecimals, totalSupply, tokenUsdPrice, pairedTokenUsdPrice, pairedTokenDecimals = 18) {
215
+ const [treasuryBalance, stakingBalance, escrowBalance, stakingPairedBalance] = results;
216
+ const treasuryBalanceRaw = treasuryBalance.result;
217
+ const stakingBalanceRaw = stakingBalance.result;
218
+ const escrowBalanceRaw = escrowBalance.result;
219
+ const stakingPairedBalanceRaw = stakingPairedBalance ? stakingPairedBalance.result : null;
220
+ // Total allocated = treasury + staking balances (protocol-controlled tokens)
221
+ const totalAllocatedRaw = treasuryBalanceRaw + stakingBalanceRaw;
222
+ // Utilization = (total allocated / total supply) * 100
223
+ const utilizationBps = totalSupply > 0n ? (totalAllocatedRaw * 10000n) / totalSupply : 0n;
224
+ const utilization = Number(utilizationBps) / 100;
225
+ return {
226
+ balance: formatBalanceWithUsd(treasuryBalanceRaw, tokenDecimals, tokenUsdPrice),
227
+ totalAllocated: formatBalanceWithUsd(totalAllocatedRaw, tokenDecimals, tokenUsdPrice),
228
+ utilization,
229
+ stakingContractBalance: formatBalanceWithUsd(stakingBalanceRaw, tokenDecimals, tokenUsdPrice),
230
+ escrowBalance: formatBalanceWithUsd(escrowBalanceRaw, tokenDecimals, tokenUsdPrice),
231
+ stakingContractPairedBalance: stakingPairedBalanceRaw
232
+ ? formatBalanceWithUsd(stakingPairedBalanceRaw, pairedTokenDecimals, pairedTokenUsdPrice ?? null)
233
+ : undefined,
234
+ };
235
+ }
236
+ function parseStakingStats(results, pendingFeesResults, tokenDecimals, tokenUsdPrice, pairedTokenUsdPrice, pairedTokenDecimals = 18, blockTimestamp, pricing, feeSplitterPending) {
237
+ const totalStakedRaw = results[0].result;
238
+ const aprBpsRaw = results[1].result;
239
+ const outstandingRewardsTokenAvailable = results[2].result; // Now returns only available
240
+ const tokenRewardRateRaw = results[3].result;
241
+ // Extract stream info from getTokenStreamInfo tuple (streamStart, streamEnd, streamTotal)
242
+ const streamInfoRaw = results[4].result;
243
+ const tokenStreamStartRaw = streamInfoRaw[0];
244
+ const tokenStreamEndRaw = streamInfoRaw[1];
245
+ // Check if pairedToken data is present
246
+ const hasPairedTokenData = results.length > 5;
247
+ const outstandingRewardsPairedAvailable = hasPairedTokenData && results[5] ? results[5].result : null;
248
+ const pairedTokenRewardRateRaw = hasPairedTokenData && results[6] ? results[6].result : null;
249
+ // Check if token stream is currently active
250
+ const isTokenStreamActive = tokenStreamStartRaw <= blockTimestamp && blockTimestamp <= tokenStreamEndRaw;
251
+ // Check if pairedToken stream is active (if available) and get longest active stream window
252
+ let isPairedTokenStreamActive = false;
253
+ let pairedTokenStreamStartRaw = 0n;
254
+ let pairedTokenStreamEndRaw = 0n;
255
+ if (hasPairedTokenData && results[7]) {
256
+ const pairedTokenStreamInfoRaw = results[7].result;
257
+ pairedTokenStreamStartRaw = pairedTokenStreamInfoRaw[0];
258
+ pairedTokenStreamEndRaw = pairedTokenStreamInfoRaw[1];
259
+ isPairedTokenStreamActive =
260
+ pairedTokenStreamStartRaw <= blockTimestamp && blockTimestamp <= pairedTokenStreamEndRaw;
261
+ }
262
+ // Stream is active if either token or pairedToken reward stream is active
263
+ const isStreamActive = isTokenStreamActive || isPairedTokenStreamActive;
264
+ // Determine which stream window to display
265
+ let displayStreamStartRaw = tokenStreamStartRaw;
266
+ let displayStreamEndRaw = tokenStreamEndRaw;
267
+ const tokenStreamDuration = tokenStreamEndRaw > tokenStreamStartRaw ? tokenStreamEndRaw - tokenStreamStartRaw : 0n;
268
+ const pairedTokenStreamDuration = pairedTokenStreamStartRaw > 0n && pairedTokenStreamEndRaw > pairedTokenStreamStartRaw
269
+ ? pairedTokenStreamEndRaw - pairedTokenStreamStartRaw
270
+ : 0n;
271
+ if (isTokenStreamActive && isPairedTokenStreamActive) {
272
+ // When both streams are active, display the one that ends last
273
+ displayStreamStartRaw =
274
+ pairedTokenStreamEndRaw > tokenStreamEndRaw ? pairedTokenStreamStartRaw : tokenStreamStartRaw;
275
+ displayStreamEndRaw =
276
+ pairedTokenStreamEndRaw > tokenStreamEndRaw ? pairedTokenStreamEndRaw : tokenStreamEndRaw;
277
+ }
278
+ else if (isTokenStreamActive) {
279
+ displayStreamStartRaw = tokenStreamStartRaw;
280
+ displayStreamEndRaw = tokenStreamEndRaw;
281
+ }
282
+ else if (isPairedTokenStreamActive) {
283
+ displayStreamStartRaw = pairedTokenStreamStartRaw;
284
+ displayStreamEndRaw = pairedTokenStreamEndRaw;
285
+ }
286
+ else if (pairedTokenStreamDuration > tokenStreamDuration) {
287
+ // No active streams: keep prior behaviour of showing the longer window
288
+ displayStreamStartRaw = pairedTokenStreamStartRaw;
289
+ displayStreamEndRaw = pairedTokenStreamEndRaw;
290
+ }
291
+ // Get pending fees from ClankerFeeLocker (staking recipient)
292
+ const stakingPendingToken = pendingFeesResults?.[0]?.result ?? 0n;
293
+ const stakingPendingPaired = pendingFeesResults?.[1]?.result ?? 0n;
294
+ // Calculate pairedToken APR if available
295
+ let pairedTokenApr = null;
296
+ if (pairedTokenRewardRateRaw !== null &&
297
+ pairedTokenRewardRateRaw !== undefined &&
298
+ pricing &&
299
+ totalStakedRaw > 0n) {
300
+ const pairedTokenUsd = parseFloat(pricing.pairedTokenUsd);
301
+ const tokenUsd = parseFloat(pricing.tokenUsd);
302
+ if (tokenUsd > 0) {
303
+ const pairedTokenPriceInTokens = pairedTokenUsd / tokenUsd;
304
+ const secondsPerYear = BigInt(365 * 24 * 60 * 60);
305
+ const annualPairedRewards = pairedTokenRewardRateRaw * secondsPerYear;
306
+ const priceScaleFactor = BigInt(1000000000000000000);
307
+ const pairedTokenPriceScaled = BigInt(Math.floor(pairedTokenPriceInTokens * Number(priceScaleFactor)));
308
+ const annualRewardsInUnderlying = (annualPairedRewards * pairedTokenPriceScaled) / priceScaleFactor;
309
+ const aprBpsPairedToken = totalStakedRaw > 0n ? (annualRewardsInUnderlying * 10000n) / totalStakedRaw : 0n;
310
+ pairedTokenApr = {
311
+ raw: aprBpsPairedToken,
312
+ percentage: Number(aprBpsPairedToken) / 100,
313
+ };
314
+ }
315
+ }
316
+ // Calculate stream window from the stream time range
317
+ const streamWindowSecondsRaw = displayStreamEndRaw > displayStreamStartRaw
318
+ ? Number(displayStreamEndRaw - displayStreamStartRaw)
319
+ : 0;
320
+ // SECURITY FIX: Pending fees now queried for correct recipient
321
+ // When fee splitter is active: stakingPendingToken = fee splitter's pending from ClankerFeeLocker
322
+ // When fee splitter is NOT active: stakingPendingToken = staking's pending from ClankerFeeLocker
323
+ // Note: feeSplitterPending is now local balance only (not from ClankerFeeLocker), so we don't add it
324
+ const tokenPendingTotal = stakingPendingToken; // Already queried for correct recipient
325
+ const pairedTokenPendingTotal = stakingPendingPaired; // Already queried for correct recipient
326
+ return {
327
+ totalStaked: formatBalanceWithUsd(totalStakedRaw, tokenDecimals, tokenUsdPrice),
328
+ apr: {
329
+ token: {
330
+ raw: aprBpsRaw,
331
+ percentage: Number(aprBpsRaw) / 100,
332
+ },
333
+ pairedToken: pairedTokenApr,
334
+ },
335
+ outstandingRewards: {
336
+ staking: {
337
+ available: formatBalanceWithUsd(outstandingRewardsTokenAvailable, tokenDecimals, tokenUsdPrice),
338
+ pending: formatBalanceWithUsd(tokenPendingTotal, tokenDecimals, tokenUsdPrice),
339
+ },
340
+ pairedToken: outstandingRewardsPairedAvailable !== null
341
+ ? {
342
+ available: formatBalanceWithUsd(outstandingRewardsPairedAvailable, pairedTokenDecimals, pairedTokenUsdPrice),
343
+ pending: formatBalanceWithUsd(pairedTokenPendingTotal, pairedTokenDecimals, pairedTokenUsdPrice),
344
+ }
345
+ : null,
346
+ },
347
+ rewardRates: {
348
+ token: formatBalanceWithUsd(tokenRewardRateRaw, tokenDecimals, tokenUsdPrice),
349
+ pairedToken: pairedTokenRewardRateRaw !== null && pairedTokenRewardRateRaw !== undefined
350
+ ? formatBalanceWithUsd(pairedTokenRewardRateRaw, pairedTokenDecimals, pairedTokenUsdPrice)
351
+ : null,
352
+ },
353
+ streamParams: {
354
+ windowSeconds: streamWindowSecondsRaw,
355
+ streamStart: displayStreamStartRaw,
356
+ streamEnd: displayStreamEndRaw,
357
+ isActive: isStreamActive,
358
+ },
359
+ };
360
+ }
361
+ // ============================================================================
362
+ // Indexed Project Data
363
+ // ============================================================================
364
+ /**
365
+ * Fetch project data from the indexer
366
+ * Returns null if the project is not found in the indexer
367
+ */
368
+ export async function getIndexedProject(chainId, clankerToken) {
369
+ try {
370
+ const fields = getLevrProjectByIdFields(chainId, clankerToken);
371
+ const result = await query(fields);
372
+ // Cast to our explicit type since the generated types can be complex
373
+ return result.LevrProject_by_pk ?? null;
374
+ }
375
+ catch {
376
+ return null;
377
+ }
378
+ }
379
+ // ============================================================================
380
+ // Static Project Functions
381
+ // ============================================================================
382
+ /**
383
+ * Get static project data that doesn't change frequently
384
+ * This includes contract addresses, token metadata, pool info, and fee receivers
385
+ *
386
+ * Uses indexed data for token and project data, only fetches via RPC what's not indexed
387
+ */
388
+ export async function getStaticProject({ publicClient, clankerToken, userAddress, }) {
389
+ if (Object.values({ publicClient, clankerToken }).some((value) => !value)) {
390
+ throw new Error("Invalid project params");
391
+ }
392
+ const chainId = publicClient.chain?.id;
393
+ if (!chainId)
394
+ throw new Error("Chain ID not found on public client");
395
+ const factoryAddress = GET_FACTORY_ADDRESS(chainId);
396
+ if (!factoryAddress)
397
+ throw new Error("Factory address not found");
398
+ // Fetch indexed data and fee splitter in parallel
399
+ const [indexedProject, feeSplitterAddress] = await Promise.all([
400
+ getIndexedProject(chainId, clankerToken),
401
+ getFeeSplitter({ publicClient, clankerToken, chainId }),
402
+ ]);
403
+ if (!indexedProject)
404
+ return null;
405
+ // Parse token data from indexed project
406
+ const indexedToken = indexedProject.clankerToken;
407
+ if (!indexedToken)
408
+ return null;
409
+ let parsedMetadata = null;
410
+ if (indexedToken.metadata && typeof indexedToken.metadata === "string") {
411
+ try {
412
+ parsedMetadata = JSON.parse(indexedToken.metadata);
413
+ }
414
+ catch {
415
+ // If parsing fails, leave as null
416
+ }
417
+ }
418
+ const tokenData = {
419
+ address: clankerToken,
420
+ decimals: indexedToken.decimals ?? 18,
421
+ name: indexedToken.name ?? "",
422
+ symbol: indexedToken.symbol ?? "",
423
+ totalSupply: indexedToken.totalSupply ? BigInt(indexedToken.totalSupply) : 0n,
424
+ metadata: parsedMetadata,
425
+ imageUrl: indexedToken.imageUrl ?? undefined,
426
+ originalAdmin: (indexedToken.originalAdmin ?? zeroAddress),
427
+ admin: (indexedToken.admin ?? zeroAddress),
428
+ context: indexedToken.context ?? "",
429
+ };
430
+ // Parse factory data from indexed project
431
+ const { treasury_id, governor_id, staking_id, stakedToken_id } = indexedProject;
432
+ const indexedFactory = treasury_id && governor_id && staking_id && stakedToken_id
433
+ ? {
434
+ treasury: treasury_id,
435
+ governor: governor_id,
436
+ staking: staking_id,
437
+ stakedToken: stakedToken_id,
438
+ forwarder: zeroAddress,
439
+ }
440
+ : null;
441
+ // Only fetch what's not in the indexer: forwarder, fee receivers, fee splitter
442
+ const contracts = [
443
+ // Forwarder is not indexed
444
+ {
445
+ address: factoryAddress,
446
+ abi: LevrFactory_v1,
447
+ functionName: "trustedForwarder",
448
+ },
449
+ // Fee receivers from LP locker (not indexed)
450
+ ...getFeeReceiverContracts(clankerToken, chainId),
451
+ // Fee splitter static data if available
452
+ ...(feeSplitterAddress ? getFeeSplitterStaticContracts(clankerToken, feeSplitterAddress) : []),
453
+ ];
454
+ const multicallResults = await publicClient.multicall({ contracts });
455
+ // Parse results
456
+ let idx = 0;
457
+ // Forwarder
458
+ const forwarderResult = multicallResults[idx];
459
+ idx += 1;
460
+ const factoryData = indexedFactory
461
+ ? { ...indexedFactory, forwarder: forwarderResult.result ?? zeroAddress }
462
+ : {
463
+ treasury: zeroAddress,
464
+ governor: zeroAddress,
465
+ staking: zeroAddress,
466
+ stakedToken: zeroAddress,
467
+ forwarder: forwarderResult.result ?? zeroAddress,
468
+ };
469
+ // Fee receivers (tokenRewards)
470
+ const tokenRewardsResult = multicallResults[idx];
471
+ idx += 1;
472
+ // Fee splitter static
473
+ const feeSplitterStaticCount = feeSplitterAddress ? 3 : 0;
474
+ const feeSplitterStaticResults = feeSplitterAddress
475
+ ? multicallResults.slice(idx, idx + feeSplitterStaticCount)
476
+ : null;
477
+ idx += feeSplitterStaticCount;
478
+ // Check if project exists
479
+ const { treasury, governor, staking, stakedToken } = factoryData;
480
+ const isRegistered = [treasury, governor, staking, stakedToken].every((a) => a !== zeroAddress);
481
+ // Extract pool information and fee receivers from LP locker
482
+ let poolInfo;
483
+ let feeReceivers;
484
+ if (tokenRewardsResult.status === "success") {
485
+ const tokenRewards = tokenRewardsResult.result;
486
+ const poolKey = tokenRewards.poolKey;
487
+ // Resolve paired token info from pool key and indexed data
488
+ const pairedToken = resolvePairedToken(poolKey, clankerToken, indexedToken.symbol, indexedToken.v4Pool, chainId);
489
+ poolInfo = {
490
+ poolKey,
491
+ feeDisplay: poolKey.fee === 8388608 ? "Dynamic" : `${(poolKey.fee / 10000).toFixed(2)}%`,
492
+ numPositions: tokenRewards.numPositions,
493
+ pairedToken,
494
+ };
495
+ const rewardSlotCount = tokenRewards.rewardRecipients?.length ??
496
+ tokenRewards.rewardAdmins?.length ??
497
+ tokenRewards.rewardBps?.length ??
498
+ 0;
499
+ const feePreferences = rewardSlotCount > 0
500
+ ? await fetchFeePreferences({
501
+ publicClient,
502
+ chainId,
503
+ clankerToken,
504
+ slotCount: rewardSlotCount,
505
+ })
506
+ : undefined;
507
+ // Parse fee receivers using shared utility (no logic duplication)
508
+ // Pass userAddress so areYouAnAdmin works out of the box
509
+ feeReceivers = parseFeeReceivers({
510
+ rewardAdmins: tokenRewards.rewardAdmins,
511
+ rewardRecipients: tokenRewards.rewardRecipients,
512
+ rewardBps: tokenRewards.rewardBps,
513
+ ...(feePreferences ? { feePreferences } : {}),
514
+ }, userAddress);
515
+ }
516
+ // If tokenRewards fails (e.g., token not deployed through Clanker), poolInfo remains undefined
517
+ // Parse fee splitter static data
518
+ let feeSplitter;
519
+ if (feeSplitterStaticResults) {
520
+ // Get current fee recipient from fee receivers (if user is admin)
521
+ const currentFeeRecipient = feeReceivers?.find((fr) => fr.areYouAnAdmin)?.recipient;
522
+ const parsed = parseFeeSplitterStatic(feeSplitterStaticResults, currentFeeRecipient, feeSplitterAddress);
523
+ feeSplitter = parsed ?? undefined;
524
+ }
525
+ const baseProject = {
526
+ forwarder: factoryData.forwarder,
527
+ factory: factoryAddress,
528
+ token: tokenData,
529
+ feeReceivers,
530
+ feeSplitter,
531
+ };
532
+ if (!isRegistered) {
533
+ return {
534
+ ...baseProject,
535
+ isRegistered: false,
536
+ };
537
+ }
538
+ return {
539
+ ...baseProject,
540
+ isRegistered: true,
541
+ treasury: factoryData.treasury,
542
+ governor: factoryData.governor,
543
+ staking: factoryData.staking,
544
+ stakedToken: factoryData.stakedToken,
545
+ pool: poolInfo,
546
+ };
547
+ }
548
+ /**
549
+ * Get project data for a clanker token
550
+ * Requires staticProject data to avoid refetching static information
551
+ * Fetches dynamic data including treasury, staking stats, and pricing
552
+ *
553
+ * Governance stats are fetched from the indexer (no RPC calls needed)
554
+ */
555
+ export async function getProject({ publicClient, staticProject, }) {
556
+ if (Object.values({ publicClient, staticProject }).some((value) => !value)) {
557
+ throw new Error("Invalid project params");
558
+ }
559
+ const chainId = publicClient.chain?.id;
560
+ if (!chainId)
561
+ throw new Error("Chain ID not found on public client");
562
+ // Get paired token info from static project if available
563
+ const pairedTokenInfo = staticProject.pool?.pairedToken;
564
+ const pairedTokenAddress = pairedTokenInfo?.address;
565
+ const clankerToken = staticProject.token.address;
566
+ const feeSplitterAddress = staticProject.feeSplitter?.address;
567
+ const rewardTokens = pairedTokenAddress ? [clankerToken, pairedTokenAddress] : [clankerToken];
568
+ // Determine fee recipient for pending fees query
569
+ const feeLockerAddress = GET_FEE_LOCKER_ADDRESS(chainId);
570
+ const stakingFeeRecipient = feeSplitterAddress && staticProject.feeSplitter?.isActive
571
+ ? feeSplitterAddress
572
+ : staticProject.staking;
573
+ // Build contract calls (governance is fetched from indexer, not RPC)
574
+ const contracts = [
575
+ ...getTreasuryContracts(clankerToken, staticProject.treasury, staticProject.staking, pairedTokenAddress),
576
+ ...getStakingContracts(staticProject.staking, clankerToken, pairedTokenAddress),
577
+ ...(feeLockerAddress
578
+ ? getPendingFeesContracts(feeLockerAddress, stakingFeeRecipient, clankerToken, pairedTokenAddress)
579
+ : []),
580
+ ...(feeSplitterAddress && staticProject.feeSplitter?.isActive
581
+ ? getFeeSplitterDynamicContracts(clankerToken, feeSplitterAddress, rewardTokens)
582
+ : []),
583
+ ];
584
+ // Fetch all data in parallel: indexed governance, pricing, block, and RPC multicall
585
+ const [indexedProject, pricing, block, results] = await Promise.all([
586
+ getIndexedProject(chainId, clankerToken),
587
+ fetchPricing(publicClient, staticProject),
588
+ publicClient.getBlock(),
589
+ publicClient.multicall({ contracts }),
590
+ ]);
591
+ const blockTimestamp = block.timestamp;
592
+ // Calculate slice indices for multicall results
593
+ const treasuryCount = pairedTokenAddress ? 4 : 3;
594
+ const stakingCount = pairedTokenAddress ? 8 : 5;
595
+ const pendingFeesCount = feeLockerAddress ? (pairedTokenAddress ? 2 : 1) : 0;
596
+ const feeSplitterDynamicCount = feeSplitterAddress && staticProject.feeSplitter?.isActive ? rewardTokens.length : 0;
597
+ let idx = 0;
598
+ const treasuryResults = results.slice(idx, idx + treasuryCount);
599
+ idx += treasuryCount;
600
+ const stakingResults = results.slice(idx, idx + stakingCount);
601
+ idx += stakingCount;
602
+ const pendingFeesResults = pendingFeesCount > 0
603
+ ? results.slice(idx, idx + pendingFeesCount)
604
+ : null;
605
+ idx += pendingFeesCount;
606
+ const feeSplitterDynamicResults = feeSplitterDynamicCount > 0 ? results.slice(idx, idx + feeSplitterDynamicCount) : null;
607
+ // Calculate USD values for stats
608
+ const tokenUsdPrice = pricing ? parseFloat(pricing.tokenUsd) : null;
609
+ const pairedTokenUsdPrice = pricing ? parseFloat(pricing.pairedTokenUsd) : null;
610
+ // Parse fee splitter dynamic data
611
+ let feeSplitter = staticProject.feeSplitter;
612
+ let feeSplitterPendingFees;
613
+ if (feeSplitterDynamicResults && staticProject.feeSplitter) {
614
+ const feeSplitterDynamic = parseFeeSplitterDynamic(feeSplitterDynamicResults, pairedTokenAddress);
615
+ feeSplitter = { ...staticProject.feeSplitter, ...feeSplitterDynamic };
616
+ if (staticProject.feeSplitter.isActive && feeSplitterDynamic.pendingFees) {
617
+ feeSplitterPendingFees = {
618
+ token: feeSplitterDynamic.pendingFees.token,
619
+ pairedToken: feeSplitterDynamic.pendingFees.pairedToken ?? null,
620
+ };
621
+ }
622
+ }
623
+ // Parse stats
624
+ const treasuryStats = parseTreasuryStats(treasuryResults, staticProject.token.decimals, staticProject.token.totalSupply, tokenUsdPrice, pairedTokenUsdPrice, pairedTokenInfo?.decimals ?? 18);
625
+ const stakingStats = parseStakingStats(stakingResults, pendingFeesResults, staticProject.token.decimals, tokenUsdPrice, pairedTokenUsdPrice, pairedTokenInfo?.decimals ?? 18, blockTimestamp, pricing, feeSplitterPendingFees);
626
+ // Use indexed governance data (no RPC calls needed)
627
+ const governanceStats = indexedProject
628
+ ? {
629
+ currentCycleId: BigInt(indexedProject.currentCycleId ?? "1"),
630
+ activeProposalCount: {
631
+ boost: BigInt(indexedProject.activeBoostProposals ?? "0"),
632
+ transfer: BigInt(indexedProject.activeTransferProposals ?? "0"),
633
+ },
634
+ }
635
+ : { currentCycleId: 1n, activeProposalCount: { boost: 0n, transfer: 0n } };
636
+ return {
637
+ chainId,
638
+ ...staticProject,
639
+ treasuryStats,
640
+ stakingStats,
641
+ governanceStats,
642
+ pricing,
643
+ feeSplitter,
644
+ blockTimestamp,
645
+ };
646
+ }
647
+ // ============================================================================
648
+ // Internal Helpers
649
+ // ============================================================================
650
+ async function fetchPricing(publicClient, staticProject) {
651
+ if (!staticProject.pool)
652
+ return undefined;
653
+ try {
654
+ const pairedToken = staticProject.pool.pairedToken;
655
+ const tokenUsdData = await getUsdPrice({
656
+ publicClient,
657
+ tokenAddress: staticProject.token.address,
658
+ tokenDecimals: staticProject.token.decimals,
659
+ pairedTokenAddress: pairedToken.address,
660
+ pairedTokenDecimals: pairedToken.decimals,
661
+ quoteFee: staticProject.pool.poolKey.fee,
662
+ quoteTickSpacing: staticProject.pool.poolKey.tickSpacing,
663
+ quoteHooks: staticProject.pool.poolKey.hooks,
664
+ });
665
+ // Get paired token USD price (WETH/WBNB = oracle, stablecoins = $1.00)
666
+ const pairedTokenUsdPrice = await getPairedTokenUsdPrice({
667
+ publicClient,
668
+ pairedTokenAddress: pairedToken.address,
669
+ });
670
+ return {
671
+ tokenUsd: tokenUsdData.priceUsd,
672
+ pairedTokenUsd: pairedTokenUsdPrice,
673
+ };
674
+ }
675
+ catch (error) {
676
+ console.warn("Failed to fetch USD pricing:", error);
677
+ return undefined;
678
+ }
679
+ }
680
+ //# sourceMappingURL=project.js.map