levr-sdk 0.4.0 → 0.5.0-alpha.10

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 (752) 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/{abis → src/abis}/IClankerFeeLocker.js +1 -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/{abis → src/abis}/IClankerLpLockerFeeConversion.js +1 -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/{abis → src/abis}/LevrDeployer_v1.js +1 -0
  130. package/dist/esm/src/abis/LevrDeployer_v1.js.map +1 -0
  131. package/dist/esm/{abis → src/abis}/LevrFactory_v1.js +1 -0
  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 +1 -0
  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 +1 -0
  140. package/dist/esm/src/abis/LevrGovernor_v1.js.map +1 -0
  141. package/dist/esm/{abis → src/abis}/LevrStakedToken_v1.js +1 -0
  142. package/dist/esm/src/abis/LevrStakedToken_v1.js.map +1 -0
  143. package/dist/esm/{abis → src/abis}/LevrStaking_v1.js +1 -0
  144. package/dist/esm/src/abis/LevrStaking_v1.js.map +1 -0
  145. package/dist/esm/{abis → src/abis}/LevrTreasury_v1.js +1 -0
  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 +3 -1
  160. package/dist/esm/src/abis/index.js.map +1 -0
  161. package/dist/esm/src/airdrop.js.map +1 -0
  162. package/dist/esm/{balance.js → src/balance.js} +3 -3
  163. package/dist/esm/src/balance.js.map +1 -0
  164. package/dist/esm/{build-calldatas-v4.js → src/build-calldatas-v4.js} +2 -9
  165. package/dist/esm/src/build-calldatas-v4.js.map +1 -0
  166. package/dist/esm/{build-clanker-v4.js → src/build-clanker-v4.js} +115 -12
  167. package/dist/esm/src/build-clanker-v4.js.map +1 -0
  168. package/dist/esm/{client → src/client}/hook/index.js +7 -5
  169. package/dist/esm/src/client/hook/index.js.map +1 -0
  170. package/dist/esm/src/client/hook/use-airdrop.js.map +1 -0
  171. package/dist/esm/{client → src/client}/hook/use-clanker.js +1 -1
  172. package/dist/esm/src/client/hook/use-clanker.js.map +1 -0
  173. package/dist/esm/src/client/hook/use-configure-splits.js.map +1 -0
  174. package/dist/esm/src/client/hook/use-deploy.js.map +1 -0
  175. package/dist/esm/{client → src/client}/hook/use-factory.js +5 -11
  176. package/dist/esm/src/client/hook/use-factory.js.map +1 -0
  177. package/dist/esm/src/client/hook/use-fee-receivers.js.map +1 -0
  178. package/dist/esm/src/client/hook/use-governance.js.map +1 -0
  179. package/dist/esm/src/client/hook/use-metrics.js +63 -0
  180. package/dist/esm/src/client/hook/use-metrics.js.map +1 -0
  181. package/dist/esm/src/client/hook/use-prepare.js.map +1 -0
  182. package/dist/esm/src/client/hook/use-project.js +133 -0
  183. package/dist/esm/src/client/hook/use-project.js.map +1 -0
  184. package/dist/esm/{client → src/client}/hook/use-proposal.js +6 -5
  185. package/dist/esm/src/client/hook/use-proposal.js.map +1 -0
  186. package/dist/esm/src/client/hook/use-register.js.map +1 -0
  187. package/dist/esm/{client → src/client}/hook/use-stake.js +4 -10
  188. package/dist/esm/src/client/hook/use-stake.js.map +1 -0
  189. package/dist/esm/src/client/hook/use-subscription.js +98 -0
  190. package/dist/esm/src/client/hook/use-subscription.js.map +1 -0
  191. package/dist/esm/{client → src/client}/hook/use-swap.js +5 -4
  192. package/dist/esm/src/client/hook/use-swap.js.map +1 -0
  193. package/dist/esm/src/client/hook/use-token-admin.js +91 -0
  194. package/dist/esm/src/client/hook/use-token-admin.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/{client → src/client}/levr-provider.js +4 -24
  199. package/dist/esm/src/client/levr-provider.js.map +1 -0
  200. package/dist/esm/{client → src/client}/query-keys.js +15 -5
  201. package/dist/esm/src/client/query-keys.js.map +1 -0
  202. package/dist/esm/src/constants/chain.js +260 -0
  203. package/dist/esm/src/constants/chain.js.map +1 -0
  204. package/dist/esm/{constants → src/constants}/clanker.js +15 -10
  205. package/dist/esm/src/constants/clanker.js.map +1 -0
  206. package/dist/esm/src/constants/config.js.map +1 -0
  207. package/dist/esm/src/constants/index.js +24 -0
  208. package/dist/esm/src/constants/index.js.map +1 -0
  209. package/dist/esm/{constants → src/constants}/levr.js +8 -1
  210. package/dist/esm/src/constants/levr.js.map +1 -0
  211. package/dist/esm/{constants → src/constants}/uniswap.js +38 -1
  212. package/dist/esm/src/constants/uniswap.js.map +1 -0
  213. package/dist/esm/{deploy-v4.js → src/deploy-v4.js} +22 -1
  214. package/dist/esm/src/deploy-v4.js.map +1 -0
  215. package/dist/esm/src/factory.js +40 -0
  216. package/dist/esm/src/factory.js.map +1 -0
  217. package/dist/esm/{fee-receivers.js → src/fee-receivers.js} +5 -5
  218. package/dist/esm/src/fee-receivers.js.map +1 -0
  219. package/dist/esm/src/fee-splitter.js.map +1 -0
  220. package/dist/esm/src/governance.js.map +1 -0
  221. package/dist/esm/src/graphql/client.js +62 -0
  222. package/dist/esm/src/graphql/client.js.map +1 -0
  223. package/dist/esm/src/graphql/constants.js +3 -0
  224. package/dist/esm/src/graphql/constants.js.map +1 -0
  225. package/dist/esm/src/graphql/fields/factory.js +24 -0
  226. package/dist/esm/src/graphql/fields/factory.js.map +1 -0
  227. package/dist/esm/src/graphql/fields/index.js +5 -0
  228. package/dist/esm/src/graphql/fields/index.js.map +1 -0
  229. package/dist/esm/src/graphql/fields/metrics.js +28 -0
  230. package/dist/esm/src/graphql/fields/metrics.js.map +1 -0
  231. package/dist/esm/src/graphql/fields/project.js +117 -0
  232. package/dist/esm/src/graphql/fields/project.js.map +1 -0
  233. package/dist/esm/src/graphql/fields/proposal.js +97 -0
  234. package/dist/esm/src/graphql/fields/proposal.js.map +1 -0
  235. package/dist/esm/src/graphql/gen/index.js +25 -0
  236. package/dist/esm/src/graphql/gen/index.js.map +1 -0
  237. package/dist/esm/src/graphql/gen/runtime/batcher.js +207 -0
  238. package/dist/esm/src/graphql/gen/runtime/batcher.js.map +1 -0
  239. package/dist/esm/src/graphql/gen/runtime/createClient.js +25 -0
  240. package/dist/esm/src/graphql/gen/runtime/createClient.js.map +1 -0
  241. package/dist/esm/src/graphql/gen/runtime/error.js +18 -0
  242. package/dist/esm/src/graphql/gen/runtime/error.js.map +1 -0
  243. package/dist/esm/src/graphql/gen/runtime/fetcher.js +68 -0
  244. package/dist/esm/src/graphql/gen/runtime/fetcher.js.map +1 -0
  245. package/dist/esm/src/graphql/gen/runtime/generateGraphqlOperation.js +126 -0
  246. package/dist/esm/src/graphql/gen/runtime/generateGraphqlOperation.js.map +1 -0
  247. package/dist/esm/src/graphql/gen/runtime/index.js +10 -0
  248. package/dist/esm/src/graphql/gen/runtime/index.js.map +1 -0
  249. package/dist/esm/src/graphql/gen/runtime/linkTypeMap.js +92 -0
  250. package/dist/esm/src/graphql/gen/runtime/linkTypeMap.js.map +1 -0
  251. package/dist/esm/src/graphql/gen/runtime/typeSelection.js +4 -0
  252. package/dist/esm/src/graphql/gen/runtime/typeSelection.js.map +1 -0
  253. package/dist/esm/src/graphql/gen/runtime/types.js +3 -0
  254. package/dist/esm/src/graphql/gen/runtime/types.js.map +1 -0
  255. package/dist/esm/src/graphql/gen/schema.js +527 -0
  256. package/dist/esm/src/graphql/gen/schema.js.map +1 -0
  257. package/dist/esm/src/graphql/gen/types.js +4298 -0
  258. package/dist/esm/src/graphql/gen/types.js.map +1 -0
  259. package/dist/esm/src/graphql/index.js +18 -0
  260. package/dist/esm/src/graphql/index.js.map +1 -0
  261. package/dist/esm/src/graphql/subscription-manager.js +101 -0
  262. package/dist/esm/src/graphql/subscription-manager.js.map +1 -0
  263. package/dist/esm/{index.js → src/index.js} +3 -1
  264. package/dist/esm/src/index.js.map +1 -0
  265. package/dist/esm/src/ipfs-merkle-tree.js.map +1 -0
  266. package/dist/esm/src/pool-key.js.map +1 -0
  267. package/dist/esm/{project.js → src/project.js} +303 -336
  268. package/dist/esm/src/project.js.map +1 -0
  269. package/dist/esm/src/proposal.js +181 -0
  270. package/dist/esm/src/proposal.js.map +1 -0
  271. package/dist/esm/src/quote/index.js.map +1 -0
  272. package/dist/esm/src/quote/v3.js.map +1 -0
  273. package/dist/esm/src/quote/v4.js.map +1 -0
  274. package/dist/esm/src/schema/base.schema.js.map +1 -0
  275. package/dist/esm/{schema → src/schema}/clanker.schema.js +26 -2
  276. package/dist/esm/src/schema/clanker.schema.js.map +1 -0
  277. package/dist/esm/src/schema/index.js.map +1 -0
  278. package/dist/esm/{schema → src/schema}/levr.schema.js +19 -2
  279. package/dist/esm/src/schema/levr.schema.js.map +1 -0
  280. package/dist/esm/{stake.js → src/stake.js} +19 -21
  281. package/dist/esm/src/stake.js.map +1 -0
  282. package/dist/esm/{swap-v4.js → src/swap-v4.js} +2 -13
  283. package/dist/esm/src/swap-v4.js.map +1 -0
  284. package/dist/esm/src/token-admin.js +87 -0
  285. package/dist/esm/src/token-admin.js.map +1 -0
  286. package/dist/esm/{types.js.map → src/types.js.map} +1 -1
  287. package/dist/esm/src/usd-price.js +274 -0
  288. package/dist/esm/src/usd-price.js.map +1 -0
  289. package/dist/esm/{user.js → src/user.js} +26 -21
  290. package/dist/esm/src/user.js.map +1 -0
  291. package/dist/esm/{util.js → src/util.js} +43 -25
  292. package/dist/esm/src/util.js.map +1 -0
  293. package/dist/esm/src/vault.js.map +1 -0
  294. package/dist/types/packages/clanker-sdk/src/abi/uniswap/UniswapV3Factory.d.ts +185 -0
  295. package/dist/types/packages/clanker-sdk/src/abi/uniswap/UniswapV3Factory.d.ts.map +1 -0
  296. package/dist/types/packages/clanker-sdk/src/abi/uniswap/UniswapV3NonfungiblePositionManager.d.ts +949 -0
  297. package/dist/types/packages/clanker-sdk/src/abi/uniswap/UniswapV3NonfungiblePositionManager.d.ts.map +1 -0
  298. package/dist/types/packages/clanker-sdk/src/abi/v0/Clanker.d.ts +402 -0
  299. package/dist/types/packages/clanker-sdk/src/abi/v0/Clanker.d.ts.map +1 -0
  300. package/dist/types/packages/clanker-sdk/src/abi/v1/Clanker.d.ts +491 -0
  301. package/dist/types/packages/clanker-sdk/src/abi/v1/Clanker.d.ts.map +1 -0
  302. package/dist/types/packages/clanker-sdk/src/abi/v2/Clanker.d.ts +463 -0
  303. package/dist/types/packages/clanker-sdk/src/abi/v2/Clanker.d.ts.map +1 -0
  304. package/dist/types/packages/clanker-sdk/src/abi/v2/LpLockerv2.d.ts +428 -0
  305. package/dist/types/packages/clanker-sdk/src/abi/v2/LpLockerv2.d.ts.map +1 -0
  306. package/dist/types/packages/clanker-sdk/src/abi/v3/Clanker.d.ts +499 -0
  307. package/dist/types/packages/clanker-sdk/src/abi/v3/Clanker.d.ts.map +1 -0
  308. package/dist/types/packages/clanker-sdk/src/abi/v3/ClankerToken.d.ts +846 -0
  309. package/dist/types/packages/clanker-sdk/src/abi/v3/ClankerToken.d.ts.map +1 -0
  310. package/dist/types/packages/clanker-sdk/src/abi/v3.1/Clanker.d.ts +846 -0
  311. package/dist/types/packages/clanker-sdk/src/abi/v3.1/Clanker.d.ts.map +1 -0
  312. package/dist/types/packages/clanker-sdk/src/abi/v3.1/ClankerToken.d.ts +2654 -0
  313. package/dist/types/packages/clanker-sdk/src/abi/v3.1/ClankerToken.d.ts.map +1 -0
  314. package/dist/types/packages/clanker-sdk/src/abi/v3.1/ClankerVault.d.ts +289 -0
  315. package/dist/types/packages/clanker-sdk/src/abi/v3.1/ClankerVault.d.ts.map +1 -0
  316. package/dist/types/packages/clanker-sdk/src/abi/v3.1/LpLockerv2.d.ts +670 -0
  317. package/dist/types/packages/clanker-sdk/src/abi/v3.1/LpLockerv2.d.ts.map +1 -0
  318. package/dist/types/packages/clanker-sdk/src/abi/v4/Clanker.d.ts +819 -0
  319. package/dist/types/packages/clanker-sdk/src/abi/v4/Clanker.d.ts.map +1 -0
  320. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerAirdrop.d.ts +413 -0
  321. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerAirdrop.d.ts.map +1 -0
  322. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerAirdropV2.d.ts +573 -0
  323. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerAirdropV2.d.ts.map +1 -0
  324. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerFeeLocker.d.ts +290 -0
  325. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerFeeLocker.d.ts.map +1 -0
  326. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHook.d.ts +1143 -0
  327. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHook.d.ts.map +1 -0
  328. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHookDynamicFee.d.ts +1430 -0
  329. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHookDynamicFee.d.ts.map +1 -0
  330. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHookStaticFee.d.ts +1219 -0
  331. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerHookStaticFee.d.ts.map +1 -0
  332. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerLocker.d.ts +845 -0
  333. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerLocker.d.ts.map +1 -0
  334. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerMevBlockDelay.d.ts +151 -0
  335. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerMevBlockDelay.d.ts.map +1 -0
  336. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerSniperAuction.d.ts +572 -0
  337. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerSniperAuction.d.ts.map +1 -0
  338. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerSniperUtil.d.ts +167 -0
  339. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerSniperUtil.d.ts.map +1 -0
  340. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerToken.d.ts +981 -0
  341. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerToken.d.ts.map +1 -0
  342. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerUniV4EthDevBuy.d.ts +325 -0
  343. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerUniV4EthDevBuy.d.ts.map +1 -0
  344. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerUniv3EthDevBuy.d.ts +326 -0
  345. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerUniv3EthDevBuy.d.ts.map +1 -0
  346. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerVault.d.ts +414 -0
  347. package/dist/types/packages/clanker-sdk/src/abi/v4/ClankerVault.d.ts.map +1 -0
  348. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerHookDynamicFee.d.ts +92 -0
  349. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerHookDynamicFee.d.ts.map +1 -0
  350. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerHookStaticFee.d.ts +88 -0
  351. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerHookStaticFee.d.ts.map +1 -0
  352. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerMevSniperAuction.d.ts +69 -0
  353. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerMevSniperAuction.d.ts.map +1 -0
  354. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerPool.d.ts +9 -0
  355. package/dist/types/packages/clanker-sdk/src/abi/v4.1/ClankerPool.d.ts.map +1 -0
  356. package/dist/types/packages/clanker-sdk/src/config/clankerTokenV3.d.ts +64 -0
  357. package/dist/types/packages/clanker-sdk/src/config/clankerTokenV3.d.ts.map +1 -0
  358. package/dist/types/packages/clanker-sdk/src/config/clankerTokenV4.d.ts +136 -0
  359. package/dist/types/packages/clanker-sdk/src/config/clankerTokenV4.d.ts.map +1 -0
  360. package/dist/types/packages/clanker-sdk/src/config/clankerTokens.d.ts +12 -0
  361. package/dist/types/packages/clanker-sdk/src/config/clankerTokens.d.ts.map +1 -0
  362. package/dist/types/packages/clanker-sdk/src/constants.d.ts +29 -0
  363. package/dist/types/packages/clanker-sdk/src/constants.d.ts.map +1 -0
  364. package/dist/types/packages/clanker-sdk/src/deployment/deploy.d.ts +21 -0
  365. package/dist/types/packages/clanker-sdk/src/deployment/deploy.d.ts.map +1 -0
  366. package/dist/types/packages/clanker-sdk/src/extensions/DevBuyExtension.d.ts +52 -0
  367. package/dist/types/packages/clanker-sdk/src/extensions/DevBuyExtension.d.ts.map +1 -0
  368. package/dist/types/packages/clanker-sdk/src/extensions/IClankerExtension.d.ts +36 -0
  369. package/dist/types/packages/clanker-sdk/src/extensions/IClankerExtension.d.ts.map +1 -0
  370. package/dist/types/packages/clanker-sdk/src/extensions/VaultExtension.d.ts +17 -0
  371. package/dist/types/packages/clanker-sdk/src/extensions/VaultExtension.d.ts.map +1 -0
  372. package/dist/types/packages/clanker-sdk/src/extensions/index.d.ts +4 -0
  373. package/dist/types/packages/clanker-sdk/src/extensions/index.d.ts.map +1 -0
  374. package/dist/types/packages/clanker-sdk/src/index.d.ts +8 -0
  375. package/dist/types/packages/clanker-sdk/src/index.d.ts.map +1 -0
  376. package/dist/types/packages/clanker-sdk/src/services/vanityAddress.d.ts +15 -0
  377. package/dist/types/packages/clanker-sdk/src/services/vanityAddress.d.ts.map +1 -0
  378. package/dist/types/packages/clanker-sdk/src/utils/clanker-contracts.d.ts +16 -0
  379. package/dist/types/packages/clanker-sdk/src/utils/clanker-contracts.d.ts.map +1 -0
  380. package/dist/types/packages/clanker-sdk/src/utils/clankers.d.ts +9506 -0
  381. package/dist/types/packages/clanker-sdk/src/utils/clankers.d.ts.map +1 -0
  382. package/dist/types/packages/clanker-sdk/src/utils/errors.d.ts +16 -0
  383. package/dist/types/packages/clanker-sdk/src/utils/errors.d.ts.map +1 -0
  384. package/dist/types/packages/clanker-sdk/src/utils/market-cap.d.ts +12 -0
  385. package/dist/types/packages/clanker-sdk/src/utils/market-cap.d.ts.map +1 -0
  386. package/dist/types/packages/clanker-sdk/src/utils/merkleTree.d.ts +19 -0
  387. package/dist/types/packages/clanker-sdk/src/utils/merkleTree.d.ts.map +1 -0
  388. package/dist/types/packages/clanker-sdk/src/utils/meta.d.ts +7 -0
  389. package/dist/types/packages/clanker-sdk/src/utils/meta.d.ts.map +1 -0
  390. package/dist/types/packages/clanker-sdk/src/utils/write-clanker-contracts.d.ts +57 -0
  391. package/dist/types/packages/clanker-sdk/src/utils/write-clanker-contracts.d.ts.map +1 -0
  392. package/dist/types/packages/clanker-sdk/src/utils/zod-onchain.d.ts +29 -0
  393. package/dist/types/packages/clanker-sdk/src/utils/zod-onchain.d.ts.map +1 -0
  394. package/dist/types/packages/clanker-sdk/src/v3/index.d.ts +3167 -0
  395. package/dist/types/packages/clanker-sdk/src/v3/index.d.ts.map +1 -0
  396. package/dist/types/packages/clanker-sdk/src/v4/extensions/airdrop.d.ts +108 -0
  397. package/dist/types/packages/clanker-sdk/src/v4/extensions/airdrop.d.ts.map +1 -0
  398. package/dist/types/packages/clanker-sdk/src/v4/extensions/index.d.ts +2 -0
  399. package/dist/types/packages/clanker-sdk/src/v4/extensions/index.d.ts.map +1 -0
  400. package/dist/types/packages/clanker-sdk/src/v4/index.d.ts +3781 -0
  401. package/dist/types/packages/clanker-sdk/src/v4/index.d.ts.map +1 -0
  402. package/dist/types/{abis → src/abis}/ClankerAirdropV2.d.ts +1 -0
  403. package/dist/types/src/abis/ClankerAirdropV2.d.ts.map +1 -0
  404. package/dist/types/{abis → src/abis}/ClankerVault.d.ts +1 -0
  405. package/dist/types/src/abis/ClankerVault.d.ts.map +1 -0
  406. package/dist/types/{abis → src/abis}/IClankerAirdrop.d.ts +1 -0
  407. package/dist/types/src/abis/IClankerAirdrop.d.ts.map +1 -0
  408. package/dist/types/{abis → src/abis}/IClankerFeeLocker.d.ts +1 -0
  409. package/dist/types/src/abis/IClankerFeeLocker.d.ts.map +1 -0
  410. package/dist/types/{abis → src/abis}/IClankerHookDynamicFee.d.ts +1 -0
  411. package/dist/types/src/abis/IClankerHookDynamicFee.d.ts.map +1 -0
  412. package/dist/types/{abis → src/abis}/IClankerHookStaticFee.d.ts +1 -0
  413. package/dist/types/src/abis/IClankerHookStaticFee.d.ts.map +1 -0
  414. package/dist/types/{abis → src/abis}/IClankerLPLocker.d.ts +1 -0
  415. package/dist/types/src/abis/IClankerLPLocker.d.ts.map +1 -0
  416. package/dist/types/{abis → src/abis}/IClankerLpLockerFeeConversion.d.ts +1 -0
  417. package/dist/types/src/abis/IClankerLpLockerFeeConversion.d.ts.map +1 -0
  418. package/dist/types/{abis → src/abis}/IClankerLpLockerMultiple.d.ts +1 -0
  419. package/dist/types/src/abis/IClankerLpLockerMultiple.d.ts.map +1 -0
  420. package/dist/types/{abis → src/abis}/IClankerToken.d.ts +1 -0
  421. package/dist/types/src/abis/IClankerToken.d.ts.map +1 -0
  422. package/dist/types/{abis → src/abis}/LevrDeployer_v1.d.ts +1 -0
  423. package/dist/types/src/abis/LevrDeployer_v1.d.ts.map +1 -0
  424. package/dist/types/{abis → src/abis}/LevrFactory_v1.d.ts +1 -0
  425. package/dist/types/src/abis/LevrFactory_v1.d.ts.map +1 -0
  426. package/dist/types/{abis → src/abis}/LevrFeeSplitterFactory_v1.d.ts +1 -0
  427. package/dist/types/src/abis/LevrFeeSplitterFactory_v1.d.ts.map +1 -0
  428. package/dist/types/{abis → src/abis}/LevrFeeSplitter_v1.d.ts +1 -0
  429. package/dist/types/src/abis/LevrFeeSplitter_v1.d.ts.map +1 -0
  430. package/dist/types/{abis → src/abis}/LevrForwarder_v1.d.ts +1 -0
  431. package/dist/types/src/abis/LevrForwarder_v1.d.ts.map +1 -0
  432. package/dist/types/{abis → src/abis}/LevrGovernor_v1.d.ts +1 -0
  433. package/dist/types/src/abis/LevrGovernor_v1.d.ts.map +1 -0
  434. package/dist/types/{abis → src/abis}/LevrStakedToken_v1.d.ts +1 -0
  435. package/dist/types/src/abis/LevrStakedToken_v1.d.ts.map +1 -0
  436. package/dist/types/{abis → src/abis}/LevrStaking_v1.d.ts +1 -0
  437. package/dist/types/src/abis/LevrStaking_v1.d.ts.map +1 -0
  438. package/dist/types/{abis → src/abis}/LevrTreasury_v1.d.ts +1 -0
  439. package/dist/types/src/abis/LevrTreasury_v1.d.ts.map +1 -0
  440. package/dist/types/{abis → src/abis}/Permit2.d.ts +1 -0
  441. package/dist/types/src/abis/Permit2.d.ts.map +1 -0
  442. package/dist/types/{abis → src/abis}/StateView.d.ts +1 -0
  443. package/dist/types/src/abis/StateView.d.ts.map +1 -0
  444. package/dist/types/src/abis/V3Pool.d.ts +50 -0
  445. package/dist/types/src/abis/V3Pool.d.ts.map +1 -0
  446. package/dist/types/{abis → src/abis}/V3QuoterV2.d.ts +1 -0
  447. package/dist/types/src/abis/V3QuoterV2.d.ts.map +1 -0
  448. package/dist/types/{abis → src/abis}/V4Quoter.d.ts +1 -0
  449. package/dist/types/src/abis/V4Quoter.d.ts.map +1 -0
  450. package/dist/types/{abis → src/abis}/WETH9.d.ts +1 -0
  451. package/dist/types/src/abis/WETH9.d.ts.map +1 -0
  452. package/dist/types/{abis → src/abis}/index.d.ts +3 -1
  453. package/dist/types/src/abis/index.d.ts.map +1 -0
  454. package/dist/types/src/airdrop.d.ts.map +1 -0
  455. package/dist/types/src/balance.d.ts.map +1 -0
  456. package/dist/types/{build-calldatas-v4.d.ts → src/build-calldatas-v4.d.ts} +0 -1
  457. package/dist/types/src/build-calldatas-v4.d.ts.map +1 -0
  458. package/dist/types/src/build-clanker-v4.d.ts.map +1 -0
  459. package/dist/types/{client → src/client}/hook/index.d.ts +7 -5
  460. package/dist/types/src/client/hook/index.d.ts.map +1 -0
  461. package/dist/types/src/client/hook/use-airdrop.d.ts.map +1 -0
  462. package/dist/types/src/client/hook/use-clanker.d.ts.map +1 -0
  463. package/dist/types/src/client/hook/use-configure-splits.d.ts.map +1 -0
  464. package/dist/types/{client → src/client}/hook/use-deploy.d.ts +3 -1
  465. package/dist/types/src/client/hook/use-deploy.d.ts.map +1 -0
  466. package/dist/types/{client → src/client}/hook/use-factory.d.ts +2 -2
  467. package/dist/types/src/client/hook/use-factory.d.ts.map +1 -0
  468. package/dist/types/src/client/hook/use-fee-receivers.d.ts.map +1 -0
  469. package/dist/types/src/client/hook/use-governance.d.ts.map +1 -0
  470. package/dist/types/src/client/hook/use-metrics.d.ts +16 -0
  471. package/dist/types/src/client/hook/use-metrics.d.ts.map +1 -0
  472. package/dist/types/src/client/hook/use-prepare.d.ts.map +1 -0
  473. package/dist/types/{client → src/client}/hook/use-project.d.ts +22 -6
  474. package/dist/types/src/client/hook/use-project.d.ts.map +1 -0
  475. package/dist/types/{client → src/client}/hook/use-proposal.d.ts +2 -2
  476. package/dist/types/src/client/hook/use-proposal.d.ts.map +1 -0
  477. package/dist/types/src/client/hook/use-register.d.ts.map +1 -0
  478. package/dist/types/src/client/hook/use-stake.d.ts.map +1 -0
  479. package/dist/types/src/client/hook/use-subscription.d.ts +33 -0
  480. package/dist/types/src/client/hook/use-subscription.d.ts.map +1 -0
  481. package/dist/types/src/client/hook/use-swap.d.ts.map +1 -0
  482. package/dist/types/src/client/hook/use-token-admin.d.ts +27 -0
  483. package/dist/types/src/client/hook/use-token-admin.d.ts.map +1 -0
  484. package/dist/types/src/client/hook/use-user.d.ts.map +1 -0
  485. package/dist/types/src/client/hook/use-vault.d.ts.map +1 -0
  486. package/dist/types/src/client/index.d.ts.map +1 -0
  487. package/dist/types/{client → src/client}/levr-provider.d.ts +1 -15
  488. package/dist/types/src/client/levr-provider.d.ts.map +1 -0
  489. package/dist/types/{client → src/client}/query-keys.d.ts +8 -5
  490. package/dist/types/src/client/query-keys.d.ts.map +1 -0
  491. package/dist/types/src/constants/chain.d.ts +121 -0
  492. package/dist/types/src/constants/chain.d.ts.map +1 -0
  493. package/dist/types/{constants → src/constants}/clanker.d.ts +1 -1
  494. package/dist/types/src/constants/clanker.d.ts.map +1 -0
  495. package/dist/types/src/constants/config.d.ts.map +1 -0
  496. package/dist/types/{constants → src/constants}/index.d.ts +1 -17
  497. package/dist/types/src/constants/index.d.ts.map +1 -0
  498. package/dist/types/{constants → src/constants}/levr.d.ts +5 -0
  499. package/dist/types/src/constants/levr.d.ts.map +1 -0
  500. package/dist/types/{constants → src/constants}/uniswap.d.ts +13 -0
  501. package/dist/types/src/constants/uniswap.d.ts.map +1 -0
  502. package/dist/types/src/deploy-v4.d.ts.map +1 -0
  503. package/dist/types/src/factory.d.ts +21 -0
  504. package/dist/types/src/factory.d.ts.map +1 -0
  505. package/dist/types/{fee-receivers.d.ts → src/fee-receivers.d.ts} +3 -3
  506. package/dist/types/src/fee-receivers.d.ts.map +1 -0
  507. package/dist/types/src/fee-splitter.d.ts.map +1 -0
  508. package/dist/types/src/governance.d.ts.map +1 -0
  509. package/dist/types/src/graphql/client.d.ts +12 -0
  510. package/dist/types/src/graphql/client.d.ts.map +1 -0
  511. package/dist/types/src/graphql/constants.d.ts +2 -0
  512. package/dist/types/src/graphql/constants.d.ts.map +1 -0
  513. package/dist/types/src/graphql/fields/factory.d.ts +22 -0
  514. package/dist/types/src/graphql/fields/factory.d.ts.map +1 -0
  515. package/dist/types/src/graphql/fields/index.d.ts +5 -0
  516. package/dist/types/src/graphql/fields/index.d.ts.map +1 -0
  517. package/dist/types/src/graphql/fields/metrics.d.ts +36 -0
  518. package/dist/types/src/graphql/fields/metrics.d.ts.map +1 -0
  519. package/dist/types/src/graphql/fields/project.d.ts +249 -0
  520. package/dist/types/src/graphql/fields/project.d.ts.map +1 -0
  521. package/dist/types/src/graphql/fields/proposal.d.ts +195 -0
  522. package/dist/types/src/graphql/fields/proposal.d.ts.map +1 -0
  523. package/dist/types/src/graphql/gen/index.d.ts +23 -0
  524. package/dist/types/src/graphql/gen/index.d.ts.map +1 -0
  525. package/dist/types/src/graphql/gen/runtime/batcher.d.ts +106 -0
  526. package/dist/types/src/graphql/gen/runtime/batcher.d.ts.map +1 -0
  527. package/dist/types/src/graphql/gen/runtime/createClient.d.ts +18 -0
  528. package/dist/types/src/graphql/gen/runtime/createClient.d.ts.map +1 -0
  529. package/dist/types/src/graphql/gen/runtime/error.d.ts +19 -0
  530. package/dist/types/src/graphql/gen/runtime/error.d.ts.map +1 -0
  531. package/dist/types/src/graphql/gen/runtime/fetcher.d.ts +11 -0
  532. package/dist/types/src/graphql/gen/runtime/fetcher.d.ts.map +1 -0
  533. package/dist/types/src/graphql/gen/runtime/generateGraphqlOperation.d.ts +31 -0
  534. package/dist/types/src/graphql/gen/runtime/generateGraphqlOperation.d.ts.map +1 -0
  535. package/dist/types/src/graphql/gen/runtime/index.d.ts +12 -0
  536. package/dist/types/src/graphql/gen/runtime/index.d.ts.map +1 -0
  537. package/dist/types/src/graphql/gen/runtime/linkTypeMap.d.ts +10 -0
  538. package/dist/types/src/graphql/gen/runtime/linkTypeMap.d.ts.map +1 -0
  539. package/dist/types/src/graphql/gen/runtime/typeSelection.d.ts +29 -0
  540. package/dist/types/src/graphql/gen/runtime/typeSelection.d.ts.map +1 -0
  541. package/dist/types/src/graphql/gen/runtime/types.d.ts +53 -0
  542. package/dist/types/src/graphql/gen/runtime/types.d.ts.map +1 -0
  543. package/dist/types/src/graphql/gen/schema.d.ts +6056 -0
  544. package/dist/types/src/graphql/gen/schema.d.ts.map +1 -0
  545. package/dist/types/src/graphql/gen/types.d.ts +3867 -0
  546. package/dist/types/src/graphql/gen/types.d.ts.map +1 -0
  547. package/dist/types/src/graphql/index.d.ts +19 -0
  548. package/dist/types/src/graphql/index.d.ts.map +1 -0
  549. package/dist/types/src/graphql/subscription-manager.d.ts +64 -0
  550. package/dist/types/src/graphql/subscription-manager.d.ts.map +1 -0
  551. package/dist/types/{index.d.ts → src/index.d.ts} +3 -1
  552. package/dist/types/src/index.d.ts.map +1 -0
  553. package/dist/types/src/ipfs-merkle-tree.d.ts.map +1 -0
  554. package/dist/types/src/pool-key.d.ts.map +1 -0
  555. package/dist/types/{project.d.ts → src/project.d.ts} +26 -18
  556. package/dist/types/src/project.d.ts.map +1 -0
  557. package/dist/types/src/proposal.d.ts +34 -0
  558. package/dist/types/src/proposal.d.ts.map +1 -0
  559. package/dist/types/src/quote/index.d.ts.map +1 -0
  560. package/dist/types/src/quote/v3.d.ts.map +1 -0
  561. package/dist/types/src/quote/v4.d.ts.map +1 -0
  562. package/dist/types/src/schema/base.schema.d.ts.map +1 -0
  563. package/dist/types/{schema → src/schema}/clanker.schema.d.ts +16 -4
  564. package/dist/types/src/schema/clanker.schema.d.ts.map +1 -0
  565. package/dist/types/src/schema/index.d.ts.map +1 -0
  566. package/dist/types/{schema → src/schema}/levr.schema.d.ts +3 -1
  567. package/dist/types/src/schema/levr.schema.d.ts.map +1 -0
  568. package/dist/types/{stake.d.ts → src/stake.d.ts} +8 -1
  569. package/dist/types/src/stake.d.ts.map +1 -0
  570. package/dist/types/src/swap-v4.d.ts.map +1 -0
  571. package/dist/types/src/token-admin.d.ts +40 -0
  572. package/dist/types/src/token-admin.d.ts.map +1 -0
  573. package/dist/types/{types.d.ts → src/types.d.ts} +1 -1
  574. package/dist/types/src/types.d.ts.map +1 -0
  575. package/dist/types/src/usd-price.d.ts +189 -0
  576. package/dist/types/src/usd-price.d.ts.map +1 -0
  577. package/dist/types/{user.d.ts → src/user.d.ts} +5 -5
  578. package/dist/types/src/user.d.ts.map +1 -0
  579. package/dist/types/{util.d.ts → src/util.d.ts} +7 -0
  580. package/dist/types/src/util.d.ts.map +1 -0
  581. package/dist/types/src/vault.d.ts.map +1 -0
  582. package/package.json +20 -8
  583. package/dist/esm/airdrop.js.map +0 -1
  584. package/dist/esm/balance.js.map +0 -1
  585. package/dist/esm/build-calldatas-v4.js.map +0 -1
  586. package/dist/esm/build-clanker-v4.js.map +0 -1
  587. package/dist/esm/client/hook/index.js.map +0 -1
  588. package/dist/esm/client/hook/use-airdrop.js.map +0 -1
  589. package/dist/esm/client/hook/use-clanker.js.map +0 -1
  590. package/dist/esm/client/hook/use-configure-splits.js.map +0 -1
  591. package/dist/esm/client/hook/use-deploy.js.map +0 -1
  592. package/dist/esm/client/hook/use-factory.js.map +0 -1
  593. package/dist/esm/client/hook/use-fee-receivers.js.map +0 -1
  594. package/dist/esm/client/hook/use-governance.js.map +0 -1
  595. package/dist/esm/client/hook/use-pool.js +0 -26
  596. package/dist/esm/client/hook/use-pool.js.map +0 -1
  597. package/dist/esm/client/hook/use-prepare.js.map +0 -1
  598. package/dist/esm/client/hook/use-project.js +0 -72
  599. package/dist/esm/client/hook/use-project.js.map +0 -1
  600. package/dist/esm/client/hook/use-proposal.js.map +0 -1
  601. package/dist/esm/client/hook/use-register.js.map +0 -1
  602. package/dist/esm/client/hook/use-stake.js.map +0 -1
  603. package/dist/esm/client/hook/use-swap.js.map +0 -1
  604. package/dist/esm/client/hook/use-user.js.map +0 -1
  605. package/dist/esm/client/hook/use-vault.js.map +0 -1
  606. package/dist/esm/client/index.js.map +0 -1
  607. package/dist/esm/client/levr-provider.js.map +0 -1
  608. package/dist/esm/client/query-keys.js.map +0 -1
  609. package/dist/esm/constants/clanker.js.map +0 -1
  610. package/dist/esm/constants/config.js.map +0 -1
  611. package/dist/esm/constants/index.js +0 -52
  612. package/dist/esm/constants/index.js.map +0 -1
  613. package/dist/esm/constants/levr.js.map +0 -1
  614. package/dist/esm/constants/uniswap.js.map +0 -1
  615. package/dist/esm/deploy-v4.js.map +0 -1
  616. package/dist/esm/factory.js +0 -171
  617. package/dist/esm/factory.js.map +0 -1
  618. package/dist/esm/fee-receivers.js.map +0 -1
  619. package/dist/esm/fee-splitter.js.map +0 -1
  620. package/dist/esm/governance.js.map +0 -1
  621. package/dist/esm/index.js.map +0 -1
  622. package/dist/esm/ipfs-merkle-tree.js.map +0 -1
  623. package/dist/esm/pool-key.js.map +0 -1
  624. package/dist/esm/pool.js +0 -70
  625. package/dist/esm/pool.js.map +0 -1
  626. package/dist/esm/project.js.map +0 -1
  627. package/dist/esm/proposal.js +0 -157
  628. package/dist/esm/proposal.js.map +0 -1
  629. package/dist/esm/quote/index.js.map +0 -1
  630. package/dist/esm/quote/v3.js.map +0 -1
  631. package/dist/esm/quote/v4.js.map +0 -1
  632. package/dist/esm/schema/base.schema.js.map +0 -1
  633. package/dist/esm/schema/clanker.schema.js.map +0 -1
  634. package/dist/esm/schema/index.js.map +0 -1
  635. package/dist/esm/schema/levr.schema.js.map +0 -1
  636. package/dist/esm/stake.js.map +0 -1
  637. package/dist/esm/swap-v4.js.map +0 -1
  638. package/dist/esm/usd-price.js +0 -166
  639. package/dist/esm/usd-price.js.map +0 -1
  640. package/dist/esm/user.js.map +0 -1
  641. package/dist/esm/util.js.map +0 -1
  642. package/dist/esm/vault.js.map +0 -1
  643. package/dist/types/airdrop.d.ts.map +0 -1
  644. package/dist/types/balance.d.ts.map +0 -1
  645. package/dist/types/build-calldatas-v4.d.ts.map +0 -1
  646. package/dist/types/build-clanker-v4.d.ts.map +0 -1
  647. package/dist/types/client/hook/index.d.ts.map +0 -1
  648. package/dist/types/client/hook/use-airdrop.d.ts.map +0 -1
  649. package/dist/types/client/hook/use-clanker.d.ts.map +0 -1
  650. package/dist/types/client/hook/use-configure-splits.d.ts.map +0 -1
  651. package/dist/types/client/hook/use-deploy.d.ts.map +0 -1
  652. package/dist/types/client/hook/use-factory.d.ts.map +0 -1
  653. package/dist/types/client/hook/use-fee-receivers.d.ts.map +0 -1
  654. package/dist/types/client/hook/use-governance.d.ts.map +0 -1
  655. package/dist/types/client/hook/use-pool.d.ts +0 -12
  656. package/dist/types/client/hook/use-pool.d.ts.map +0 -1
  657. package/dist/types/client/hook/use-prepare.d.ts.map +0 -1
  658. package/dist/types/client/hook/use-project.d.ts.map +0 -1
  659. package/dist/types/client/hook/use-proposal.d.ts.map +0 -1
  660. package/dist/types/client/hook/use-register.d.ts.map +0 -1
  661. package/dist/types/client/hook/use-stake.d.ts.map +0 -1
  662. package/dist/types/client/hook/use-swap.d.ts.map +0 -1
  663. package/dist/types/client/hook/use-user.d.ts.map +0 -1
  664. package/dist/types/client/hook/use-vault.d.ts.map +0 -1
  665. package/dist/types/client/index.d.ts.map +0 -1
  666. package/dist/types/client/levr-provider.d.ts.map +0 -1
  667. package/dist/types/client/query-keys.d.ts.map +0 -1
  668. package/dist/types/constants/clanker.d.ts.map +0 -1
  669. package/dist/types/constants/config.d.ts.map +0 -1
  670. package/dist/types/constants/index.d.ts.map +0 -1
  671. package/dist/types/constants/levr.d.ts.map +0 -1
  672. package/dist/types/constants/uniswap.d.ts.map +0 -1
  673. package/dist/types/deploy-v4.d.ts.map +0 -1
  674. package/dist/types/factory.d.ts +0 -38
  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 +0 -1493
  686. package/dist/types/proposal.d.ts.map +0 -1
  687. package/dist/types/quote/index.d.ts.map +0 -1
  688. package/dist/types/quote/v3.d.ts.map +0 -1
  689. package/dist/types/quote/v4.d.ts.map +0 -1
  690. package/dist/types/schema/base.schema.d.ts.map +0 -1
  691. package/dist/types/schema/clanker.schema.d.ts.map +0 -1
  692. package/dist/types/schema/index.d.ts.map +0 -1
  693. package/dist/types/schema/levr.schema.d.ts.map +0 -1
  694. package/dist/types/stake.d.ts.map +0 -1
  695. package/dist/types/swap-v4.d.ts.map +0 -1
  696. package/dist/types/types.d.ts.map +0 -1
  697. package/dist/types/usd-price.d.ts +0 -146
  698. package/dist/types/usd-price.d.ts.map +0 -1
  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/{airdrop.js → src/airdrop.js} +0 -0
  703. /package/dist/esm/{client → src/client}/hook/use-airdrop.js +0 -0
  704. /package/dist/esm/{client → src/client}/hook/use-configure-splits.js +0 -0
  705. /package/dist/esm/{client → src/client}/hook/use-deploy.js +0 -0
  706. /package/dist/esm/{client → src/client}/hook/use-fee-receivers.js +0 -0
  707. /package/dist/esm/{client → src/client}/hook/use-governance.js +0 -0
  708. /package/dist/esm/{client → src/client}/hook/use-prepare.js +0 -0
  709. /package/dist/esm/{client → src/client}/hook/use-register.js +0 -0
  710. /package/dist/esm/{client → src/client}/hook/use-user.js +0 -0
  711. /package/dist/esm/{client → src/client}/hook/use-vault.js +0 -0
  712. /package/dist/esm/{client → src/client}/index.js +0 -0
  713. /package/dist/esm/{constants → src/constants}/config.js +0 -0
  714. /package/dist/esm/{fee-splitter.js → src/fee-splitter.js} +0 -0
  715. /package/dist/esm/{governance.js → src/governance.js} +0 -0
  716. /package/dist/esm/{ipfs-merkle-tree.js → src/ipfs-merkle-tree.js} +0 -0
  717. /package/dist/esm/{pool-key.js → src/pool-key.js} +0 -0
  718. /package/dist/esm/{quote → src/quote}/index.js +0 -0
  719. /package/dist/esm/{quote → src/quote}/v3.js +0 -0
  720. /package/dist/esm/{quote → src/quote}/v4.js +0 -0
  721. /package/dist/esm/{schema → src/schema}/base.schema.js +0 -0
  722. /package/dist/esm/{schema → src/schema}/index.js +0 -0
  723. /package/dist/esm/{types.js → src/types.js} +0 -0
  724. /package/dist/esm/{vault.js → src/vault.js} +0 -0
  725. /package/dist/types/{airdrop.d.ts → src/airdrop.d.ts} +0 -0
  726. /package/dist/types/{balance.d.ts → src/balance.d.ts} +0 -0
  727. /package/dist/types/{build-clanker-v4.d.ts → src/build-clanker-v4.d.ts} +0 -0
  728. /package/dist/types/{client → src/client}/hook/use-airdrop.d.ts +0 -0
  729. /package/dist/types/{client → src/client}/hook/use-clanker.d.ts +0 -0
  730. /package/dist/types/{client → src/client}/hook/use-configure-splits.d.ts +0 -0
  731. /package/dist/types/{client → src/client}/hook/use-fee-receivers.d.ts +0 -0
  732. /package/dist/types/{client → src/client}/hook/use-governance.d.ts +0 -0
  733. /package/dist/types/{client → src/client}/hook/use-prepare.d.ts +0 -0
  734. /package/dist/types/{client → src/client}/hook/use-register.d.ts +0 -0
  735. /package/dist/types/{client → src/client}/hook/use-stake.d.ts +0 -0
  736. /package/dist/types/{client → src/client}/hook/use-swap.d.ts +0 -0
  737. /package/dist/types/{client → src/client}/hook/use-user.d.ts +0 -0
  738. /package/dist/types/{client → src/client}/hook/use-vault.d.ts +0 -0
  739. /package/dist/types/{client → src/client}/index.d.ts +0 -0
  740. /package/dist/types/{constants → src/constants}/config.d.ts +0 -0
  741. /package/dist/types/{deploy-v4.d.ts → src/deploy-v4.d.ts} +0 -0
  742. /package/dist/types/{fee-splitter.d.ts → src/fee-splitter.d.ts} +0 -0
  743. /package/dist/types/{governance.d.ts → src/governance.d.ts} +0 -0
  744. /package/dist/types/{ipfs-merkle-tree.d.ts → src/ipfs-merkle-tree.d.ts} +0 -0
  745. /package/dist/types/{pool-key.d.ts → src/pool-key.d.ts} +0 -0
  746. /package/dist/types/{quote → src/quote}/index.d.ts +0 -0
  747. /package/dist/types/{quote → src/quote}/v3.d.ts +0 -0
  748. /package/dist/types/{quote → src/quote}/v4.d.ts +0 -0
  749. /package/dist/types/{schema → src/schema}/base.schema.d.ts +0 -0
  750. /package/dist/types/{schema → src/schema}/index.d.ts +0 -0
  751. /package/dist/types/{swap-v4.d.ts → src/swap-v4.d.ts} +0 -0
  752. /package/dist/types/{vault.d.ts → src/vault.d.ts} +0 -0
@@ -0,0 +1,87 @@
1
+ import { IClankerToken } from "./abis/index.js";
2
+ /**
3
+ * Update token metadata (requires current admin)
4
+ */
5
+ export async function updateTokenMetadata({ walletClient, publicClient, clankerToken, metadata, }) {
6
+ if (!walletClient.account) {
7
+ throw new Error("Wallet account not available");
8
+ }
9
+ const hash = await walletClient.writeContract({
10
+ address: clankerToken,
11
+ abi: IClankerToken,
12
+ functionName: "updateMetadata",
13
+ args: [metadata],
14
+ chain: walletClient.chain,
15
+ account: walletClient.account,
16
+ });
17
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
18
+ if (receipt.status === "reverted") {
19
+ throw new Error("Update metadata transaction reverted");
20
+ }
21
+ return receipt;
22
+ }
23
+ /**
24
+ * Update token image URL (requires current admin)
25
+ */
26
+ export async function updateTokenImage({ walletClient, publicClient, clankerToken, imageUrl, }) {
27
+ if (!walletClient.account) {
28
+ throw new Error("Wallet account not available");
29
+ }
30
+ const hash = await walletClient.writeContract({
31
+ address: clankerToken,
32
+ abi: IClankerToken,
33
+ functionName: "updateImage",
34
+ args: [imageUrl],
35
+ chain: walletClient.chain,
36
+ account: walletClient.account,
37
+ });
38
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
39
+ if (receipt.status === "reverted") {
40
+ throw new Error("Update image transaction reverted");
41
+ }
42
+ return receipt;
43
+ }
44
+ /**
45
+ * Transfer token admin to a new address (requires current admin)
46
+ */
47
+ export async function updateTokenAdmin({ walletClient, publicClient, clankerToken, newAdmin, }) {
48
+ if (!walletClient.account) {
49
+ throw new Error("Wallet account not available");
50
+ }
51
+ const hash = await walletClient.writeContract({
52
+ address: clankerToken,
53
+ abi: IClankerToken,
54
+ functionName: "updateAdmin",
55
+ args: [newAdmin],
56
+ chain: walletClient.chain,
57
+ account: walletClient.account,
58
+ });
59
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
60
+ if (receipt.status === "reverted") {
61
+ throw new Error("Update admin transaction reverted");
62
+ }
63
+ return receipt;
64
+ }
65
+ /**
66
+ * Read token admin address
67
+ */
68
+ export async function getTokenAdmin(publicClient, clankerToken) {
69
+ const admin = await publicClient.readContract({
70
+ address: clankerToken,
71
+ abi: IClankerToken,
72
+ functionName: "admin",
73
+ });
74
+ return admin;
75
+ }
76
+ /**
77
+ * Read original token admin address (immutable)
78
+ */
79
+ export async function getOriginalTokenAdmin(publicClient, clankerToken) {
80
+ const originalAdmin = await publicClient.readContract({
81
+ address: clankerToken,
82
+ abi: IClankerToken,
83
+ functionName: "originalAdmin",
84
+ });
85
+ return originalAdmin;
86
+ }
87
+ //# sourceMappingURL=token-admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-admin.js","sourceRoot":"","sources":["../../../src/token-admin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,274 @@
1
+ import { formatUnits, parseUnits } from "viem";
2
+ import { V3QuoterV2 } from "./abis/index.js";
3
+ import { GET_USD_STABLECOIN, UNISWAP_V3_QUOTER_V2, WETH } from "./constants/index.js";
4
+ import { discoverPool, sortTokens } from "./pool-key.js";
5
+ import { isWETH } from "./util.js";
6
+ // =============================================================================
7
+ // Price Calculation from sqrtPriceX96
8
+ // =============================================================================
9
+ /**
10
+ * Convert sqrtPriceX96 to a decimal price
11
+ * Formula: price = (sqrtPriceX96 / 2^96)^2
12
+ * Adjusted for token decimals
13
+ *
14
+ * Uses bigint arithmetic to maintain precision for large values.
15
+ *
16
+ * sqrtPriceX96² gives token1/token0 (how much token1 per 1 token0).
17
+ *
18
+ * @param sqrtPriceX96 - The sqrtPriceX96 value from Uniswap
19
+ * @param decimals0 - Decimals of token0
20
+ * @param decimals1 - Decimals of token1
21
+ * @param isToken0 - Whether we're calculating price OF token0 (true) or token1 (false)
22
+ * @returns Price of the specified token in terms of the other token
23
+ */
24
+ export const computePriceFromSqrtPriceX96 = (sqrtPriceX96, decimals0, decimals1, isToken0) => {
25
+ const Q96 = 2n ** 96n;
26
+ // Use fixed-point arithmetic with 18 decimal precision to avoid overflow
27
+ // price = (sqrtPriceX96 / Q96)^2
28
+ // price_scaled = (sqrtPriceX96^2 * SCALE) / Q96^2
29
+ const SCALE = 10n ** 18n;
30
+ // Calculate: (sqrtPriceX96^2 * SCALE) / (Q96^2)
31
+ const numerator = sqrtPriceX96 * sqrtPriceX96 * SCALE;
32
+ const denominator = Q96 * Q96;
33
+ const priceScaled = numerator / denominator;
34
+ // Convert to number (safe now since priceScaled is reasonable size)
35
+ let price = Number(priceScaled) / 1000000000000000000;
36
+ // Adjust for decimal places
37
+ // sqrtPriceX96 gives price as token1/token0 in raw units
38
+ // We need to adjust for the difference in decimals
39
+ if (decimals0 !== decimals1) {
40
+ const decimalAdjustment = 10 ** (decimals0 - decimals1);
41
+ price = price * decimalAdjustment;
42
+ }
43
+ // sqrtPriceX96² gives token1/token0 = "price of token0 in terms of token1"
44
+ // - If isToken0 = true: we want token0's price in token1, which is token1/token0 ✓ (no inversion)
45
+ // - If isToken0 = false: we want token1's price in token0, which is token0/token1 (need to invert)
46
+ if (!isToken0) {
47
+ price = price > 0 ? 1 / price : 0;
48
+ }
49
+ return price;
50
+ };
51
+ /**
52
+ * Get V3 fee tiers for a given chain
53
+ * - Uniswap V3 (Base): 3000, 500, 10000 (0.3%, 0.05%, 1%)
54
+ * - PancakeSwap V3 (BNB): 100, 500, 2500, 10000 (0.01%, 0.05%, 0.25%, 1%)
55
+ */
56
+ const getV3FeeTiers = (chainId) => {
57
+ if (chainId === 56) {
58
+ // PancakeSwap V3 on BNB - order by liquidity
59
+ return [100, 500, 2500, 10000];
60
+ }
61
+ // Uniswap V3 (Base, Anvil)
62
+ return [3000, 500, 10000];
63
+ };
64
+ /**
65
+ * @description Get the USD price of WETH from a WETH/USDC pool using V3 quoter
66
+ *
67
+ * @param params Parameters for WETH/USD price oracle
68
+ * @returns WETH price in USD and raw quote data
69
+ *
70
+ * @remarks
71
+ * This function uses the V3 quoter to simulate a swap and get accurate pricing.
72
+ * It tries multiple fee tiers in order of liquidity preference.
73
+ *
74
+ * V3 is used instead of V4 because V3 has much deeper liquidity on most chains.
75
+ *
76
+ * This is commonly used as a price oracle for other token pricing calculations.
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * // Get current WETH price on Base mainnet
81
+ * const { priceUsd, fee } = await getWethUsdPrice({
82
+ * publicClient: baseMainnetClient,
83
+ * })
84
+ * console.log(`WETH price: $${priceUsd} (from ${fee/10000}% pool)`)
85
+ * ```
86
+ */
87
+ export const getWethUsdPrice = async ({ publicClient, }) => {
88
+ const chainId = publicClient.chain?.id;
89
+ if (!chainId) {
90
+ throw new Error("Chain ID not found on public client");
91
+ }
92
+ const wethData = WETH(chainId);
93
+ if (!wethData) {
94
+ throw new Error(`WETH address not found for chain ID ${chainId}`);
95
+ }
96
+ const usdStablecoin = GET_USD_STABLECOIN(chainId);
97
+ if (!usdStablecoin) {
98
+ throw new Error(`USD stablecoin address not found for chain ID ${chainId}`);
99
+ }
100
+ const quoterAddress = UNISWAP_V3_QUOTER_V2(chainId);
101
+ if (!quoterAddress) {
102
+ throw new Error(`V3 Quoter address not found for chain ID ${chainId}`);
103
+ }
104
+ const feeTiers = getV3FeeTiers(chainId);
105
+ const oneWeth = parseUnits("1", wethData.decimals);
106
+ // Try each fee tier until one works
107
+ for (const fee of feeTiers) {
108
+ try {
109
+ const result = await publicClient.simulateContract({
110
+ address: quoterAddress,
111
+ abi: V3QuoterV2,
112
+ functionName: "quoteExactInputSingle",
113
+ args: [
114
+ {
115
+ tokenIn: wethData.address,
116
+ tokenOut: usdStablecoin.address,
117
+ amountIn: oneWeth,
118
+ fee,
119
+ sqrtPriceLimitX96: 0n,
120
+ },
121
+ ],
122
+ });
123
+ const [amountOut] = result.result;
124
+ if (amountOut > 0n) {
125
+ const priceUsd = formatUnits(amountOut, usdStablecoin.decimals);
126
+ return {
127
+ priceUsd,
128
+ wethPerUsdc: amountOut,
129
+ fee,
130
+ };
131
+ }
132
+ }
133
+ catch {
134
+ // This fee tier doesn't work, try next
135
+ continue;
136
+ }
137
+ }
138
+ throw new Error("No liquid WETH/USD V3 pool found");
139
+ };
140
+ /**
141
+ * @description Get the USD price of a paired token
142
+ *
143
+ * @param params Parameters for paired token USD price oracle
144
+ * @returns USD price as a formatted string
145
+ *
146
+ * @remarks
147
+ * Handles two cases:
148
+ * 1. WETH/WBNB (native wrapped tokens) -> use WETH/USDC V3 oracle
149
+ * 2. All other tokens (stablecoins) -> return "1.00"
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * // Get price of USDC (stablecoin) - returns "1.00"
154
+ * const priceUsd = await getPairedTokenUsdPrice({
155
+ * publicClient: baseClient,
156
+ * pairedTokenAddress: '0x833589...',
157
+ * })
158
+ *
159
+ * // Get price of WETH - uses oracle
160
+ * const wethPrice = await getPairedTokenUsdPrice({
161
+ * publicClient: baseClient,
162
+ * pairedTokenAddress: '0x4200...',
163
+ * })
164
+ * ```
165
+ */
166
+ export const getPairedTokenUsdPrice = async ({ publicClient, pairedTokenAddress, }) => {
167
+ const chainId = publicClient.chain?.id;
168
+ if (!chainId) {
169
+ throw new Error("Chain ID not found on public client");
170
+ }
171
+ // Case 1: WETH/WBNB (native wrapped tokens) - use oracle
172
+ if (isWETH(pairedTokenAddress, chainId)) {
173
+ const { priceUsd } = await getWethUsdPrice({ publicClient });
174
+ return priceUsd;
175
+ }
176
+ // Case 2: All other paired tokens are stablecoins - always $1.00
177
+ // This includes USDC, USDT, and any other non-native paired token
178
+ return "1.00";
179
+ };
180
+ /**
181
+ * @description Get the USD price of a token paired with any ERC20
182
+ *
183
+ * @param params Parameters including token addresses and chain config
184
+ * @returns USD price and intermediate price ratios
185
+ *
186
+ * @remarks
187
+ * This function calculates the USD price of a token by:
188
+ * 1. Reading sqrtPriceX96 directly from V4 pool state (efficient single view call)
189
+ * 2. Auto-discovering paired token USD price (stablecoin = $1.00, WETH via V3 quoter)
190
+ * 3. Multiplying them together to get token price in USD
191
+ *
192
+ * Uses sqrtPriceX96 for spot price calculation (same approach as the indexer).
193
+ * Defaults to WETH as paired token if not provided.
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * // Get token price when paired with WETH
198
+ * const { priceUsd } = await getUsdPrice({
199
+ * publicClient: baseClient,
200
+ * tokenAddress: '0x123...',
201
+ * tokenDecimals: 18,
202
+ * })
203
+ * console.log(`Token price: $${priceUsd}`)
204
+ * ```
205
+ */
206
+ export const getUsdPrice = async ({ publicClient, tokenAddress, tokenDecimals, pairedTokenAddress, pairedTokenDecimals, quoteFee, quoteTickSpacing, quoteHooks, }) => {
207
+ const chainId = publicClient.chain?.id;
208
+ if (!chainId) {
209
+ throw new Error("Chain ID not found on public client");
210
+ }
211
+ // Default to WETH if no paired token specified
212
+ let pairedToken = pairedTokenAddress;
213
+ let pairedDecimals = pairedTokenDecimals ?? 18;
214
+ if (!pairedToken) {
215
+ const wethData = WETH(chainId);
216
+ if (!wethData) {
217
+ throw new Error(`WETH address not found for chain ID ${chainId}`);
218
+ }
219
+ pairedToken = wethData.address;
220
+ pairedDecimals = wethData.decimals;
221
+ }
222
+ else if (pairedTokenDecimals === undefined) {
223
+ throw new Error("pairedTokenDecimals must be provided when pairedTokenAddress is specified");
224
+ }
225
+ // Build fee tiers - use specific pool if fee and tickSpacing are provided
226
+ const feeTiers = quoteFee !== undefined && quoteTickSpacing !== undefined
227
+ ? [{ fee: quoteFee, tickSpacing: quoteTickSpacing }]
228
+ : undefined; // Use defaults from discoverPool
229
+ // Discover the pool and get sqrtPriceX96 in one call
230
+ const pool = await discoverPool({
231
+ publicClient,
232
+ token0: tokenAddress,
233
+ token1: pairedToken,
234
+ hooks: quoteHooks,
235
+ feeTiers,
236
+ });
237
+ if (!pool) {
238
+ throw new Error(`No liquid V4 pool found for ${tokenAddress}/${pairedToken}`);
239
+ }
240
+ // Determine token ordering in the pool
241
+ const [currency0] = sortTokens(tokenAddress, pairedToken);
242
+ const tokenIsToken0 = tokenAddress.toLowerCase() === currency0.toLowerCase();
243
+ // Calculate decimals in pool order
244
+ const decimals0 = tokenIsToken0 ? tokenDecimals : pairedDecimals;
245
+ const decimals1 = tokenIsToken0 ? pairedDecimals : tokenDecimals;
246
+ // Calculate token price in paired token using sqrtPriceX96
247
+ const tokenPriceInPaired = computePriceFromSqrtPriceX96(pool.sqrtPriceX96, decimals0, decimals1, tokenIsToken0);
248
+ // Get paired token USD price
249
+ const pairedTokenPriceUsd = await getPairedTokenUsdPrice({
250
+ publicClient,
251
+ pairedTokenAddress: pairedToken,
252
+ });
253
+ // Calculate USD price: (token/paired) * (paired/USD) = token/USD
254
+ const tokenPriceInUsd = tokenPriceInPaired * parseFloat(pairedTokenPriceUsd);
255
+ // Use adaptive precision for very small values
256
+ let formattedPrice;
257
+ if (tokenPriceInUsd < 0.01) {
258
+ // For very small values, use 10 decimals or scientific notation if needed
259
+ if (tokenPriceInUsd < 1e-10) {
260
+ formattedPrice = tokenPriceInUsd.toExponential(6);
261
+ }
262
+ else {
263
+ formattedPrice = tokenPriceInUsd.toFixed(10);
264
+ }
265
+ }
266
+ else {
267
+ formattedPrice = tokenPriceInUsd.toFixed(6);
268
+ }
269
+ return {
270
+ priceUsd: formattedPrice,
271
+ tokenPriceInPaired,
272
+ };
273
+ };
274
+ //# sourceMappingURL=usd-price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usd-price.js","sourceRoot":"","sources":["../../../src/usd-price.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { erc20Abi } from "viem";
2
2
  import { LevrStaking_v1 } from "./abis/index.js";
3
3
  import { formatBalanceWithUsd } from "./balance.js";
4
- import { WETH } from "./constants/index.js";
5
4
  // ========================================
6
5
  // HELPER UTILS (for composition in larger multicalls)
7
6
  // ========================================
@@ -17,9 +16,9 @@ export function balanceContracts(params) {
17
16
  args: [params.userAddress],
18
17
  },
19
18
  ];
20
- if (params.wethAddress) {
19
+ if (params.pairedTokenAddress) {
21
20
  contracts.push({
22
- address: params.wethAddress,
21
+ address: params.pairedTokenAddress,
23
22
  abi: erc20Abi,
24
23
  functionName: "balanceOf",
25
24
  args: [params.userAddress],
@@ -58,12 +57,12 @@ export function stakingContracts(params) {
58
57
  args: [params.userAddress],
59
58
  },
60
59
  ];
61
- if (params.wethAddress) {
60
+ if (params.pairedTokenAddress) {
62
61
  contracts.push({
63
62
  address: params.stakingAddress,
64
63
  abi: LevrStaking_v1,
65
64
  functionName: "claimableRewards",
66
- args: [params.userAddress, params.wethAddress],
65
+ args: [params.userAddress, params.pairedTokenAddress],
67
66
  });
68
67
  }
69
68
  return contracts;
@@ -82,7 +81,9 @@ export async function getUser({ publicClient, userAddress, project }) {
82
81
  const chainId = publicClient.chain?.id;
83
82
  if (!chainId)
84
83
  throw new Error("Chain ID not found on public client");
85
- const wethAddress = WETH(chainId)?.address;
84
+ // Get paired token info from project
85
+ const pairedTokenInfo = project.pool?.pairedToken;
86
+ const pairedTokenAddress = pairedTokenInfo?.address;
86
87
  const { clankerToken, stakingAddress, stakedTokenAddress, tokenDecimals, pricing } = {
87
88
  clankerToken: project.token.address,
88
89
  stakingAddress: project.staking,
@@ -100,9 +101,9 @@ export async function getUser({ publicClient, userAddress, project }) {
100
101
  args: [userAddress],
101
102
  },
102
103
  ];
103
- if (wethAddress) {
104
+ if (pairedTokenAddress) {
104
105
  contracts.push({
105
- address: wethAddress,
106
+ address: pairedTokenAddress,
106
107
  abi: erc20Abi,
107
108
  functionName: "balanceOf",
108
109
  args: [userAddress],
@@ -114,7 +115,7 @@ export async function getUser({ publicClient, userAddress, project }) {
114
115
  stakingAddress,
115
116
  stakedTokenAddress,
116
117
  clankerToken,
117
- wethAddress,
118
+ pairedTokenAddress,
118
119
  }));
119
120
  // Execute single multicall + native balance
120
121
  const [nativeBalance, ...multicallResults] = await Promise.all([
@@ -123,34 +124,38 @@ export async function getUser({ publicClient, userAddress, project }) {
123
124
  ]);
124
125
  const results = multicallResults[0];
125
126
  // Parse balance results
126
- const stakingDataStartIndex = wethAddress ? 2 : 1;
127
+ const stakingDataStartIndex = pairedTokenAddress ? 2 : 1;
127
128
  const tokenBalanceRaw = results[0].result;
128
- const wethBalanceRaw = wethAddress ? results[1].result : 0n;
129
+ const pairedTokenBalanceRaw = pairedTokenAddress ? results[1].result : 0n;
129
130
  // Parse user-specific staking results (pool stats now in project)
130
131
  const stakedBalance = results[stakingDataStartIndex + 0].result;
131
132
  const allowance = results[stakingDataStartIndex + 1].result;
132
133
  const claimableRewardsToken = results[stakingDataStartIndex + 2].result;
133
134
  const votingPower = results[stakingDataStartIndex + 3].result;
134
- // Parse WETH claimable rewards if available
135
- const claimableRewardsWeth = wethAddress
135
+ // Parse paired token claimable rewards if available
136
+ const claimableRewardsPaired = pairedTokenAddress
136
137
  ? results[stakingDataStartIndex + 4].result
137
138
  : null;
138
139
  // Calculate USD values
139
140
  const tokenPrice = pricing ? parseFloat(pricing.tokenUsd) : null;
140
- const wethPrice = pricing ? parseFloat(pricing.wethUsd) : null;
141
+ const pairedTokenPrice = pricing ? parseFloat(pricing.pairedTokenUsd) : null;
142
+ const balances = {
143
+ token: formatBalanceWithUsd(tokenBalanceRaw, tokenDecimals, tokenPrice),
144
+ pairedToken: formatBalanceWithUsd(pairedTokenBalanceRaw, pairedTokenInfo?.decimals ?? 18, pairedTokenPrice),
145
+ };
146
+ // Only add nativeEth if paired token is WETH (isNative = true)
147
+ if (pairedTokenInfo?.isNative) {
148
+ balances.nativeEth = formatBalanceWithUsd(nativeBalance, 18, pairedTokenPrice);
149
+ }
141
150
  return {
142
- balances: {
143
- token: formatBalanceWithUsd(tokenBalanceRaw, tokenDecimals, tokenPrice),
144
- weth: formatBalanceWithUsd(wethBalanceRaw, 18, wethPrice),
145
- eth: formatBalanceWithUsd(nativeBalance, 18, wethPrice),
146
- },
151
+ balances,
147
152
  staking: {
148
153
  stakedBalance: formatBalanceWithUsd(stakedBalance, tokenDecimals, tokenPrice),
149
154
  allowance: formatBalanceWithUsd(allowance, tokenDecimals, tokenPrice),
150
155
  claimableRewards: {
151
156
  staking: formatBalanceWithUsd(claimableRewardsToken, tokenDecimals, tokenPrice),
152
- weth: claimableRewardsWeth !== null && wethAddress
153
- ? formatBalanceWithUsd(claimableRewardsWeth, 18, wethPrice)
157
+ pairedToken: claimableRewardsPaired !== null && pairedTokenAddress
158
+ ? formatBalanceWithUsd(claimableRewardsPaired, pairedTokenInfo?.decimals ?? 18, pairedTokenPrice)
154
159
  : null,
155
160
  },
156
161
  },
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AA+BhD,2CAA2C;AAC3C,sDAAsD;AACtD,2CAA2C;AAE3C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAIhC;IACC,MAAM,SAAS,GAAG;QAChB;YACE,OAAO,EAAE,MAAM,CAAC,YAAY;YAC5B,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAoB;YAClC,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;SAC3B;KACF,CAAA;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,MAAM,CAAC,kBAAkB;YAClC,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAoB;YAClC,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAMhC;IACC,MAAM,SAAS,GAAG;QAChB;YACE,OAAO,EAAE,MAAM,CAAC,kBAAkB;YAClC,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;SAC3B;QACD;YACE,OAAO,EAAE,MAAM,CAAC,YAAY;YAC5B,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC;SAClD;QACD;YACE,OAAO,EAAE,MAAM,CAAC,cAAc;YAC9B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,kBAAkB;YAChC,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC;SAChD;QACD;YACE,OAAO,EAAE,MAAM,CAAC,cAAc;YAC9B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;SAC3B;KACF,CAAA;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,MAAM,CAAC,cAAc;YAC9B,GAAG,EAAE,cAAc;YACnB,YAAY,EAAE,kBAA2B;YACzC,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC;SACtD,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,2CAA2C;AAC3C,0BAA0B;AAC1B,2CAA2C;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAc;IAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAA;IACtC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAEpE,qCAAqC;IACrC,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAA;IACjD,MAAM,kBAAkB,GAAG,eAAe,EAAE,OAAO,CAAA;IACnD,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG;QACnF,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;QACnC,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,kBAAkB,EAAE,OAAO,CAAC,WAAW;QACvC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;QACrC,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAA;IAED,yDAAyD;IACzD,MAAM,SAAS,GAAU;QACvB,WAAW;QACX;YACE,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAoB;YAClC,IAAI,EAAE,CAAC,WAAW,CAAC;SACpB;KACF,CAAA;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,kBAAkB;YAC3B,GAAG,EAAE,QAAQ;YACb,YAAY,EAAE,WAAoB;YAClC,IAAI,EAAE,CAAC,WAAW,CAAC;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,wBAAwB;IACxB,SAAS,CAAC,IAAI,CACZ,GAAG,gBAAgB,CAAC;QAClB,WAAW;QACX,cAAc;QACd,kBAAkB;QAClB,YAAY;QACZ,kBAAkB;KACnB,CAAC,CACH,CAAA;IAED,4CAA4C;IAC5C,MAAM,CAAC,aAAa,EAAE,GAAG,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7D,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACjD,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;KACtC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAEnC,wBAAwB;IACxB,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAExD,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAgB,CAAA;IACnD,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,CAAC,CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAiB,CAAC,CAAC,CAAC,EAAE,CAAA;IAErF,kEAAkE;IAClE,MAAM,aAAa,GAAG,OAAO,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,MAAgB,CAAA;IACzE,MAAM,SAAS,GAAG,OAAO,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,MAAgB,CAAA;IACrE,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,MAAgB,CAAA;IACjF,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,MAAgB,CAAA;IAEvE,oDAAoD;IACpD,MAAM,sBAAsB,GAAG,kBAAkB;QAC/C,CAAC,CAAE,OAAO,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,MAAiB;QACvD,CAAC,CAAC,IAAI,CAAA;IAER,uBAAuB;IACvB,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAE5E,MAAM,QAAQ,GAAiB;QAC7B,KAAK,EAAE,oBAAoB,CAAC,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC;QACvE,WAAW,EAAE,oBAAoB,CAC/B,qBAAqB,EACrB,eAAe,EAAE,QAAQ,IAAI,EAAE,EAC/B,gBAAgB,CACjB;KACF,CAAA;IAED,+DAA+D;IAC/D,IAAI,eAAe,EAAE,QAAQ,EAAE,CAAC;QAC9B,QAAQ,CAAC,SAAS,GAAG,oBAAoB,CAAC,aAAa,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAA;IAChF,CAAC;IAED,OAAO;QACL,QAAQ;QACR,OAAO,EAAE;YACP,aAAa,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC;YAC7E,SAAS,EAAE,oBAAoB,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC;YACrE,gBAAgB,EAAE;gBAChB,OAAO,EAAE,oBAAoB,CAAC,qBAAqB,EAAE,aAAa,EAAE,UAAU,CAAC;gBAC/E,WAAW,EACT,sBAAsB,KAAK,IAAI,IAAI,kBAAkB;oBACnD,CAAC,CAAC,oBAAoB,CAClB,sBAAsB,EACtB,eAAe,EAAE,QAAQ,IAAI,EAAE,EAC/B,gBAAgB,CACjB;oBACH,CAAC,CAAC,IAAI;aACX;SACF;QACD,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;KACpC,CAAA;AACH,CAAC"}
@@ -1,11 +1,26 @@
1
- import { createPublicClient, http, parseUnits } from 'viem';
2
- import { base, baseSepolia } from 'viem/chains';
1
+ import { createPublicClient, http, parseUnits } from "viem";
2
+ import { anvil, base, baseSepolia, bsc } from "viem/chains";
3
+ import { WETH } from "./constants/index.js";
3
4
  /**
4
5
  * Default public RPC URLs for common chains
5
6
  */
6
7
  const DEFAULT_RPC_URLS = {
7
- [base.id]: 'https://mainnet.base.org',
8
- [baseSepolia.id]: 'https://sepolia.base.org',
8
+ [base.id]: "https://mainnet.base.org",
9
+ [baseSepolia.id]: "https://sepolia.base.org",
10
+ [bsc.id]: "https://bsc-dataseed.binance.org",
11
+ [anvil.id]: "http://localhost:8545",
12
+ };
13
+ /**
14
+ * Check if a currency is WETH
15
+ * @param currency Currency address
16
+ * @param chainId Chain ID to get WETH address
17
+ * @returns True if WETH
18
+ */
19
+ export const isWETH = (currency, chainId) => {
20
+ const wethInfo = WETH(chainId);
21
+ if (!wethInfo)
22
+ return false;
23
+ return currency.toLowerCase() === wethInfo.address.toLowerCase();
9
24
  };
10
25
  /**
11
26
  * Get a configured public client for a given chain
@@ -35,6 +50,9 @@ export function getPublicClient(chainId, rpcUrl) {
35
50
  else if (chainId === baseSepolia.id) {
36
51
  chain = baseSepolia;
37
52
  }
53
+ else if (chainId === bsc.id) {
54
+ chain = bsc;
55
+ }
38
56
  else {
39
57
  throw new Error(`Unsupported chain ID ${chainId}`);
40
58
  }
@@ -47,15 +65,15 @@ export function getPublicClient(chainId, rpcUrl) {
47
65
  * Check if approval is needed for a given amount
48
66
  */
49
67
  export function needsApproval(currentAllowance, requiredAmount, decimals) {
50
- if (typeof currentAllowance !== 'bigint' || typeof requiredAmount !== 'bigint') {
68
+ if (typeof currentAllowance !== "bigint" || typeof requiredAmount !== "bigint") {
51
69
  if (!decimals) {
52
- throw new Error('Decimals are required, when not using bigint');
70
+ throw new Error("Decimals are required, when not using bigint");
53
71
  }
54
72
  }
55
- const parsedCurrentAllowance = typeof currentAllowance === 'bigint'
73
+ const parsedCurrentAllowance = typeof currentAllowance === "bigint"
56
74
  ? currentAllowance
57
75
  : parseUnits(normalizeDecimalInput(currentAllowance), decimals);
58
- const parsedRequiredAmount = typeof requiredAmount === 'bigint'
76
+ const parsedRequiredAmount = typeof requiredAmount === "bigint"
59
77
  ? requiredAmount
60
78
  : parseUnits(normalizeDecimalInput(requiredAmount), decimals);
61
79
  return parsedCurrentAllowance < parsedRequiredAmount;
@@ -65,14 +83,14 @@ export function needsApproval(currentAllowance, requiredAmount, decimals) {
65
83
  */
66
84
  export function normalizeDecimalInput(value) {
67
85
  let inputString;
68
- if (typeof value === 'bigint') {
86
+ if (typeof value === "bigint") {
69
87
  return value.toString();
70
88
  }
71
- else if (typeof value === 'number') {
89
+ else if (typeof value === "number") {
72
90
  if (!Number.isFinite(value)) {
73
- throw new Error('Invalid decimal number');
91
+ throw new Error("Invalid decimal number");
74
92
  }
75
- inputString = value.toLocaleString('en-US', {
93
+ inputString = value.toLocaleString("en-US", {
76
94
  useGrouping: false,
77
95
  maximumFractionDigits: 20,
78
96
  });
@@ -81,7 +99,7 @@ export function normalizeDecimalInput(value) {
81
99
  inputString = value.trim();
82
100
  }
83
101
  if (inputString.length === 0) {
84
- return '0';
102
+ return "0";
85
103
  }
86
104
  if (!/[eE]/.test(inputString)) {
87
105
  return inputString;
@@ -89,31 +107,31 @@ export function normalizeDecimalInput(value) {
89
107
  return expandScientific(inputString);
90
108
  }
91
109
  function expandScientific(input) {
92
- const normalized = input.replace(/^\+/, '');
93
- const negative = normalized.startsWith('-');
110
+ const normalized = input.replace(/^\+/, "");
111
+ const negative = normalized.startsWith("-");
94
112
  const unsigned = negative ? normalized.slice(1) : normalized;
95
113
  const [mantissa, exponentPart] = unsigned.split(/[eE]/);
96
114
  const exponent = Number(exponentPart);
97
115
  if (!Number.isInteger(exponent)) {
98
- throw new Error('Invalid exponent in decimal input');
116
+ throw new Error("Invalid exponent in decimal input");
99
117
  }
100
- const [intPartRaw, fracPartRaw = ''] = mantissa.split('.');
101
- const intPart = intPartRaw || '0';
118
+ const [intPartRaw, fracPartRaw = ""] = mantissa.split(".");
119
+ const intPart = intPartRaw || "0";
102
120
  const fracPart = fracPartRaw;
103
121
  const rawDigitsUntrimmed = intPart + fracPart;
104
- const digits = rawDigitsUntrimmed === '' ? '0' : rawDigitsUntrimmed;
122
+ const digits = rawDigitsUntrimmed === "" ? "0" : rawDigitsUntrimmed;
105
123
  const decimalIndex = intPart.length + exponent;
106
- const sign = negative ? '-' : '';
124
+ const sign = negative ? "-" : "";
107
125
  if (decimalIndex <= 0) {
108
126
  const zeros = Math.abs(decimalIndex);
109
- const normalizedDigits = digits.replace(/^0+(?=\d)/, '') || '0';
110
- return `${sign}0.${'0'.repeat(zeros)}${normalizedDigits}`;
127
+ const normalizedDigits = digits.replace(/^0+(?=\d)/, "") || "0";
128
+ return `${sign}0.${"0".repeat(zeros)}${normalizedDigits}`;
111
129
  }
112
130
  if (decimalIndex >= digits.length) {
113
- return `${sign}${digits}${'0'.repeat(decimalIndex - digits.length)}`;
131
+ return `${sign}${digits}${"0".repeat(decimalIndex - digits.length)}`;
114
132
  }
115
- const whole = digits.slice(0, decimalIndex) || '0';
133
+ const whole = digits.slice(0, decimalIndex) || "0";
116
134
  const fraction = digits.slice(decimalIndex);
117
135
  return `${sign}${whole}.${fraction}`;
118
136
  }
119
- //# sourceMappingURL=util.js.map
137
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"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"}