@berachain/berajs 0.2.2 → 0.2.4

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 (205) hide show
  1. package/.claude/skills/berajs/SKILL.md +222 -0
  2. package/.claude/skills/berajs/references/dex.md +235 -0
  3. package/.claude/skills/berajs/references/pol.md +194 -0
  4. package/.claude/skills/berajs/references/staking.md +198 -0
  5. package/.claude/skills/berajs/references/tokens.md +170 -0
  6. package/dist/{BexStatusProvider-nS3NcdxI.d.cts → BexStatusProvider-DRymVlQf.d.cts} +1 -1
  7. package/dist/{BexStatusProvider-nS3NcdxI.d.ts → BexStatusProvider-DRymVlQf.d.ts} +1 -1
  8. package/dist/{HoneyConfigProvider-CK6mOKFH.d.ts → HoneyConfigProvider-DVP_9KZn.d.ts} +1 -1
  9. package/dist/{HoneyConfigProvider-Ca3ouozs.d.cts → HoneyConfigProvider-DfkjmzEf.d.cts} +1 -1
  10. package/dist/abi/exports.cjs +1 -1
  11. package/dist/abi/exports.cjs.map +1 -1
  12. package/dist/abi/exports.d.cts +1893 -25347
  13. package/dist/abi/exports.d.ts +1893 -25347
  14. package/dist/abi/exports.mjs +1 -1
  15. package/dist/abi/exports.mjs.map +1 -1
  16. package/dist/actions/exports.cjs +1 -1
  17. package/dist/actions/exports.cjs.map +1 -1
  18. package/dist/actions/exports.d.cts +10 -9
  19. package/dist/actions/exports.d.ts +10 -9
  20. package/dist/actions/exports.mjs +1 -1
  21. package/dist/actions/exports.mjs.map +1 -1
  22. package/dist/chunk-4GU2O2OW.cjs +4 -0
  23. package/dist/chunk-4GU2O2OW.cjs.map +1 -0
  24. package/dist/chunk-5XWELBWR.mjs +2 -0
  25. package/dist/chunk-5XWELBWR.mjs.map +1 -0
  26. package/dist/chunk-BS6K7HGH.cjs +2 -0
  27. package/dist/chunk-BS6K7HGH.cjs.map +1 -0
  28. package/dist/chunk-NLVWRMGD.mjs +2 -0
  29. package/dist/chunk-NLVWRMGD.mjs.map +1 -0
  30. package/dist/chunk-OUD27MU7.cjs +2 -0
  31. package/dist/chunk-OUD27MU7.cjs.map +1 -0
  32. package/dist/chunk-RW3JFPED.mjs +4 -0
  33. package/dist/chunk-RW3JFPED.mjs.map +1 -0
  34. package/dist/chunk-S3EAKCVM.cjs +2 -0
  35. package/dist/{chunk-PKXAW6MO.cjs.map → chunk-S3EAKCVM.cjs.map} +1 -1
  36. package/dist/chunk-YNO7BCCM.mjs +2 -0
  37. package/dist/{chunk-3YXSUBA5.mjs.map → chunk-YNO7BCCM.mjs.map} +1 -1
  38. package/dist/contexts/exports.d.cts +3 -3
  39. package/dist/contexts/exports.d.ts +3 -3
  40. package/dist/enum/exports.d.cts +1 -1
  41. package/dist/enum/exports.d.ts +1 -1
  42. package/dist/errors/exports.d.cts +1 -1
  43. package/dist/errors/exports.d.ts +1 -1
  44. package/dist/{getValidatorQueuedOperatorAddress-RW4OMcD1.d.ts → getValidatorQueuedOperatorAddress-CqR6cyqC.d.ts} +3 -3
  45. package/dist/{getValidatorQueuedOperatorAddress-Dstyaomr.d.cts → getValidatorQueuedOperatorAddress-DZgrPmZ2.d.cts} +3 -3
  46. package/dist/{global.d-wYu8G8IQ.d.ts → global.d-BeYWDreg.d.ts} +5 -4
  47. package/dist/{global.d-CN6l2b9E.d.cts → global.d-DghRxpHd.d.cts} +5 -4
  48. package/dist/hooks/exports.cjs +3 -3
  49. package/dist/hooks/exports.cjs.map +1 -1
  50. package/dist/hooks/exports.d.cts +63 -39
  51. package/dist/hooks/exports.d.ts +63 -39
  52. package/dist/hooks/exports.mjs +3 -3
  53. package/dist/hooks/exports.mjs.map +1 -1
  54. package/dist/{txnEnum-BlBYhNRl.d.cts → txnEnum-DxPRHSJt.d.cts} +1 -1
  55. package/dist/{txnEnum-BlBYhNRl.d.ts → txnEnum-DxPRHSJt.d.ts} +1 -1
  56. package/dist/types/exports.d.cts +3 -3
  57. package/dist/types/exports.d.ts +3 -3
  58. package/dist/{useHoneySwapState-D1DKG_Of.d.ts → useHoneySwapState-B494PQDl.d.ts} +1 -1
  59. package/dist/{useHoneySwapState-B-vmIP1b.d.cts → useHoneySwapState-D6vpv19r.d.cts} +1 -1
  60. package/dist/utils/exports.cjs +1 -1
  61. package/dist/utils/exports.cjs.map +1 -1
  62. package/dist/utils/exports.d.cts +2 -2
  63. package/dist/utils/exports.d.ts +2 -2
  64. package/dist/utils/exports.mjs +1 -1
  65. package/dist/utils/exports.mjs.map +1 -1
  66. package/package.json +9 -10
  67. package/src/abi/exports.ts +0 -27
  68. package/src/actions/bend/getConvertToAssets.ts +1 -1
  69. package/src/actions/bend/getMaxDeposit.ts +1 -1
  70. package/src/actions/dex/aggregators/bex.ts +2 -1
  71. package/src/actions/dex/aggregators/enso/enso.ts +3 -2
  72. package/src/actions/dex/aggregators/enso/ensoErc4626.debug.test.ts +2 -3
  73. package/src/actions/dex/aggregators/erc4626.ts +2 -1
  74. package/src/actions/dex/aggregators/fly.ts +2 -1
  75. package/src/actions/dex/aggregators/haiku.ts +2 -1
  76. package/src/actions/dex/aggregators/kyberswap.ts +2 -2
  77. package/src/actions/dex/aggregators/oogabooga.ts +2 -1
  78. package/src/actions/dex/aggregators/openOcean.ts +2 -1
  79. package/src/actions/dex/aggregators/wbera.ts +2 -1
  80. package/src/actions/dex/getVaultPausedState.ts +2 -1
  81. package/src/actions/enso/getEnsoUserTokensWithBalances.debug.test.ts +1 -1
  82. package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +2 -1
  83. package/src/actions/governance/__tests__/getDecodedFunctionData.integration.test.ts +66 -78
  84. package/src/actions/governance/__tests__/getQuorum.integration.test.ts +6 -7
  85. package/src/actions/governance/getDecodedFunctionData.ts +2 -2
  86. package/src/actions/governance/getProposalFromTx.ts +2 -1
  87. package/src/actions/governance/getProposalParams.ts +3 -2
  88. package/src/actions/governance/getQuorum.ts +2 -1
  89. package/src/actions/honey/getCollateralWeights.ts +2 -1
  90. package/src/actions/honey/getGlobalCapLimit.ts +2 -1
  91. package/src/actions/honey/getHoneyCollaterals.ts +2 -1
  92. package/src/actions/honey/getHoneyFees.ts +2 -1
  93. package/src/actions/honey/getHoneyPausedState.ts +2 -1
  94. package/src/actions/honey/getHoneyPreview.ts +2 -1
  95. package/src/actions/honey/getHoneyPythPriceOracle.ts +1 -1
  96. package/src/actions/honey/getHoneyRootPriceOracle.ts +2 -1
  97. package/src/actions/honey/getHoneyVaultsBalance.ts +3 -2
  98. package/src/actions/honey/getRelativeCapLimit.ts +2 -1
  99. package/src/actions/honey/getSharesWithoutFees.ts +3 -2
  100. package/src/actions/honey/getSwapPayload.ts +3 -2
  101. package/src/actions/honey/isBadCollateralAsset.ts +3 -2
  102. package/src/actions/honey/isBasketModeEnabled.ts +3 -2
  103. package/src/actions/pol/getBgtTokenTotalBoosts.ts +2 -1
  104. package/src/actions/pol/getLSTStakeConfig.ts +2 -1
  105. package/src/actions/pol/getRewardTokenToBeraRate.ts +2 -1
  106. package/src/actions/pol/getRewardVaultBeaconImplementation.ts +2 -1
  107. package/src/actions/pol/getRewardVaultDurationConstants.ts +2 -1
  108. package/src/actions/pol/getRewardVaultFromToken.ts +2 -1
  109. package/src/actions/pol/getRewardVaultIncentives.ts +2 -1
  110. package/src/actions/pol/getRewardVaultRewards.ts +2 -1
  111. package/src/actions/pol/getRewardVaultStakingToken.ts +1 -1
  112. package/src/actions/pol/getRewardVaults.ts +2 -1
  113. package/src/actions/pol/getSWBeraVaultMetadata.ts +2 -1
  114. package/src/actions/pol/getSWBeraWithdrawal.ts +2 -1
  115. package/src/actions/pol/getStakeWithdrawalCooldown.ts +1 -1
  116. package/src/actions/pol/getTotalStakedAmount.ts +2 -1
  117. package/src/actions/pol/getUserVaults.ts +2 -1
  118. package/src/actions/pol/getUserVaultsBalance.ts +2 -1
  119. package/src/actions/pol/getUserVaultsReward.ts +1 -1
  120. package/src/actions/pol/getVaultsSupply.ts +1 -1
  121. package/src/actions/pyth/getHoneyPythFeeds.ts +2 -1
  122. package/src/actions/transactions/beraWriteContract.integration.test.ts +48 -51
  123. package/src/actions/validators/getActiveBoostAndCommissionChangeDelay.ts +3 -2
  124. package/src/actions/validators/getBaselineRewardAllocation.ts +2 -1
  125. package/src/actions/validators/getDefaultRewardAllocation.ts +2 -1
  126. package/src/actions/validators/getUserBoostsOnValidator.ts +2 -1
  127. package/src/actions/validators/getValidatorCommission.ts +2 -1
  128. package/src/actions/validators/getValidatorOperatorAddress.ts +2 -1
  129. package/src/actions/validators/getValidatorQueuedCommission.ts +2 -1
  130. package/src/actions/validators/getValidatorQueuedOperatorAddress.ts +2 -1
  131. package/src/actions/validators/getValidatorQueuedRewardAllocation.ts +2 -1
  132. package/src/actions/validators/getValidatorRewardAllocation.ts +2 -1
  133. package/src/actions/validators/getValidatorRewardAllocatorAddress.ts +2 -1
  134. package/src/actions/validators/utils/__tests__/validatorUtils.integration.test.ts +10 -11
  135. package/src/errors/getRevertReason.integration.test.ts +115 -107
  136. package/src/hooks/dex/useAggregatorsRouterFeeBps.ts +2 -1
  137. package/src/hooks/dex/useCreatePool.ts +2 -1
  138. package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +2 -1
  139. package/src/hooks/governance/useGetPastVotes.ts +2 -1
  140. package/src/hooks/governance/useHasVoted.ts +2 -1
  141. package/src/hooks/governance/useIsCanceller.ts +2 -1
  142. package/src/hooks/governance/usePollProposalThreshold.ts +2 -1
  143. package/src/hooks/governance/usePollUserDelegates.ts +2 -1
  144. package/src/hooks/governance/useProposalSnapshot.ts +2 -1
  145. package/src/hooks/governance/useProposalState.ts +2 -1
  146. package/src/hooks/governance/useProposalTimelockState.ts +5 -4
  147. package/src/hooks/pol/useBgtUnstakedBalance.ts +2 -1
  148. package/src/hooks/pol/useOnChainRewardVault.ts +2 -1
  149. package/src/hooks/pol/useRewardVaultBalanceFromStakingToken.ts +2 -1
  150. package/src/hooks/pol/useRewardVaultFromToken.ts +2 -1
  151. package/src/hooks/pol/useStakedData.ts +169 -92
  152. package/src/hooks/validators/useOnChainValidator.ts +4 -3
  153. package/src/types/pol.d.ts +1 -0
  154. package/dist/chunk-3YXSUBA5.mjs +0 -2
  155. package/dist/chunk-A4UDYSB6.mjs +0 -4
  156. package/dist/chunk-A4UDYSB6.mjs.map +0 -1
  157. package/dist/chunk-CYKCYPFR.cjs +0 -2
  158. package/dist/chunk-CYKCYPFR.cjs.map +0 -1
  159. package/dist/chunk-ECRMUMTA.mjs +0 -2
  160. package/dist/chunk-ECRMUMTA.mjs.map +0 -1
  161. package/dist/chunk-F4BKSBEM.mjs +0 -2
  162. package/dist/chunk-F4BKSBEM.mjs.map +0 -1
  163. package/dist/chunk-FL2N3XHK.cjs +0 -2
  164. package/dist/chunk-FL2N3XHK.cjs.map +0 -1
  165. package/dist/chunk-MUCEYO3E.cjs +0 -4
  166. package/dist/chunk-MUCEYO3E.cjs.map +0 -1
  167. package/dist/chunk-P2Q7CMUD.cjs +0 -2
  168. package/dist/chunk-P2Q7CMUD.cjs.map +0 -1
  169. package/dist/chunk-PKXAW6MO.cjs +0 -2
  170. package/dist/chunk-Q3SCM6WL.mjs +0 -2
  171. package/dist/chunk-Q3SCM6WL.mjs.map +0 -1
  172. package/dist/chunk-TEBJWAVU.mjs +0 -2
  173. package/dist/chunk-TEBJWAVU.mjs.map +0 -1
  174. package/dist/chunk-VP7XUOSI.cjs +0 -2
  175. package/dist/chunk-VP7XUOSI.cjs.map +0 -1
  176. package/dist/pythWrapper-CBjsmmsK.d.cts +0 -1958
  177. package/dist/pythWrapper-CBjsmmsK.d.ts +0 -1958
  178. package/src/abi/bend/metaMorpho.ts +0 -2584
  179. package/src/abi/bend/morpho.ts +0 -444
  180. package/src/abi/bex/aggregatorsRouter.ts +0 -492
  181. package/src/abi/bex/balancerComposableStablePoolFactoryV6.ts +0 -283
  182. package/src/abi/bex/balancerPoolCreationHelper.ts +0 -267
  183. package/src/abi/bex/balancerVault.ts +0 -757
  184. package/src/abi/governance/governance.ts +0 -1016
  185. package/src/abi/governance/governanceTimelock.ts +0 -589
  186. package/src/abi/honey/collateralVault.ts +0 -1144
  187. package/src/abi/honey/honey.ts +0 -563
  188. package/src/abi/honey/honeyFactory.ts +0 -1270
  189. package/src/abi/honey/honeyFactoryReader.ts +0 -894
  190. package/src/abi/honey/honeyRootOracle.ts +0 -492
  191. package/src/abi/honey/pythPriceOracle.ts +0 -619
  192. package/src/abi/honey/pythWrapper.ts +0 -446
  193. package/src/abi/pol/LSTStakerVault.ts +0 -2032
  194. package/src/abi/pol/beaconDeposit.ts +0 -595
  195. package/src/abi/pol/beraChef.ts +0 -1019
  196. package/src/abi/pol/bgt.ts +0 -1008
  197. package/src/abi/pol/bgtIncentiveDistributor.ts +0 -640
  198. package/src/abi/pol/bgtStaker.ts +0 -1034
  199. package/src/abi/pol/rewardAllocationFactory.ts +0 -408
  200. package/src/abi/pol/rewardVault.ts +0 -1928
  201. package/src/abi/pol/rewardVaultFactory.ts +0 -586
  202. package/src/abi/pol/rewardVaultHelper.ts +0 -882
  203. package/src/abi/pol/stakeBeraVault.ts +0 -1116
  204. package/src/abi/pol/stakeBeraVaultWithdrawalRequest.ts +0 -618
  205. package/src/abi/pol/wbera.ts +0 -366
@@ -1,4 +1,4 @@
1
- import{a as O,b as Ve,c as ue,d as We}from"../chunk-TEBJWAVU.mjs";import{$ as pr,Aa as Or,B as Ft,Ba as Lr,C as Kt,Ca as Ur,D as qt,Da as Nr,Ea as Hr,F as $t,Fa as Vr,G as ge,Ga as Wr,H as zt,Ha as Mr,I as Qe,Ia as _r,J as jt,K as Jt,L as ye,M as er,O as tr,P as rr,Q as or,R as sr,S as ar,U as nr,V as ir,W as he,X as lr,Y as Re,Z as we,_ as ur,a as xt,ba as mr,c as j,ca as dr,da as cr,e as I,ea as fr,f as Bt,fa as gr,g as fe,ga as yr,h as Dt,ha as Ar,i as Ot,ia as br,ja as hr,k as Lt,ka as ke,l as Ut,la as Rr,m as Nt,n as Ht,na as kr,o as U,oa as Pr,pa as Cr,qa as Tr,r as Vt,ra as Ir,s as Wt,sa as Sr,t as Mt,ua as Er,v as _t,w as Qt,wa as xr,x as Yt,xa as vr,y as Gt,ya as Br,z as $,za as Dr}from"../chunk-A4UDYSB6.mjs";import{b as ne,c as Q,h as It,i as K,j as Y,k as pe,l as St,m as Et}from"../chunk-Q3SCM6WL.mjs";import{c as N,e as Ye,g as X,l as v,m as Qr}from"../chunk-55L7STYD.mjs";import{a as me,c as J}from"../chunk-7SMWQ6SN.mjs";import"../chunk-NAXAZJJY.mjs";import"../chunk-YXLFOEZN.mjs";import"../chunk-OGJMSGB2.mjs";import"../chunk-575OK77P.mjs";import{c as wr}from"../chunk-7WRTK7RJ.mjs";import{a as vt,b as q,c as g,d as G,e as Me,f as be}from"../chunk-2LL3P5PN.mjs";import{b as Pe,c as Yr}from"../chunk-3YXSUBA5.mjs";import{a as S,d as de,j as _e,k as Zt,l as Xt,m as Ae}from"../chunk-ECRMUMTA.mjs";import"../chunk-C3FHGFLK.mjs";import{a as k,b as L,d as ce,e as h}from"../chunk-THATXCJK.mjs";import{f as x,g as Z,h as D}from"../chunk-AX2YQQFQ.mjs";import ms from"swr";import{usePublicClient as ds}from"@berachain/wagmi/hooks";var Gr=({sharesAmount:e,vaultAddress:t,vaultChainId:r},o)=>{let s=ds({chainId:r}),a=ms(s&&e&&t?["useGetConvertToAssets",e,t,r]:null,async([i,n,l])=>(g(s),xt({sharesAmount:n,vaultAddress:l,publicClient:s})),{...o?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as zs}from"react";import{zeroAddress as Zs}from"viem";import{defaultChainId as js}from"@berachain/config/internal";import{useBeraWallet as Js,usePublicClient as Xs}from"@berachain/wagmi/hooks";import{Slippage as cs,Swap as fs,SwapKind as gs,Token as Fr,TokenAmount as ys}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as As,formatEther as Kr,zeroAddress as bs}from"viem";import{getUriFromLink as hs}from"@berachain/config";import{ChainId as qr}from"@berachain/config/internal";var Rs=300,ws=.05,Ge=gs.GivenIn,Fe=class extends I{name="Hub Pools";supportedChains=[qr.MAINNET,qr.BEPOLIA];url=hs(this.config.api);type="graphql";convertZeroToWrapped(t){return h(t,"BERA")?this.config.tokens.wbera:t}calculatePriceImpact(t){return t.error?(console.error("Swap price impact error",t),0):Number(t.priceImpact)}checkStalePrices({onChainAmount:t,sorPaths:r,sorAmount:o,queryData:s}){let a=Number.parseFloat(Kr(t.scale18))/Number.parseFloat(o);if(Math.abs(1-a)>ws){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let i=new x({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%",extra:{deltaFromSorAmount:a,pools:r.map(n=>n.pools),onChainAmount:Kr(t.scale18),sorAmount:o,queryData:s},fingerprint:["SOR_STALE_PRICES"]});be.captureException(i)}}async getQuote(t){let r=new Bt(this.url,this.chainId),{tokenIn:o,tokenOut:s,amount:a,slippage:i,account:n=bs,publicClient:l}=t;this.assertChainSupport({tokenIn:o,tokenOut:s}),g(l);let u=h(o,"BERA")||h(s,"BERA"),m=new Fr(this.chainId,this.convertZeroToWrapped(o.address),o.decimals),p=new Fr(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),c=ys.fromRawAmount(m,a),{paths:d,priceImpact:f,returnAmount:y}=await r.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:m.address,tokenOut:p.address,swapKind:Ge,swapAmount:c});if(!d?.length)throw new Z({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:I.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:m.address,tokenOut:p.address,swapKind:Ge,swapAmount:c},message:"No swap paths returned from Balancer API"});let A=new fs({chainId:this.chainId,paths:d,swapKind:Ge,userData:"0x"}),R=await A.query(l.transport.url);if(!("expectedAmountOut"in R))throw new Error("No Bex paths found");return this.checkStalePrices({onChainAmount:R.expectedAmountOut,sorPaths:d,sorAmount:y,queryData:t}),{amountOut:R.expectedAmountOut.amount.toString(),amountIn:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:o,rawAmount:a,spender:R.to}),name:this.name,priceImpactPercentage:this.calculatePriceImpact(f),swapFeeBps:0,getCalldata:({account:w})=>{let b=A.buildCall({slippage:cs.fromPercentage(i.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+Rs),queryOutput:R,sender:w,recipient:w,wethIsEth:u}),{args:C,functionName:P}=As({abi:ne,data:b.callData});return{params:C,functionName:P,abi:ne,address:b.to,value:b.value||BigInt(0)}}}}},Ke=new Fe;import{ChainId as $r}from"@berachain/config/internal";var qe=class extends I{name="RedeemBgt";supportedChains=[$r.MAINNET,$r.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:r}){return super.checkChainSupport({tokenIn:t,tokenOut:r})?t.chainId===r.chainId&&h(t,"BGT",{chainId:t.chainId})&&h(r,"BERA"):!1}async getQuote({tokenIn:t,amount:r}){if(this.assertChainSupport({tokenIn:t,tokenOut:{...L,chainId:t.chainId}}),!h(t,"BGT",{config:this.config}))throw new D({property:"tokenIn",value:t,expected:"BGT",level:"warning"});return{amountOut:r,amountIn:r,allowanceRequirements:[],name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},zr=new qe;import{zeroAddress as Zr}from"viem";import{ChainId as jr}from"@berachain/config/internal";var $e=class extends I{name="Enso";supportedChains=[jr.MAINNET];type="rest";needsAccountForQuote=!0;notFoundMessages=["Could not build shortcuts for route","Could not quote shortcuts for route","Swap not found for a required underlying of defi route,","No route found from"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,account:a=Zr,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l}){this.assertChainSupport({tokenIn:t,tokenOut:r});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,r.address),d=this.getAmountAfterFees(o,i);this.url=n?"/api/aggregators?aggregator=enso":`${this.config.bex.aggregatorsProxyUrl}/enso/api/v1/shortcuts/route?`;let f=new URL(this.url);f.searchParams.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),f.searchParams.set("receiver",this.config.bex.aggregatorsRouterExecutor),f.searchParams.set("spender",this.config.bex.aggregatorsRouterExecutor),f.searchParams.set("amountIn",d),f.searchParams.set("tokenIn",u),f.searchParams.set("tokenOut",m),f.searchParams.set("chainId",jr.MAINNET.toString()),f.searchParams.set("slippage",(Number(s)*100).toString()),f.searchParams.set("refundReceiver",a);let A=await(await this.fetch(f)).json(),R=this.getInputData({tokenIn:u,amountIn:o,isNative:p}),w={tokenOut:m,receiver:a,minAmountOut:this.getMinAmountOut(A.amountOut.toString(),s),isNative:c},b={aggregator:A.tx?.to,data:A.tx?.data};return{amountOut:A.amountOut.toString(),amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i,getCalldata:()=>({params:[R,w,b,{rewardVault:l??Zr,isSwapAndStake:!!l}],functionName:"swap",abi:O,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter})}}},ze=new $e;import{erc4626Abi as Jr,formatUnits as ks}from"viem";var Ze=class extends I{name="Mint";supportedChains=null;type="rpc";checkChainSupport({tokenIn:t,tokenOut:r,underlyingToken:o}){return super.checkChainSupport({tokenIn:t,tokenOut:r,underlyingToken:o})&&!!o&&o?.chainId===r.chainId&&(h(o,t)||h(t,"BERA")&&h(r,"SWBERA"))}async getQuote({tokenIn:t,tokenOut:r,amount:o,underlyingToken:s,publicClient:a}){this.assertChainSupport({tokenIn:t,tokenOut:r,underlyingToken:s}),q(s,"underlyingToken"),g(a);let i=await a.readContract({address:r.address,abi:Jr,functionName:"convertToShares",args:[BigInt(o)]}),n=h(r,"SWBERA")&&h(t,"BERA");return{amountOut:i.toString(),amountIn:o,allowanceRequirements:n?[]:[{token:t,spender:r.address,amount:{raw:o,formatted:ks(BigInt(o),t.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>n?{abi:Et,address:r.address,functionName:"depositNative",params:[BigInt(o),l],value:BigInt(o)}:{abi:Jr,address:r.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(o),l],value:0n}}}},je=new Ze;import{zeroAddress as Ps}from"viem";import{ChainId as Cs}from"@berachain/config/internal";var Xr="https://api.fly.trade/aggregator",Je=class extends I{name="Fly";supportedChains=[Cs.MAINNET];type="rest";notFoundMessages=["Couldn't recognize to token","Couldn't recognize from token","There is not enough liquidity. Amount is too high.","Routes were not found"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,account:a,aggregatorsFeeBps:i,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:r});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,r.address),c=this.getAmountAfterFees(o,i),d=new URL(`${Xr}/quote`);this.url=d.toString();let f=new URLSearchParams({fromTokenAddress:l,toTokenAddress:u,sellAmount:c,slippage:(s/100).toString(),gasless:"false",network:"berachain"});f.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),f.set("toAddress",this.config.bex.aggregatorsRouterExecutor),d.search=f.toString();let A=await(await this.fetch(d)).json(),R={amountOut:A.amountOut,amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i??0},w=new URL(`${Xr}/transaction`);this.url=w.toString();let b=new URLSearchParams({quoteId:A.id,estimateGas:"false"});w.search=b.toString();let P=await(await this.fetch(w)).json();return{...R,getCalldata:({account:T})=>{let E=this.getInputData({tokenIn:l,amountIn:o,isNative:m}),B={tokenOut:u,receiver:T,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},V={aggregator:P?.to,data:P?.data};return{params:[E,B,V,{rewardVault:n??Ps,isSwapAndStake:!!n}],functionName:"swap",abi:O,value:h(t,"BERA")?BigInt(o):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},Xe=new Je;import{formatUnits as Ts,parseUnits as Is,zeroAddress as Ss}from"viem";import{ChainId as Es}from"@berachain/config/internal";var et=class extends I{name="Haiku";supportedChains=[Es.MAINNET];type="rest";notFoundMessages=["token not found","Token is not supported","No route found for the given input or the liquidity is not enough","Invalid input amount. Please ensure the total amount of input is greater than 0.001 USD"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,referrer:n,rewardVault:l}){if(t.decimals===void 0||r.decimals===void 0)throw new x({message:"Missing required params",level:"error"});this.assertChainSupport({tokenIn:t,tokenOut:r});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,r.address),d=this.getAmountAfterFees(o,a),f={intent:{allowancesMode:"approve",slippage:s/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${u}`]:Ts(BigInt(d),t.decimals)},target_weights:{[`bera:${m}`]:1}}},y=n==="ZAP"?"zap-haiku":"haiku";this.url=i?"/api/aggregators?aggregator=haikuQuote":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/quoteIntent`;let R=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)})).json(),w={amountOut:Is(R.balances[0].amount,r.decimals).toString(),amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:a};this.url=i?"/api/aggregators?aggregator=haikuSolve":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/solveIntent`;let C=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({quoteId:R.quoteId})})).json();return{...w,getCalldata:({account:P})=>{let T=this.getInputData({tokenIn:u,amountIn:o,isNative:p,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),E={tokenOut:m,receiver:P,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:c},B={aggregator:C.to,data:C.data};return{params:[T,E,B,{rewardVault:l??Ss,isSwapAndStake:!!l}],functionName:"swap",abi:O,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},tt=new et;import{formatUnits as eo}from"viem";import{ChainId as xs}from"@berachain/config/internal";function vs(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var rt=class extends I{name="Honey";supportedChains=[xs.MAINNET];type="rpc";honeyToken=ce(this);isHoneyNativeSwap({tokenIn:t,tokenOut:r,honeyNativeState:o,...s}){if(!o?.collateralList)return!1;let a=h(r,"HONEY",s),i=h(t,"HONEY",s);return!a&&!i?!1:o.collateralList.some(n=>h(n.address,a?t:r))}checkChainSupport({tokenIn:t,tokenOut:r,honeyNativeState:o}){return super.checkChainSupport({tokenIn:t,tokenOut:r})&&t.chainId===r.chainId&&this.isHoneyNativeSwap({tokenIn:t.address,tokenOut:r.address,honeyNativeState:o})}async getQuote({tokenIn:t,tokenOut:r,amount:o,publicClient:s,account:a,honeyNativeState:i}){let{collateralList:n}=i??{};if(!n)throw new D({message:"Invalid Honey Context state",property:"collaterals",value:n,expected:"TokenWithOrder[]"});g(s),this.assertChainSupport({tokenIn:t,tokenOut:r});let l=h(r,this.honeyToken),u=n,m=n.find(T=>h(T.address,l?t.address:r.address));if(!m)throw new x({message:"This collateral is not part of the Honey protocol"});let[p,c]=await Promise.all([ge({client:s,collateralList:[m]}),ye({client:s,isMint:l,collateralList:n,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new x({message:"Failed to fetch the Honey vault balances"});if(c)return;let d=p[0],f=m.order;u.length>1&&f!==0&&(u.splice(f,1),u.unshift(m));let y=eo(BigInt(o),l?m.decimals:this.honeyToken.decimals),A={client:s,collateral:m,collateralList:n,amount:y,method:vs(l),latestPrices:void 0,isPythWrapperEnabled:!1},R=await $t(A);if(!R)throw new x({message:"Failed to fetch the Honey preview"});let{honey:w,collaterals:b}=R;if(!(l?!0:new S(d?.balance.formatted??"0").gte(eo(b[m.address],m.decimals))))return;let P=await Jt({state:{actionType:l?"mint":"redeem",fromAmount:[y],collaterals:u,isBasketModeEnabled:!1},collateralList:u,publicClient:s,priceFeedMap:void 0,isPythWrapperEnabled:!1});if(!P&&a)throw new x({message:"Failed to fetch the Honey swap payload"});return{amountIn:o,amountOut:l?w.toString():b[m.address].toString(),allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:"Honey",swapFeeBps:0,getCalldata:({account:T})=>P({account:T})}}},ot=new rt;import{zeroAddress as to}from"viem";import{ChainId as Bs}from"@berachain/config/internal";var st=class extends I{name="KyberSwap";supportedChains=[Bs.MAINNET];type="rest";notFoundMessages=["token not found","route not found","amountIn is greater than max allowed"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,account:a=to,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l}){this.assertChainSupport({tokenIn:t,tokenOut:r});let{isTokenInNative:u,isTokenOutNative:m,tokenInAddress:p,tokenOutAddress:c}=this.parseAddresses(t.address,r.address),d=this.getAmountAfterFees(o,i);this.url=n?"/api/aggregators?aggregator=kyberswapRoutes":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/routes`;let f=new URL(this.url);f.searchParams.set("tokenIn",p),f.searchParams.set("tokenOut",c),f.searchParams.set("amountIn",d),f.searchParams.set("slippageTolerance",(s/100).toString()),f.searchParams.set("to",this.config.bex.aggregatorsRouterExecutor),f.searchParams.set("clientData",JSON.stringify({source:"berachain"}));let A=await(await this.fetch(f)).json(),R={amountOut:A.data.routeSummary.amountOut,amountIn:o,name:this.name,swapFeeBps:i,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter})},w={routeSummary:A.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:s*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},b=f.searchParams.entries(),C=new URL(n?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[B,V]of b)C.searchParams.set(B,V);let T=await(await this.fetch(C,{method:"POST",body:JSON.stringify(w)})).json(),E=this.getInputData({tokenIn:p,amountIn:o,isNative:u});return{...R,getCalldata:({account:B})=>{let V={tokenOut:c,receiver:B,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:m},F={aggregator:T.data.routerAddress,data:T.data.data};return{params:[E,V,F,{rewardVault:l??to,isSwapAndStake:!!l}],functionName:"swap",abi:O,value:BigInt(u?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},at=new st;import{zeroAddress as Ds}from"viem";import{ChainId as Os}from"@berachain/config/internal";var nt=class extends I{name="Oogabooga";supportedChains=[Os.MAINNET];type="rest";async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:r});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,r.address),c=this.getAmountAfterFees(o,a),d=new URLSearchParams({tokenIn:l,tokenOut:u,amount:c,slippage:(s/100).toString(),to:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter});this.url=i?`/api/aggregators?aggregator=oogabooga&${d.toString()}`:`${this.config.bex.aggregatorsProxyUrl}/oogabooga/v1/swap?${d.toString()}`;let y=await(await this.fetch(this.url)).json(),A={amountOut:y.assumedAmountOut,amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,spender:this.config.bex.aggregatorsRouter,rawAmount:o}),name:this.name,priceImpactPercentage:y.priceImpact,swapFeeBps:a};return{...A,getCalldata:({account:R})=>{let w=this.getInputData({tokenIn:l,amountIn:o,isNative:m}),b={tokenOut:u,receiver:R,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},C={aggregator:y.tx?.to,data:y.tx?.data};return{params:[w,b,C,{rewardVault:n??Ds,isSwapAndStake:!!n}],functionName:"swap",abi:O,value:BigInt(m?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},it=new nt;import{zeroAddress as ro}from"viem";import{ChainId as oo}from"@berachain/config/internal";var lt=class extends I{name="OpenOcean";supportedChains=[oo.MAINNET];type="rest";url="https://open-api.openocean.finance/v4/bera/swap";notFoundMessages=["No avail liquidity for the pair"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,account:a=ro,aggregatorsFeeBps:i,publicClient:n,rewardVault:l}){if(g(n),!t.decimals)throw new D({property:"tokenIn.decimals",value:t.decimals,expected:"number",chainId:this.chainId});this.assertChainSupport({tokenIn:t,tokenOut:r});let u=this.getAmountAfterFees(o,i),{tokenInAddress:m,tokenOutAddress:p,isTokenInNative:c,isTokenOutNative:d}=this.parseAddresses(t.address,r.address),f=(await n.getGasPrice()).toString(),y=new URLSearchParams({chain:oo.MAINNET.toString(),inTokenAddress:m,outTokenAddress:p,amountDecimals:u,slippage:s<.01?"0.01":s.toString(),account:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter,gasPrice:f}),A=await this.fetch(`${this.url}?${y.toString()}`),R=await A.json();if(R.code!==200||!R.data){let b=this.notFoundMessages.some(C=>R.error.includes(C));throw new Z({response:A,endpoint:{url:this.url,name:this.name,type:this.type},cause:R,reason:b?I.PATH_NOT_FOUND_REASON:R.error})}let w={amountOut:R.data.outAmount,amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i};return{...w,getCalldata:({account:b})=>{let C=this.getInputData({tokenIn:m,amountIn:o,isNative:c}),P={tokenOut:p,receiver:b,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:d},T={aggregator:R.data.to,data:R.data.data};return{params:[C,P,T,{rewardVault:l??ro,isSwapAndStake:!!l}],functionName:"swap",abi:O,value:BigInt(c?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},ut=new lt;import{ChainId as so}from"@berachain/config/internal";var pt=class extends I{name="Wrap";supportedChains=[so.MAINNET,so.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:r}){return t.chainId!==r.chainId||!super.checkChainSupport({tokenIn:t,tokenOut:r})?!1:h(t,"BERA")&&h(r,"WBERA")||h(t,"WBERA")&&h(r,"BERA")}async getQuote({tokenIn:t,tokenOut:r,amount:o}){this.assertChainSupport({tokenIn:t,tokenOut:r});let s=h(t,"BERA")&&h(r,"WBERA");return{amountOut:o,amountIn:o,allowanceRequirements:[],name:s?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,getCalldata:()=>s?{abi:We,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(o)}:{abi:We,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(o)],value:BigInt(0)}}}},mt=new pt;import Ls from"swr/immutable";import{zeroAddress as Us}from"viem";import{usePublicClient as Ns}from"@berachain/wagmi/hooks";var Ce=()=>{let e=Ns(),{config:t}=k({chainId:e.chain?.id}),r=Ls(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==Us?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,o])=>{let s=await e.readContract({address:o,abi:O,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...r,refresh:r.mutate}};import Ws from"swr/immutable";import{useConfig as Ms}from"@berachain/wagmi/hooks";import{getPublicClient as Hs}from"@wagmi/core";import{erc4626Abi as Vs}from"viem";async function ao({token:e,wagmiConfig:t}){try{if(h(e,"BERA"))return null;let r=Hs(t,{chainId:e.chainId});g(r);let o=await r.readContract({address:e.address,abi:Vs,functionName:"asset"});return await $({address:o,publicClient:r,chainId:e.chainId})}catch(r){let o=vt({cause:r});if(o.reason==='The contract function "asset" reverted.')return null;throw o}}function no({token:e}){let t=Ms();return Ws(e&&t&&!h(e,"BERA")?["useUnderlyingAsset",e]:null,async([,r])=>ao({token:r,wagmiConfig:t}))}import _s from"swr";import{parseUnits as Qs,zeroAddress as Ys}from"viem";import{useBeraWallet as Gs,usePublicClient as Fs}from"@berachain/wagmi/hooks";var io="useAggregatorsQuotes";function Ks({aggregator:e,account:t,args:r,feeBps:o,options:s,activeAggregators:a,isMAEnabled:i}){if(s?.opts?.isEnabled!==void 0&&!s?.opts?.isEnabled||!Number(r.amount)||!e.checkChainSupport({tokenIn:r.tokenIn,tokenOut:r.tokenOut,underlyingToken:r.underlyingToken,honeyNativeState:r.honeyNativeState}))return null;let n=e.name,l=!["Hub Pools","Honey","Wrap","Unwrap","Mint"].includes(n);if(!i&&l)return null;let{tokenIn:u,tokenOut:m,amount:p,slippage:c,referrer:d,rewardVault:f}=r,y=Qs(p,u.decimals).toString();if(!(e.name==="Wrap"||e.name==="RedeemBgt"||e.name==="Honey"||!a||a.includes(n.toLowerCase().replaceAll(" ","")))||e.name==="Honey"&&r.honeyNativeState?.protocol.isPaused)return null;let R=e.name==="Mint"||e.name==="Enso (Mint)";return l&&o===void 0?null:[io,n,u,m,y,c,e.needsAccountForQuote?t:void 0,l?o:0,d,f,R?r.underlyingToken:void 0,e.name==="Honey"?r.honeyNativeState?.collateralList:void 0]}function qs({aggregator:e,publicClient:t,proxyAggregatorsThroughVercel:r}){return async([,,o,s,a,i,n,l,u,m,p,c])=>e.getQuote({tokenIn:o,tokenOut:s,amount:a,slippage:i,account:n,aggregatorsFeeBps:l,publicClient:t,proxyAggregatorsThroughVercel:r,referrer:u,rewardVault:m,underlyingToken:p,honeyNativeState:{collateralList:c??[]}})}function H({feeBps:e,publicClient:t,account:r,proxyAggregatorsThroughVercel:o,activeAggregators:s,isMAEnabled:a,...i},n){return _s(Ks({aggregator:i.aggregator,account:r,args:i,feeBps:e,options:n,activeAggregators:s,isMAEnabled:a}),qs({aggregator:i.aggregator,proxyAggregatorsThroughVercel:o,publicClient:t}),n?.opts)}function dt(e){return{refreshInterval:1e4,errorRetryCount:3,...e?.opts,onErrorRetry(t,r,o,s,a){if(e?.opts?.onErrorRetry?.(t,r,o,s,a),!(t instanceof x&&t.reason===I.PATH_NOT_FOUND_REASON)){if(t instanceof Z&&t.statusCode===403){console.warn(r[1],"returned error 403, stopping retries");return}a.retryCount>(o.errorRetryCount??3)||setTimeout(()=>{s()},o.errorRetryInterval??Ae(10))}}}}function $s(e,t){let{address:r}=Gs(),o=N("proxyAggregatorsThroughVercel"),s=N("aggregators"),a=Fs(),{data:i}=Ce();if(e.aggregator.name!=="Wrap"&&!((h(e.tokenIn.address,"BERA")||h(e.tokenIn.address,"WBERA"))&&(h(e.tokenOut.address,"BERA")||h(e.tokenOut.address,"WBERA"))))return null;let{config:n}=k(e),l=n.bex.aggregatorsRouter!==Ys;return H({...e,aggregator:e.aggregator,feeBps:i,activeAggregators:s,account:r,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:o},{...t,opts:dt(t)})}var ea=[it,Xe,at,ut,tt,ze,Ke,ot,je];function Fc(e,t){let{address:r}=Js(),o=N("proxyAggregatorsThroughVercel"),s=N("aggregators"),a=Xs(),{data:i}=Ce(),n=(h(e.tokenIn.address,"BERA")||h(e.tokenIn.address,"WBERA"))&&(h(e.tokenOut.address,"BERA")||h(e.tokenOut.address,"WBERA")),l=h(e.tokenIn.address,"BGT",{chainId:js}),{data:u}=no({token:e.tokenOut}),m=n||l,{config:p}=k(e),c=p.bex.aggregatorsRouter!==Zs,d=dt(t),f={activeAggregators:s,isMAEnabled:c,underlyingToken:u,isNativeSwap:m,account:r,publicClient:a,proxyAggregatorsThroughVercel:o,feeBps:i},y=H({...f,...e,aggregator:it},{opts:d}),A=H({...f,...e,aggregator:Xe},{opts:d}),R=H({...f,...e,aggregator:je},{opts:d}),w=H({...f,...e,aggregator:at},{opts:d}),b=H({...f,...e,aggregator:ut},{opts:d}),C=H({...f,...e,aggregator:tt},{opts:d}),P=H({...f,...e,aggregator:ze},{opts:d}),{protocol:T}=Ye(),E=H({...f,...e,aggregator:Ke},{opts:{...d,isEnabled:T.isPaused===!1}}),B=H({...f,...e,aggregator:mt}),V=H({...f,...e,aggregator:zr},{opts:d}),F=H({...f,...e,aggregator:ot},{opts:d}),W=n?[B]:l?[V]:[y,R,A,w,b,C,P,F,T.isPaused===!1?E:null].filter(z=>z!==null);return{...zs(()=>{let z=W.reduce((_,He)=>_||He.error,void 0),le=W.map((_,He)=>_.isLoading?m?mt.name:ea[He].name:null).filter(Boolean),Tt=W.filter(_=>_!==void 0&&!_.isLoading&&!_.error&&_.data?.amountOut).map(({data:_})=>_),ps=Tt.length===0&&le.length>0;return{quotes:Tt,loadingAggregatorsNames:le,isLoading:ps,error:z}},[W]),refresh:()=>W.map(z=>z.mutate())}}import ta from"swr";var ra=({query:e}={})=>["useAllUserPools",e],lo=(e,t)=>{let r=ta(ra({query:e}),async([o,s])=>fe({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>{r.mutate()}}};import oa from"swr";import{isAddress as sa}from"viem";var aa=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function uo({poolId:e,account:t}){let r=oa(aa({poolId:e,account:t}),async([,o,s])=>{if(s&&!sa(s))throw new D({property:"account",value:s,expected:"Address"});return Dt({poolId:o,account:s})},{refreshInterval:1e5});return{...r,refresh:()=>{r.mutate()}}}import{useMemo as fo}from"react";import{PoolType as Te}from"@berachain-foundation/berancer-sdk";import ia from"swr/immutable";import{formatUnits as la,keccak256 as ua,parseUnits as Ie,zeroAddress as ft}from"viem";import{GetDedupedSubgraphPools as pa}from"@berachain/graphql/dex/subgraph";import{PoolType as po}from"@berachain-foundation/berancer-sdk";import{formatUnits as na}from"viem";var ct=e=>[...e].sort((t,r)=>t.address.toLowerCase().localeCompare(r.address.toLowerCase())),mo=e=>e.length===0?"":ct(e).map(t=>t.symbol).join(" | "),co=(e,t,r)=>{let o;switch(r){case po.ComposableStable:o="STABLE";break;default:o=r.toString().toUpperCase();break}return r===po.Weighted?t.length===0?"":`${ct(e).map((s,a)=>{let i=t[a];return`${(Number.parseFloat(na(i,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${o}`:`${ct(e).map(s=>s.symbol).join("-")}-${o}`};var ma=.005,da=(r=>(r.None="None",r.Custom="Custom",r))(da||{}),ca=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,swapFeePercentage:o,salt:s,poolName:a,poolSymbol:i,owner:n,amplification:l,oracles:u,message:m,actionType:p,gasLimit:c=_e})=>{let d=t.map(P=>P.address.toLowerCase()).sort((P,T)=>P<T?-1:1),f=d.map(P=>{let T=r.find(W=>W.address.toLowerCase()===P||h(P,"WBERA")&&h(W.address,"BERA")),E=T?Ie(T.amount,T.decimals):0n,B=u.find(W=>W.tokenAddress.toLowerCase()===P.toLowerCase()),V=B?B.address:ft,F=BigInt(B?B.cacheDuration:100);return{amountIn:E,rateProvider:V,cacheDuration:F}}),y=f.map(P=>P.amountIn),A=f.map(P=>P.rateProvider),R=f.map(P=>P.cacheDuration),w=r.findIndex(P=>h(P.address,"BERA")),b=w!==-1?Ie(r[w].amount,r[w].decimals):0n,C=b>0n;return{address:e,abi:Ve,functionName:"createAndJoinStablePool",params:[a,i,d,BigInt(l),A,R,!1,o,y,n,s,C],message:m,actionType:p,value:b,gasLimit:c,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:i}}}},fa=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,normalizedWeights:o,swapFeePercentage:s,salt:a,poolName:i,poolSymbol:n,owner:l,message:u,actionType:m,gasLimit:p=_e})=>{let c=[],d=[],f=[],y=[];t.map((w,b)=>({createToken:w.address,joinToken:r[b].address,weight:o[b],amountIn:Ie(r[b].amount,r[b].decimals)})).sort((w,b)=>w.createToken.toLowerCase()<b.createToken.toLowerCase()?-1:1).forEach(w=>{c.push(w.createToken),d.push(w.joinToken),f.push(w.weight),y.push(w.amountIn)});let A=d.indexOf(ft),R=A!==-1?y[A]:0n;return{address:e,abi:Ve,functionName:"createAndJoinWeightedPool",params:[i,n,c,d,f,Array(c.length).fill(ft),s,y,l,a],message:u,actionType:m,value:R,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:i,poolSymbol:n}}}},Af=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,poolType:o,poolName:s,poolSymbol:a,swapFee:i,owner:n,amplification:l,oracles:u,weightsDuplicationThreshold:m=ma,...p})=>{let{data:c,error:d,isLoading:f}=ia(["useCreatePool__deduped_pool",e,o,r],async()=>{if(e.length===0||!o)return null;let w=j("bex.subgraph",{});try{let b=Pe(e).map(T=>T.address.toLowerCase()).sort((T,E)=>T.toLowerCase()<E.toLowerCase()?-1:1);return(await w.query({query:pa,variables:{tokens:b,type:o}})).data.pools.filter(T=>T.tokens?.every(E=>o===Te.Weighted?b.includes(E.address)&&Math.abs(Number(E.weight)-Number(la(r[b.indexOf(E.address)],18)))<m:b.includes(E.address)||E.address===T.address))?.at(0)??null}catch{return null}}),{generatedPoolName:y,generatedPoolSymbol:A}=fo(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let w=mo(e),b=co(e,r,o);return{generatedPoolName:w,generatedPoolSymbol:b}},[e,r,o]),R=fo(()=>{if(!n||s===""||a===""||e.length!==t.length||e.length===0)return null;let w=Ie(i.toString(),16),b=ua(Buffer.from(`${s}-${n}`)),{config:C}=k(p);return o===Te.Weighted?fa({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,swapFeePercentage:w,salt:b,poolName:s,poolSymbol:a,owner:n,message:`Create pool ${s}`,actionType:"Create Pool"}):o===Te.ComposableStable||o===Te.MetaStable?ca({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,swapFeePercentage:w,salt:b,poolName:s,poolSymbol:a,owner:n,amplification:l,oracles:u,message:`Create pool ${s}`,actionType:"Create Pool"}):null},[e,t,r,o,i,s,a,n,l,u]);return{generatedPoolName:y,generatedPoolSymbol:A,isDupePool:!!c,dupePool:c,createPoolArgs:R,isLoadingPools:f,errorLoadingPools:d}};import ha from"swr";import{usePublicClient as Ra}from"@berachain/wagmi/hooks";import{erc20Abi as ga,formatUnits as ya}from"viem";import{GetExploitedTokens as Aa}from"@berachain/graphql/dex/subgraph";var ba=1e-4;async function go({token:e,publicClient:t,...r}){let o=j("bex.subgraph",r),s=await t.readContract({address:e.address,abi:ga,functionName:"totalSupply"}),a=S(ya(s,e.decimals)).multipliedBy(ba),{data:i}=await o.query({query:Aa,variables:{token:e.address,balance:a.toFixed()}});return i.userInternalBalances.length>0}var wa=e=>{let t=e?.filter(r=>r.address);return!t||t.length===0?null:["useExploitedTokens",t]},Ef=({tokens:e})=>{let t=wa(e),r=Ra(),o=ha(r?t:null,async([,s])=>(g(r),(await Promise.all(s.map(i=>go({token:i,publicClient:r})))).reduce((i,n,l)=>(n!==void 0&&(i[s[l].address]=n),i),{})));return{...o,refresh:()=>o.mutate()}};import ka from"swr";var Pa=()=>{let e=ka("useGlobalLiquidityAndSwapVolume",async()=>Ot());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Ca,useState as Ta}from"react";import{PoolType as ie}from"@berachain-foundation/berancer-sdk";var Ia=.05,Nf=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:r,tokens:o,weights:s,weightsError:a,poolType:i,liquidityMismatchTolerancePercent:n=Ia,oracles:l})=>{let[u,m]=Ta({title:null,message:null});return Ca(()=>{if(!t||r||!o||!s||a||o.some(b=>!b.address)||l.some(b=>b.mode==="Custom")){m({title:null,message:null});return}let p=0,c=[],d=o.length,y=Pe(o).map(b=>{let C=t[b.address.toLowerCase()]?.price??0;if(!C||C===0)return c.push(0),null;let P=C*Number.parseFloat(b.amount);return c.push(P),p+=P,C});if(y.some(b=>b===null)||y.length!==d){m({title:"Missing token price data",message:`One or more token(s) do not have valid market price data. Please verify that token market prices align with the pool
2
- weightings and your initial liquidity amounts.`});return}if(e==="Select Tokens"&&i===ie.ComposableStable){let b=y.map(P=>P/y[0]);Math.max(...b)-Math.min(...b)>n?m({title:"Selected tokens have a significant price deviation",message:"Did you mean to create a Weighted pool instead?",suggestWeighted:!0}):m({title:null,message:null});return}if(p===0||c.some(b=>b===0)){m({title:null,message:null});return}let A=0;if(i===ie.ComposableStable){let b=p/d;c.forEach(C=>{A+=Math.abs(b-C)})}else i===ie.Weighted&&c.forEach((b,C)=>{let P=Number(s[C])/1e18,T=p*P;A+=Math.abs(T-b)});let R=A>=p*.9;A=Math.min(A,p);let w=A/p;w>n?m({title:R?"You could lose all of your initial liquidity":`You could lose $${A.toFixed(2)} (~${(w*100).toFixed(2)}%)`,message:`Based on the market token prices, the value of tokens does not align with the specified pool weights.
3
- This discrepancy could expose you to potential losses from arbitrageurs. ${i===ie.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:i===ie.ComposableStable}):m({title:null,message:null})},[e,t,r,o,s,a,i,n,l]),u};import{formatEther as Ro,isAddressEqual as $a}from"viem";import Ba from"swr";import{isAddress as yo,zeroAddress as Da}from"viem";import{useBeraWallet as Oa,usePublicClient as La}from"@berachain/wagmi/hooks";import Sa from"swr/immutable";import{isAddress as Ea,zeroAddress as xa}from"viem";import{usePublicClient as va}from"@berachain/wagmi/hooks";var gt=({tokenAddress:e},{isEnabled:t=!0}={})=>{let r=va(),o=r&&e&&Ea(e)&&t?["useRewardVaultFromToken",e]:null,s=Sa(o,async([,a])=>{if(!a)throw new Error("useRewardVaultFromToken needs a valid token address");g(r);let{config:i}=k({chainId:r.chain.id}),n=await r.readContract({address:i.pol.factory,abi:St,functionName:"getVault",args:[a]});return n===xa?void 0:n});return{...s,refresh:()=>s.mutate()}};var Ao=({stakingToken:e,rewardVaultAddress:t},r)=>{let{address:o}=Oa(),s=La(),a=r?.opts?.isEnabled??!0,{data:i=t,error:n,mutate:l,isLoading:u}=gt({tokenAddress:e},{isEnabled:!t&&a}),m=Ba(i&&o&&s&&yo(i)&&yo(o)&&a?["useVaultBalanceFromStakingToken",i,o]:null,async([,p,c])=>{if(g(s),p===Da)return{address:p,balance:0n};let d=await s.readContract({address:p,abi:pe,functionName:"balanceOf",args:[c]});return{address:p,balance:d}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import Ma from"swr";import{erc20Abi as _a,formatEther as Qa,formatUnits as Ya,isAddress as ho,zeroAddress as Ga}from"viem";import{defaultChainId as Fa}from"@berachain/config/internal";import{useBeraWallet as Ka,usePublicClient as qa}from"@berachain/wagmi/hooks";import Ua from"swr/immutable";import{isAddress as Na,zeroAddress as Ha}from"viem";import{defaultChainId as Va}from"@berachain/config/internal";import{usePublicClient as Wa}from"@berachain/wagmi/hooks";function bo(e,t){let r=Wa({chainId:e.chainId}),o=e?.address&&r&&Na(e.address)?["useTokenInformation",e.address,e.chainId]:null,s=Ua(o,async([a,i,n=Va])=>h(i,"BERA")?{address:Ha,decimals:L.decimals,name:L.name,symbol:L.symbol,chainId:n}:(g(r),await $({address:i,publicClient:r,chainId:n})),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}function Se({address:e,owner:t,chainId:r=Fa},o){let s=e;h(s,"ETH")&&(s=Ga);let a=qa({chainId:r}),{address:i}=Ka(),n=t??i,l=(o?.opts?.isEnabled??!0)&&a&&n&&ho(n)&&s&&ho(s)?["usePollBalance",n,s,r]:null,{data:u,isLoading:m}=bo({address:s,chainId:r}),p=h(s,"BERA"),{isLoading:c,data:d,error:f,...y}=Ma(l,async([,w,b])=>(g(a),h(b,"BERA")?await a.getBalance({address:w}):await a.readContract({address:b,abi:_a,functionName:"balanceOf",args:[w]})),{refreshInterval:1e4}),A=!f&&d?h(s,"BERA")?Qa(d):u&&!m?Ya(d,u.decimals):void 0:void 0,R={chainId:r,balance:d?{raw:d.toString(),formatted:A??"0"}:{raw:"0",formatted:"0"},address:s,decimals:p?L.decimals:u?.decimals??0,symbol:p?L.symbol:u?.symbol??"",name:p?L.name:u?.name??""};return{...y,refresh:()=>{y.mutate()},isLoading:c||p?m:!1,error:f||!p?f:void 0,data:R}}var bg=({pool:e,vaultAddress:t},r)=>{let{data:o,...s}=Se({address:e?.address}),{data:a,refresh:i}=Ao({stakingToken:e?.address,rewardVaultAddress:t??e?.rewardVault?.vaultAddress},r),n=e?Number.parseFloat(e?.dynamicData?.totalShares??"0"):0,l=e?.dynamicData?.totalLiquidity?Number(e?.dynamicData?.totalLiquidity??0):null,u=n&&l?l/Number(n):0,m=e?.tokens?.map(p=>({address:p.address,ratio:n?Number(p.balance)/Number(n):0}));return{data:{lpTokenPrice:u,lpBalance:o?{...o,usdValue:o?Number(o.balance.formatted)*u:void 0}:void 0,tokenBalances:e?.tokens?.map(p=>{let c=m?.find(y=>$a(y.address,p.address))?.ratio??0,d=c?S(o?.balance.formatted??"0").times(c):S(0),f=Number(p.balanceUSD)/Number(p.balance);return{...p,balance:{raw:d?.isGreaterThan(0)?d.times(10**p.decimals).toFixed(0).toString():"0",formatted:d.toString()},price:f,usdValue:Number.isNaN(f)||!d?void 0:Number.parseFloat(d.toString())*f}}),stakedBalance:a?.address?{...a,balance:{raw:a.balance.toString(),formatted:Ro(a.balance)},usdValue:Number(Ro(a.balance))*u}:void 0},...s,refresh:()=>{s.refresh?.(),i()}}};import{useMemo as ko}from"react";import{parseUnits as Ja,zeroAddress as Xa}from"viem";import za from"swr";import{useBeraWallet as Za,useConfig as ja}from"@berachain/wagmi/hooks";function wo(e,t){let r=ja(),{address:o}=Za(),s=r&&o&&e?.items?["usePollAllowances",o,e?.items]:null,a=za(s,async([,i,n])=>Rr({items:n,account:i,config:r}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a?.mutate?.()}}function en({amount:e,decimals:t,slippage:r}){let o=Ja((r??0).toString(),t);return e+e*o/BigInt(100*10**t)}function tn(e,t){let{slippage:r}=t??{},o=ko(()=>e.filter(l=>l.token.address!==Xa).filter(l=>S(l.amount.formatted).gt(0)),[e]),{data:s,refresh:a,isLoading:i}=wo({items:o});return{needsApproval:ko(()=>s?.map(l=>{let u=o.find(p=>h(p.token.address,l.token));if(!u)throw new x({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,items:o}});let m=en({decimals:u.token.decimals,amount:BigInt(u.amount.raw),slippage:r});if(S(l.allowance.raw).lt(m))return{...u,needsApproval:!0,maxAmountIn:m,allowance:{raw:l.allowance.raw,formatted:l.allowance.formatted}}}).filter(l=>l!==void 0)??[],[s,r,o]),refresh:a,isLoading:i}}import{useMemo as mn}from"react";import dn from"swr/immutable";import{formatUnits as cn,isAddress as fn}from"viem";import{usePublicClient as gn}from"@berachain/wagmi/hooks";import rn from"swr/immutable";import{isAddress as on}from"viem";import{defaultChainId as sn}from"@berachain/config/internal";import{usePublicClient as an}from"@berachain/wagmi/hooks";function Po(e,t){let r=an(),o=r&&e.addresses?["useMultipleTokenInformation",e.addresses,e.chainId??sn]:null,s=rn(o,async([,a,i])=>(g(r),Promise.all(a.map(async n=>{if(!n||!on(n,{strict:!1}))throw new Error("Invalid address");let l=await $({address:n,publicClient:r,chainId:i});if(!l)throw new Error(`Token ${n} not found`);return l}))),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}import{useMemo as Ee}from"react";import ln from"swr";import{isAddress as un,zeroAddress as pn}from"viem";import{defaultChainId as te}from"@berachain/config/internal";import{useContext as nn}from"react";function ee(){let e=nn(Qr);if(!e)throw new x({message:"useTokens must be used within a TokensProvider",level:"fatal"});return{...e,data:{tokenList:e.tokenList,customTokenList:e.userTokens,featuredTokenList:e.featuredTokens}}}function re({addressIn:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:r,ensoTokens:o}=ee(),s=Ee(()=>{let p=[];return e&&p.push(...e.filter(c=>un(c))),p.map(c=>c.toLowerCase())},[r]),i=Ee(()=>{let p=new Set(r?.map(c=>c.address.toLowerCase()));return r.some(c=>h(c,"WBERA"))&&p.add(pn),s?.some(c=>!p.has(c))},[s,r])?s:r.map(p=>p.address),n=i&&(t.opts?.isEnabled??!0)?["useTokenCurrentPrices",i.map(p=>p.toLowerCase())]:null,l=ln(n,async([,p])=>ke({addressIn:p}),t.opts),u=Ee(()=>{if(!o)return{};let p=new Map([[te,new Map]]);for(let c of o)c.price===void 0||c.chainId!==te||p.get(te)?.set(c.address.toLowerCase(),{...c,price:c.price,chainId:te});return Object.fromEntries(i.map(c=>{let d=p.get(te)?.get(c)?.price;return d?[c.toLowerCase(),{price:d,chainId:te,updatedAt:Date.now()}]:[null,null]}))},[o]),m=Ee(()=>({...u,...l.data}),[u,l.data]);return{...l,data:m}}function yn(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return fn(t)&&t?["useOnChainPoolData",t]:null}function Co(e){let t=gn(),r=e?.slice(0,42),o=yn({poolId:e}),{data:s,error:a,isLoading:i,mutate:n}=dn(t?o:null,async([,d])=>Lt({poolId:d,publicClient:t})),{data:l,isLoading:u}=Po({addresses:s?.poolTokens[0]}),{data:m,isLoading:p}=re({addressIn:s?.poolTokens[0]});return{data:mn(()=>{if(!s||!l)return;let d={address:r.toLowerCase(),id:e.toLowerCase(),type:s.type,factory:s.factory,totalShares:s.totalSupply,totalLiquidity:"0",swapFee:s.swapFee,createTime:0,name:s.name,tokens:l.map((y,A)=>({address:y.address.toLowerCase(),name:y.name,decimals:y.decimals,symbol:y.symbol,index:A,weight:s.weights?.[A]??void 0,balance:cn(BigInt(s.poolTokens[1][A]),y.decimals),token:{__typename:"Token",token:y,latestUSDPrice:m?.[y.address]}})),amplificationParameter:s?.amplificationParameter&&{currentFormattedValue:Number(s.amplificationParameter[0])/Number(s.amplificationParameter[2])}},f=d.tokens?.reduce((y,A)=>{let R=Number(m?.[A.address.toLowerCase()]?.price??0);return R?y+R*Number(A.balance):y},0);return d.totalLiquidity=f?.toString()??"",d},[s,l,m,r,e]),error:a,isLoading:i||u||p,mutate:n,refresh:()=>n()}}import An from"swr";import{useBeraWallet as bn,usePublicClient as hn}from"@berachain/wagmi/hooks";var Rn=e=>{let{address:t}=bn(),r=hn(),o=t&&r?["usePollPoolCreationRelayerApproval",t,r.chain.id]:null,s=An(o,async([,i])=>{g(r);let{config:n}=k({chainId:r.chain.id});return await r.readContract({address:n.bex.vault,abi:ne,functionName:"hasApprovedRelayer",args:[i,n.bex.poolCreationHelper]})},{...e?.opts});return{...s,refreshPoolCreationApproval:()=>{s.mutate()}}};import{useMemo as wn}from"react";import kn from"swr";function Pn({poolId:e}){return e?["usePool-subgraph",e]:null}var gy=({poolId:e})=>{let t=kn(Pn({poolId:e}),async([,n])=>Ht({poolId:n}),{refreshInterval:1e5}),r=uo({poolId:e}),{data:o,isLoading:s,refresh:a}=Co(e);return{data:[wn(()=>{if(!t.data)return o;let n={...t.data};return o&&(n.swapFee=o.swapFee,n.totalShares=o.totalShares,n.createTime=o.createTime??n.createTime),n},[o,t]),r.data,o],isLoading:r.isLoading||t.isLoading||s,isError:r.error||t.error,refresh:()=>{r.refresh(),t.mutate(),a()}}};import Cn from"swr/immutable";var hy=({poolId:e,typeInArray:t})=>Cn(e?["usePoolEvents",e,t]:null,async([,r,o])=>Ut({poolId:r,typeInArray:o}),{refreshInterval:18e4});import Tn from"swr";var Cy=({poolId:e,...t},r)=>{let{config:o}=k(t),a=Tn(e?["usePoolHistoricalData",e]:null,async([,i])=>await Nt({poolId:i,chain:o.bex.chainName}),r?.opts);return{...a,refresh:()=>void a.mutate()}};import{useMemo as To}from"react";import In from"swr";import{useBeraWallet as Sn}from"@berachain/wagmi/hooks";var En=({query:e}={})=>["useAllPools",e],By=(e,t)=>{let{address:r}=Sn(),{data:o,isLoading:s,mutate:a}=lo({userAddress:r,chain:e.chain}),{data:i,isLoading:n,mutate:l}=In(En({query:e}),async([p,c])=>fe(c),{refreshInterval:18e4,...t?.opts}),u=To(()=>{if(!i||!o?.pools?.length)return i?.pools??[];let p=Object.fromEntries(o.pools.map(c=>[c.id.toLowerCase(),c]));return i.pools.map(c=>({...c,...p[c.id.toLowerCase()]||{}})).filter(Boolean)},[i,o]),m=To(()=>({page:Math.ceil((e?.skip??0)/(e?.first??10)),pageSize:e?.first,count:Math.ceil((i?.count??0)/(e?.first??10))}),[i,e.skip,e.first]);return{pools:u??[],walletPools:i?.pools??[],isLoading:n||s,refresh:()=>{l(),a()},pagination:m}};import{useMemo as vn}from"react";import{useCallback as xn,useMemo as Io}from"react";import{defaultChainId as oe}from"@berachain/config/internal";function se({tokens:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{ensoTokens:r}=ee(),o=re({addressIn:e?.filter(n=>n.chainId===oe).map(n=>n.address)},t),s=Io(()=>{let n=[];if(!e)return[];let l=new Map;for(let u of e){let m=u.chainId??oe;l.has(m)||l.set(m,new Map),l.get(m)?.set(u.address.toLowerCase(),u)}if(o.data){for(let[u,m]of Object.entries(o.data))if(m&&l.get(m.chainId??oe)?.get(u.toLowerCase())&&m.price!==void 0){let p=l.get(m.chainId??oe)?.get(u.toLowerCase());if(!p)continue;n.push({...p,chainId:m.chainId,price:m.price})}}if(r)for(let u of r)u.price!==void 0&&u.chainId!==void 0&&n.push({...u,chainId:u.chainId,price:u.price});return n},[o.data,r,e]),a=Io(()=>{let n={};for(let l of s){let u=l.chainId??oe;n[u]||(n[u]={}),n[u][l.address.toLowerCase()]=l.price}return n},[s]),i=xn(n=>n?a[n.chainId??oe]?.[n.address?.toLowerCase()]??void 0:void 0,[a]);return{isLoading:o.isLoading,data:s,priceMap:a,getTokenPrice:i}}function xe({tokenIn:e,tokenOut:t,formattedAmountIn:r,formattedAmountOut:o}){let{getTokenPrice:s,isLoading:a}=se({tokens:e&&t?[e,t]:void 0});return{data:vn(()=>{if(!e||!t||!r||!o)return;let n=s(e),l=s(t);return!n||!l?null:Yr(n.toString(),l.toString(),r,o)},[e,t,r,o]),isLoading:a}}import Bn from"swr";import{formatEther as Dn,parseUnits as On,zeroAddress as Eo}from"viem";import{defaultChainId as Ln}from"@berachain/config/internal";import{useBeraWallet as Un,usePublicClient as Nn}from"@berachain/wagmi/hooks";import{ethAddress as So,zeroAddress as yt}from"viem";var At=class extends I{name="Enso (Mint)";supportedChains=null;type="rest";needsAccountForQuote=!0;notFoundMessages=["Could not build shortcuts for route","Could not quote shortcuts for route","Swap not found for a required underlying of defi route,","No route found from"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:s,account:a=yt,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l,underlyingToken:u}){this.assertChainSupport({tokenIn:t,tokenOut:r}),G(a,"account");let m=me({useProxy:!n});t.address===yt&&(t.address=So),r.address===yt&&(r.address=So);let p=u??r,c=[{protocol:"enso",action:"route",args:{tokenIn:t.address,tokenOut:p.address,destinationChainId:t.chainId===p.chainId?void 0:p.chainId,refundReceiver:a,amountIn:o,slippage:s*100}}];if(u&&c.push({protocol:"erc4626",action:"deposit",args:{amountIn:{useOutputOfCallAt:0},tokenIn:u.address,primaryAddress:r.address,tokenOut:r.address}}),l){let A=c.length;c.push({protocol:"enso",action:"balance",args:{token:r.address}},{protocol:"erc20",action:"approve",args:{amount:{useOutputOfCallAt:A},spender:l,token:r.address}},{protocol:"enso",action:"call",args:{address:l,args:[a,{useOutputOfCallAt:A}],method:"stakeOnBehalf",abi:"function stakeOnBehalf(address account, uint256 amount) external"}},{protocol:"enso",action:"balance",args:{token:l}})}let d=await m.getBundleData({fromAddress:a,receiver:a,spender:a,chainId:t.chainId,routingStrategy:"router"},c),f=l?.toLowerCase()??r.address.toLowerCase();return{amountOut:d.minAmountsOut[f]??d.amountsOut[f]??"0",amountIn:o,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:o,spender:d.tx.to}),name:this.name,swapFeeBps:0,priceImpactPercentage:d.priceImpact?d.priceImpact/100:null,getCalldata:()=>({address:d.tx.to,data:d.tx.data,value:BigInt(d.tx.value??0)})}}},ve=new At;function sA({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s,slippage:a},i){let{getTokenPrice:n}=se({tokens:e&&t?[e,t]:void 0}),l=Hn({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s?On(s,e?.decimals??18).toString():void 0,slippage:a},i),{data:u}=Gr({sharesAmount:BigInt(l.data?.amountOut??0),vaultAddress:r.address}),{data:m}=xe({tokenIn:e,tokenOut:t,formattedAmountIn:s,formattedAmountOut:u?.formatted??"0"}),p=e?.chainId&&e.chainId!==Ln,{data:c,isLoading:d}=Se({address:Eo,chainId:p?e?.chainId:void 0},{opts:{isEnabled:!!p}}),f=l.data?.getCalldata?.({account:Eo})?.value??0n,y=c?.balance??{raw:"0",formatted:"0"},A=p&&f>0n&&!d&&f>BigInt(y.raw),R=p&&f>0n?Dn(f):void 0;return{...l,zapSupplyAmount:u,priceImpact:m,hasInsufficientNativeBalance:A,isCrossChain:p,nativeFee:R,refresh:()=>{l.mutate()}}}function Hn({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s,slippage:a},i){let{address:n}=Un(),l=!!e&&!!t&&!!r&&!!s&&!!n&&!h(t.address,e.address)&&e.chainId&&Number(s)>0&&!!a,u=Nn();return Bn(l?["useBendZapSupply",e,t,r,o,s,a]:null,async([,p,c,d,f,y,A])=>(g(u),G(n,"fromAddress"),G(p?.address,"tokenInAddress"),q(p?.chainId,"tokenInChainId"),await ve.getQuote({tokenIn:p,tokenOut:d,underlyingToken:c,amount:y,slippage:A,account:n,rewardVault:f})),{...i?.opts,refreshInterval:1e5})}import{getPublicClient as qn}from"@wagmi/core";import $n from"swr";import{parseUnits as zn}from"viem";import{defaultChainId as Zn}from"@berachain/config/internal";import{useBeraWallet as jn,useConfig as Jn}from"@berachain/wagmi/hooks";import{ethAddress as Mn,zeroAddress as _n}from"viem";import{erc20Abi as Vn,ethAddress as Wn}from"viem";var xo=async({fromAddress:e,amountIn:t,tokenIn:r,chainId:o,ensoClient:s,bundle:a,publicClient:i})=>{let n=[];if(r!==Wn){let l=await s.getApprovalData({fromAddress:e,tokenAddress:r,chainId:o,amount:t}),u=!0;i&&(u=await i.readContract({address:r,abi:Vn,functionName:"allowance",args:[e,l.spender]})<BigInt(t)),u&&n.push({to:l.tx.to,data:l.tx.data,value:l.tx.value,gasLimit:BigInt(l.gas)})}return n.push({to:a.tx.to,data:a.tx.data,value:a.tx.value,gasLimit:BigInt(a.gas)}),n};async function vo({fromAddress:e,amountIn:t,tokenIn:r,tokenOut:o,chainId:s,ensoClient:a,destinationChainId:i,slippage:n,publicClient:l}){if(!e)throw new D({property:"fromAddress",value:e,expected:"address"});o===_n&&(o=Mn);let u={protocol:"enso",action:"route",args:{tokenIn:r,tokenOut:o,amountIn:t,slippage:n*100}};i&&i!==s&&(u.args={...u.args,destinationChainId:i,refundReceiver:e});let m=await a.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:s,routingStrategy:"router"},[u]),p=await xo({fromAddress:e,amountIn:t,tokenIn:r,chainId:s,ensoClient:a,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{useMemo as Qn}from"react";import Yn from"swr";import{useBeraWallet as Gn,useConfig as Fn,usePublicClient as Kn}from"@berachain/wagmi/hooks";function Bo(e,t){let r=Kn(),o=Fn(),{address:s}=Gn(),{tokenList:a,refresh:i}=ee(),n=e?.walletAddress??s,l=Qn(()=>new Map((e?.tokens??a)?.map(p=>[p.address.toLowerCase(),p])??[]),[a,e?.tokens]),u=r&&a!==void 0&&n?["usePollWalletBalances",n,Array.from(l.values())]:null,m=Yn(u,async([,p,c])=>J({account:p,tokenList:c,wagmiConfig:o}),{refreshInterval:1e5,...t?.opts});return{...m,refresh:()=>{m?.mutate?.(),i()}}}function SA({tokenIn:e,tokenOut:t,amount:r,slippage:o}){let{address:s}=jn(),a=Jn(),i=me(),{refresh:n}=Bo(),l=!!e&&!!t&&!!r&&Number(r)>0&&!!o&&!!s&&!!e.chainId,m=$n(l?["useEnsoSwapBundle",e,t,r,o]:null,async([,p,c,d,f])=>{G(s,"fromAddress"),G(p?.address,"tokenInAddress"),q(p?.chainId,"tokenInChainId"),G(c?.address,"tokenOutAddress"),Me(d,"amount"),Me(f,"slippage");let y=qn(a,{chainId:p.chainId});g(y);let A=zn(d,p.decimals).toString();return vo({fromAddress:s,amountIn:A,tokenIn:p.address,tokenOut:c.address,chainId:p.chainId,ensoClient:i,destinationChainId:Zn,slippage:f,publicClient:y})},{refreshInterval:1e5,isEnabled:l});return{...m,refresh:()=>{m.mutate(),n()}}}import Xn from"swr";import{formatUnits as ei,parseUnits as ti}from"viem";import{chainConfigs as ri,defaultChainId as oi}from"@berachain/config/internal";import{useBeraWallet as si}from"@berachain/wagmi/hooks";function UA({inputToken:e,amount:t,underlyingToken:r,slippage:o,tokenOut:s},a){let{address:i}=si(),n=i??ri[oi].bex.aggregatorsRouterExecutor,u=!!e&&!!t&&Number(t)>0&&!!e.chainId&&!!r&&!!o?["useZapStakeBera",e,t,n,o,r,s]:null,m=Xn(u,async([,c,d,f,y,A,R])=>{let w=ti(d,c.decimals).toString();return ve.getQuote({account:f,amount:w,tokenIn:c,underlyingToken:A,tokenOut:R,slippage:y})},{...a?.opts,refreshInterval:1e5}),{data:p}=xe({tokenIn:e,tokenOut:s,formattedAmountIn:t,formattedAmountOut:ei(BigInt(m.data?.amountOut??"0"),s.decimals)});return{...m,data:{...m.data,priceImpactPercentage:p,isCrossChain:e&&s.chainId!==e?.chainId},refresh:()=>{m.mutate()}}}import{useCallback as bt,useEffect as ui,useState as pi}from"react";import ai from"gray-matter";import{encodeFunctionData as De,erc20Abi as ni,parseAbiItem as ii,toHex as li}from"viem";function Be(e){return Object.values(e).some(t=>Array.isArray(t)?t.some(r=>typeof r=="object"&&r!==null?Be(r):!!r):typeof t=="object"&&t!==null?Be(t):!!t)}var Do=({proposal:e,currentTopic:t,onError:r})=>{let o=Wt(e,t),s=[];if(o.actions=e.actions.map((n,l)=>{let u={};if(u.target=U({fieldOrType:"address",value:n.target}),n.type==="custom-action")if(n.input==="ABI")if(u.ABI=U({fieldOrType:"abi",value:n.ABI}),!n.functionSignature)u.functionSignature="Required";else try{let p=ii(n.functionSignature);p.type!=="function"?(console.error("parsedSignatureAbi is not a function",p),u.functionSignature="Invalid ABI"):(u.args=p.inputs.map((c,d)=>{try{return"components"in c?U({fieldOrType:c.type,value:n.args?.[d],components:c.components}):U({fieldOrType:c.type,value:n.args?.[d]})}catch{return null}}),u.args.some(c=>c)||(s[l]=De({abi:[p],args:n.args})))}catch{u.functionSignature="Invalid ABI"}else if(n.input==="rawCalldata")u.rawCalldata=U({fieldOrType:"hex",value:n.rawCalldata}),s[l]=n.rawCalldata;else if(n.input==="message")u.message=U({fieldOrType:"string",value:n.message}),s[l]=li(n.message);else throw new Error("Invalid input type");else if(n.type==="whitelist-reward-vault"||n.type==="blacklist-reward-vault"){if(u.vault=U({fieldOrType:"address",value:n.vault}),!u.vault){let p=n.type==="whitelist-reward-vault";s[l]=De({abi:K,functionName:"setVaultWhitelistedStatus",args:[n.vault,p,""]})}}else n.type==="whitelist-reward-vault-incentive"?(u.token=U({fieldOrType:"address",value:n.token}),u.minIncentiveRate=U({fieldOrType:"uint256",value:n.minIncentiveRate}),u.managerAddress=U({fieldOrType:"address",value:n.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(s[l]=De({abi:pe,functionName:"whitelistIncentiveToken",args:[n.token,BigInt(n.minIncentiveRate),n.managerAddress]}))):n.type==="erc20-transfer"&&(u.amount=U({fieldOrType:"uint256",value:n.amount}),u.to=U({fieldOrType:"address",value:n.to}),!u.amount&&!u.to&&(s[l]=De({abi:ni,functionName:"transfer",args:[n.to,BigInt(n.amount)]})));return Be(u)?u:null}),r?.(o),Object.getOwnPropertyNames(o).map(n=>o[n]).some(n=>Array.isArray(n)?n.filter(l=>l).length>0:n===null?!1:!!n)){console.warn("Proposal has errors",o);return}if(s.length===0)throw new Error("No actions submitted in proposal");let a=new URL(e.forumLink),i=ai.stringify(e.description,{title:e.title,topics:Array.from(e.topic.values()),forumLink:a.toString(),version:"1.0.0","content-encoding":"utf-8","content-type":"text/markdown",actions:e.actions.map(n=>{let l={type:n.type};return n.type==="custom-action"&&(l.inputType=n.input),l})});return[e.actions.map(n=>n.target),e.actions.map(n=>n.value??0n),s,i]};var Oo={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},mi=({initialData:e={},currentTopic:t,onError:r})=>{let[o,s]=pi({title:"",description:"",forumLink:"",actions:[Oo],...e,topic:new Set});ui(()=>{s(l=>({...l,topic:new Set([t.id])}))},[t]);let a=bt(()=>{s(l=>({...l,actions:[...l.actions,Oo]}))},[]),i=bt(l=>{s(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[s]),n=bt(()=>o?Do({proposal:o,currentTopic:t,onError:r}):void 0,[o,t]);return{proposal:o,setProposal:s,addProposalAction:a,removeProposalAction:i,computeParamsAndErrors:n}};import fi from"swr/immutable";import{formatUnits as gi}from"viem";import{useBeraWallet as yi,usePublicClient as Ai}from"@berachain/wagmi/hooks";import di from"swr/immutable";import{usePublicClient as ci}from"@berachain/wagmi/hooks";var Lo=({proposalId:e})=>{let t=ci();return di(t&&e?["useProposalSnapshot",e]:null,async([,o])=>{g(t);let{config:s}=k({chainId:t.chain.id});return(await t.readContract({abi:Q,address:s.governance.governor,functionName:"proposalSnapshot",args:[BigInt(o)]})).toString()})};var lb=e=>{let{address:t}=yi(),r=Ai(),o=e.wallet||t,{data:s}=Lo({proposalId:e.proposalId}),a=e.timepoint||s;return fi(a&&r&&o?["useGetPastVotes",a,o]:null,async([,n,l])=>{g(r);let{config:u}=k({chainId:r.chain.id});if(Number(n)>Date.now()/1e3)throw new Error("timepoint is in the future");let m=await r.readContract({abi:Y,address:u.tokens.bgt,functionName:"getPastVotes",args:[l,BigInt(n)]});return gi(m,18)})};import bi from"swr";import{isAddress as hi}from"viem";import{useBeraWallet as Ri,usePublicClient as wi}from"@berachain/wagmi/hooks";var yb=({proposalId:e,wallet:t})=>{let{address:r}=Ri(),o=wi(),s=t||r;return bi(o&&s&&hi(s)?["useHasVoted",e,s]:null,([,a,i])=>{g(o);let{config:n}=k({chainId:o.chain.id});return o.readContract({address:n.governance.governor,abi:Q,functionName:"hasVoted",args:[BigInt(a),i]})})};import ki from"swr";import{usePublicClient as Pi}from"@berachain/wagmi/hooks";var Uo="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var Tb=({account:e,...t})=>{let r=Pi(),{config:o}=k(t);return ki(e&&r?["useCancellerRole",e]:null,async([,a])=>(g(r),await r.readContract({abi:ue,address:o.governance.timelock,functionName:"hasRole",args:[Uo,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as No,useMemo as Ci,useState as Ti}from"react";import Ii from"swr/infinite";import{Proposal_OrderBy as Si,ProposalStatus as M}from"@berachain/graphql/governance";var Ho=10,Ei=e=>{switch(e){case M.QuorumNotReached:return[M.Active,M.Pending];case M.PendingQueue:case M.Defeated:return[M.Active];case M.PendingExecution:return[M.InQueue];default:return[e]}};function xi(e,t={}){let r=2*(t.perPage??Ho);return(o,s)=>{if(o!==0&&s&&s.length<r)return null;let a=t.status_in?.flatMap(Ei).filter((i,n,l)=>l.indexOf(i)===n);return["usePollAllProposals",o,e,t.where,a,t.orderBy,t.orderDirection,r,t.text]}}function Bb(e,t){let r=t?.autoRefresh??!1,o=e.perPage??Ho,s=2*o,a=xi(e.topic,e);async function i(d){if(!d)return[];let[,f,y,A,R,w,b,C,P]=d;return(await Vt({where:{topics_contains:[y],status_in:R?.length?R:void 0,...A},orderBy:w,orderDirection:b,text:P,perPage:C,offset:f*C})??[]).filter(Boolean)}let n=Ii(a,i,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=Ci(()=>{if(!n.data)return[];let d=n.data.flat().filter(y=>y?e.status_in?.length?e.status_in.includes(y.status):!0:!1).sort((y,A)=>{if(!e.text)return 0;if(e.orderBy===Si.CreatedAt){let R=Number(A.createdAt)-Number(y.createdAt);return e.orderDirection==="asc"?R:-R}return 0}),f=[];for(let y=0;y<d.length;y+=o)f.push(d.slice(y,y+o));return f},[n.data,e,o]),u=n.data?.[n.data.length-1],m=!!u&&u.length===s,[p,c]=Ti(Date.now()/1e3);return No(()=>{if(!r)return;let d=setInterval(()=>{c(Date.now()/1e3)},1e4);return()=>clearInterval(d)},[r]),No(()=>{if(!n.data)return;let d=!1;for(let f of n.data.flat()){switch(f.status){case M.Pending:p>=Number(f.voteStartAt)&&(d=!0);break;case M.Active:p>=Number(f.voteEndAt)&&(d=!0);break;case M.InQueue:Date.now()/1e3+1>=Number(f.queueEnd)&&(d=!0);break;default:break}if(d)break}d&&n.mutate()},[n.data,p]),{...n,data:l,hasMore:m}}import{useEffect as Vo,useState as vi}from"react";import Bi from"swr";import{ProposalStatus as ht}from"@berachain/graphql/governance";import{usePublicClient as Di}from"@berachain/wagmi/hooks";var Wb=(e,t)=>{let r=t?.autoRefresh??!1,o=Di(),a=Bi(e&&o?["usePollProposal",e]:null,([,l])=>(g(o),Mt({proposalId:l,client:o})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[i,n]=vi(Date.now());return Vo(()=>{if(!r)return;let l=setInterval(()=>{n(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),Vo(()=>{if(a.data!==void 0)switch(a.data.status){case ht.Pending:i>=Number(a.data.voteStartAt)&&a.mutate();break;case ht.Active:i>=Number(a.data.voteEndAt)&&a.mutate();break;case ht.InQueue:Date.now()/1e3+1>=Number(a.data.queueEnd)&&a.mutate();break}},[a.data?.status,i]),{...a,refresh:()=>a?.mutate?.()}};import Oi from"swr";import{formatEther as Li}from"viem";import{usePublicClient as Ui}from"@berachain/wagmi/hooks";var Kb=e=>{let t=Ui(),o=Oi(t?["usePollProposalThreshold",e]:null,async([,s])=>{g(t);let a=await t.readContract({address:s,abi:Q,functionName:"proposalThreshold"});return{votesThreshold:Li(a)}},{refreshInterval:18e4});return{...o,refresh:o.mutate}};import Ni from"swr/infinite";var Oe=1e3,Zb=(e,t)=>Ni(Hi(e,t),async([r,o])=>Qt({variables:{...e,limit:Oe,offset:Oe*o}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),Hi=({...e},t)=>r=>r>Math.floor(t/Oe)?null:["usePollProposalVotes",r,Oe,e.proposalId,e.orderBy,e.orderDirection];import Vi from"swr";import{formatEther as Wi}from"viem";import{useBeraWallet as Mi,usePublicClient as _i}from"@berachain/wagmi/hooks";var sh=e=>{let{address:t}=Mi(),r=_i(),s=Vi(t?["usePollUserDelegates",t]:null,async([,a])=>{g(r);let{config:i}=k({chainId:r.chain.id});if(!r||!a)throw new Error("usePollUserDelegates needs publicClient and account");let[n,l]=await Promise.all([r.readContract({address:i.tokens.bgt,abi:Y,functionName:"delegates",args:[a]}),r.readContract({address:i.tokens.bgt,abi:Y,functionName:"getVotes",args:[a]})]);return{delegate:n,currentVotes:Wi(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...s,refresh:()=>s?.mutate?.()}};import Qi from"swr";import{usePublicClient as Yi,useTransactionReceipt as Gi}from"@berachain/wagmi/hooks";var uh=e=>{let{data:t}=Gi({hash:e}),r=Yi();return Qi(t&&r?["useProposalFromTx",e]:null,async([,a])=>{if(!t)throw new Error("Transaction not found");if(t.transactionHash!==a)throw new Error("Transaction hash mismatch");return _t({tx:t,publicClient:r})})};import Fi from"swr/immutable";import{usePublicClient as Ki}from"@berachain/wagmi/hooks";var qi={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},gh=({proposalId:e,governorAddress:t})=>{let r=Ki();return Fi(t&&r&&e?["useProposalState",e]:null,async([,s])=>{g(r);let a=await r.readContract({abi:Q,address:t,functionName:"state",args:[BigInt(s)]});return qi[a]})};import $i from"swr";import{usePublicClient as zi}from"@berachain/wagmi/hooks";var Zi={0:"unset",1:"waiting",2:"ready",3:"done"},wh=({proposalTimelockId:e,timelockAddress:t})=>{let r=zi();return $i(t&&r&&e?["useProposalTimelockState",e,t]:null,async([,s,a])=>{g(r);let i=await r.readContract({abi:ue,address:a,functionName:"getOperationState",args:[s]});return Zi[i]},{refreshInterval:18e4})};import Ji from"swr";import{usePublicClient as Xi}from"@berachain/wagmi/hooks";import{formatEther as ji}from"viem";async function Rt({at:e,publicClient:t,...r}){let{config:o}=k(r);g(t);let s=await t.readContract({address:o.governance.governor,abi:Q,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return ji(s)}function Bh({at:e},{isEnabled:t=!0}){let r=Math.floor(Date.now()/1e3),o=Xi(),s=t&&o?["useQuorum",Number(e)>r?"now":e]:null,a=Ji(s,async([,i])=>i==="now"?Rt({publicClient:o}):Rt({at:i,publicClient:o}));return{...a,data:a.data?Number(a.data):void 0}}import tl from"swr";import{usePublicClient as rl}from"@berachain/wagmi/hooks";import el from"swr";function ae({priceFeedMap:e},t){let r=e?Object.values(e):null,o=(t?.opts?.isEnabled??!0)&&r?["usePythLatestPrices",r]:null;return el(o,async([a,i])=>await zt({priceFeedId:i}))}var Wo=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},s)=>{let a=rl(),{priceFeedMap:i,flags:n}=v(),{data:l}=ae({priceFeedMap:e?.address&&i?{[e.address]:i[e.address]}:void 0},{opts:{isEnabled:n.isPythWrapperEnabled&&!!e?.address}}),u=t&&e&&(n.isPythWrapperEnabled&&l?.prices.length||!n.isPythWrapperEnabled)?["useCappedGlobally",t,e,l,n.isPythWrapperEnabled,o]:null,m=tl(u,async([p,c,d,f,y,A])=>A?!1:(g(a),await Kt({client:a,asset:d,amount:r?c:`-${c}`,isMint:r,latestPrices:f,isPythWrapperEnabled:y})),{...s?.opts,refreshInterval:0});return{...m,refresh:()=>void m.mutate()}};import ol from"swr";import{usePublicClient as sl}from"@berachain/wagmi/hooks";var Mo=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},s)=>{let a=sl(),{collateralList:i,referenceCollateral:n}=v(),u=ol(e&&t?["useCappedRelatively",e,t,i,n]:null,async([m,p,c,d,f])=>{if(o)return!1;if(g(a),!r){let y=`-${c}`;return f.address!==p?!1:(await Promise.all(d.map(R=>Qe({client:a,asset:R.address,amount:y,isMint:r,referenceCollateral:f})))).some(R=>R)}return await Qe({client:a,asset:p,amount:c,isMint:r,referenceCollateral:f})},{refreshInterval:0,...s?.opts});return{...u,refresh:()=>void u.mutate()}};import al from"swr";import{usePublicClient as nl}from"@berachain/wagmi/hooks";var Xh=({collateralList:e},t)=>{let r=nl(),s=al(r&&e?["useCollateralWeights",e]:void 0,async([a,i])=>(g(r),await Gt({client:r,collateralList:i})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>void s.mutate()}};import{useMemo as wt}from"react";import il from"swr";import{useBeraWallet as ll,useConfig as ul,usePublicClient as pl}from"@berachain/wagmi/hooks";var _o=()=>{let e=pl(),{address:t}=ll(),{collateralList:r}=v(),o=ul(),a=il(t&&r&&e?["useHoneyBalances",t,r]:null,async([i,n,l])=>{g(e);let u=[...l??[],ce({})];return(await J({account:n,tokenList:u,wagmiConfig:o}))?.reduce((c,d)=>(c[d.address]=d,c),{})},{refreshInterval:1e4});return{...a,refresh:()=>a.mutate()}};import ml from"swr";import{usePublicClient as dl}from"@berachain/wagmi/hooks";var Qo=e=>{let t=dl(),{collateralList:r}=v(),s=ml(r&&t?["useHoneyVaultsBalance",r]:null,async([a,i])=>(g(t),await ge({client:t,collateralList:i})),{...e?.opts,refreshInterval:1e5});return{...s,refresh:()=>void s.mutate()}};import cl from"swr";import{usePublicClient as fl}from"@berachain/wagmi/hooks";var Yo=({collateral:e},t)=>{let r=fl(),{priceFeedMap:o,flags:s}=v(),{data:a}=ae({priceFeedMap:e?.address?{[e.address]:o[e.address]}:void 0},{opts:{isEnabled:s.isPythWrapperEnabled&&!!e?.address}}),i=r&&e&&(s.isPythWrapperEnabled&&a?.prices.length||!s.isPythWrapperEnabled)?["useIsBadCollateralAsset",e,a,s.isPythWrapperEnabled]:null,n=cl(i,async([l,u,m,p])=>(g(r),await Ft({client:r,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};var Go=({lowerThan:e,vaultsBalances:t,state:r,collateralList:o})=>{if(!(r.actionType==="mint")&&!r.isBasketModeEnabled){let a=t?.find(l=>l.address.toLowerCase()===r.collaterals[0].address.toLowerCase()),i=new S(a?.balance.formatted??"0").lte(e),n=o.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new S(u?.balance.formatted??"0").lte(e)});return{isLow:i,isLiquidityLowCollaterals:n}}return{isLow:!1,isLiquidityLowCollaterals:[]}},gl=({vaultsBalances:e,redeemedVaultBalance:t,state:r,collateralList:o})=>{if(!(r.actionType==="mint")&&e&&t){let a=o.filter(i=>{let n=e.find(u=>u.address.toLowerCase()===i.address.toLowerCase()),l=r.toAmount[r.collaterals.indexOf(i)];return new S(n?.balance.formatted??"0").lt(l??"0")});return{isMore:!!a.find(i=>h(i,r.collaterals[0])),isRedeemMoreThanLiquidityCollaterals:a}}return{isMore:!1,isRedeemMoreThanLiquidityCollaterals:void 0}};function yl({state:e,honeyBalances:t,...r}){let{config:o}=k(r),s=e.actionType==="mint";return!s&&t?new S(e.fromAmount[0]).gt(t[o.honey.token]?.balance.formatted??"0"):s&&t&&e.isBasketModeEnabled!==void 0&&e.collaterals.length>0?e.isBasketModeEnabled?e.collaterals.some((a,i)=>{let n=e.fromAmount[i];return new S(t[a.address]?.balance.formatted).lt(n)}):new S(t[e.collaterals[0].address]?.balance.formatted).lt(e.fromAmount[0]):!1}var BR=({actionType:e,collaterals:t,fromAmount:r,toAmount:o,isBasketModeEnabled:s})=>{let a={actionType:e,collaterals:t,fromAmount:r,toAmount:o,isBasketModeEnabled:s},i=e==="mint",{data:n}=Yo({collateral:t[0]}),{collateralList:l}=v(),{isBlacklisted:u,isDepegged:m}=n??{isBlacklisted:!1,isDepegged:!1},{data:p}=Wo({asset:t[0],amount:i?r[0]:o[0],isMint:i,isBasketModeEnabled:s}),{data:c}=Mo({asset:t[0]?.address,amount:i?r[0]:o[0],isMint:i,isBasketModeEnabled:s}),{data:d}=_o(),{data:f}=Qo(),y=t[0]?.address,A=f?.find(T=>T.address.toLowerCase()===y.toLowerCase()),[R,w]=wt(()=>{let T=Go({lowerThan:1,vaultsBalances:f,state:a,collateralList:l}),E=Go({lowerThan:1e3,vaultsBalances:f,state:a,collateralList:l});return[T,E]},[f,a]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:C}=wt(()=>gl({vaultsBalances:f,redeemedVaultBalance:A,state:a,collateralList:l}),[f,A,a,l]),P=wt(()=>yl({state:a,honeyBalances:d}),[a,d]);return{isLiquidityDepleted:R.isLow,isLiquidityDepletedCollaterals:R.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:b,isRedeemMoreThanLiquidityCollaterals:C,isLowLiquidity:w.isLow,isLiquidityLowCollaterals:w.isLiquidityLowCollaterals,isBlacklisted:a.isBasketModeEnabled?!1:u,isDepegged:a.isBasketModeEnabled?!1:m,isCappedGlobally:p,isCappedRelatively:c,isExceedingBalance:P}};import Al from"swr";function UR({days:e}){let t=Al(["useHoneyChartData",e],async([r,o])=>await Yt({days:o}));return{...t,refresh:()=>t.mutate()}}import bl from"swr";function MR(){let e=bl(["useHoneyGlobalData"],()=>qt()),t=e.data?.honeySnapshots.reduce((r,o)=>new S(o.totalVolume).plus(r),new S(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as wl,useReducer as kl}from"react";import{formatUnits as Ko}from"viem";import{defaultChainId as Pl}from"@berachain/config/internal";import hl from"swr";import{usePublicClient as Rl}from"@berachain/wagmi/hooks";function Fo({state:e},t){let r=Rl(),{priceFeedMap:o,flags:s,collateralList:a}=v(),{data:i}=ae({priceFeedMap:o},{opts:{isEnabled:s.isPythWrapperEnabled&&!!a.length}}),n=e.actionType==="mint",l=r&&e&&a.length>0&&(s.isPythWrapperEnabled&&i?.prices.length||!s.isPythWrapperEnabled)?["useIsBasketModeEnabled",n,i,s.isPythWrapperEnabled,a]:null,u=hl(l,async([m,p,c,d,f])=>(g(r),await ye({client:r,isMint:p,collateralList:f,latestPrices:c,isPythWrapperEnabled:d})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e4});return{...u,data:u.data,refresh:()=>void u.mutate()}}var Cl={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function qo(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return qo({...e,actionType:t.value},{type:"RESET_AMOUNTS"});case"COLLATERALS_CHANGE":return{...e,collaterals:t.value,fromAmount:[],toAmount:[]};case"FROM_AMOUNT_CHANGE":{let r=e.fromAmount;return r[t.index]=t.value,{...e,fromAmount:r}}case"TO_AMOUNT_CHANGE":{let r=e.toAmount;return r[t.index]=t.value,{...e,toAmount:r}}case"PREVIEW_CHANGE":{let r=t.value,o=e.actionType==="mint",s=e.collaterals.map((i,n)=>t.changedAsset===i.address?o?e.fromAmount[n]:e.toAmount[n]:r.collaterals[i.address]?Ko(r.collaterals[i.address],i.decimals):e.isBasketModeEnabled?"0":""),a=h(t.changedAsset,"HONEY",{chainId:Pl})?o?e.toAmount[0]:e.fromAmount[0]:r.honey?Ko(r.honey,18):e.isBasketModeEnabled?"0":"";return{...e,fromAmount:o?s:[a],toAmount:o?[a]:s}}case"IS_BASKET_MODE_ENABLED_CHANGE":return{...e,isBasketModeEnabled:t.value,fromAmount:[],toAmount:[]};case"IS_TYPING_CHANGE":return{...e,isTyping:t.value};case"IS_SUBMITTING_CHANGE":return{...e,isSubmitting:t.value};case"IS_LOADING_CHANGE":return{...e,isLoading:t.value};default:throw new Error(`Unknown action type: ${t}`)}}var tw=()=>{let{collateralList:e}=v(),[t,r]=kl(qo,Cl,s=>({...s,collaterals:e})),{data:o}=Fo({state:t});return wl(()=>{o!==void 0&&t.isBasketModeEnabled!==o&&(r({type:"IS_LOADING_CHANGE",value:!0}),r({type:"IS_BASKET_MODE_ENABLED_CHANGE",value:o}),r({type:"IS_LOADING_CHANGE",value:!1}))},[o]),{state:t,dispatch:r}};import Tl from"swr/immutable";import{usePublicClient as Il}from"@berachain/wagmi/hooks";var lw=({pythPriceFeedCalldata:e,tokenListLength:t},r)=>{let o=Il(),s=(r?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:a=Zt(t),isLoading:i}=Tl(s,async([n,l])=>(g(o),await jt({client:o,priceFeedId:l})));return{QUERY_KEY:s,data:a,isLoading:i}};import{useMemo as Sl}from"react";function dw(e){return Sl(()=>{if(e)return rr(e)},[e])}import El from"swr";import{formatEther as xl}from"viem";import{useBeraWallet as vl,usePublicClient as Bl}from"@berachain/wagmi/hooks";var Dl=e=>{let{address:t}=vl(),r=Bl(),s=El(t&&r?["useBgtUnstakedBalance",t]:null,async([,a])=>{g(r);let{config:i}=k({chainId:r.chain.id}),n=await r.readContract({address:i.tokens.bgt,abi:Y,functionName:"unboostedBalanceOf",args:[a]});return xl(n)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import Ol from"swr";import{formatUnits as Ll}from"viem";import{useBeraWallet as Ul,usePublicClient as Nl}from"@berachain/wagmi/hooks";var Hl=()=>{let{address:e}=Ul(),t=Nl(),o=Ol(e&&t?["useClaimableFees",e]:null,async([,s])=>{g(t);let{config:a}=k({chainId:t.chain.id}),i=await gr({account:s,vaultAddress:a.pol.staker,publicClient:t});return Ll(i,18)},{refreshInterval:18e4*2});return{...o,refresh:()=>o?.mutate?.()}};import{GqlRewardVaultOrderBy as _l,GqlRewardVaultOrderDirection as Ql}from"@berachain/graphql/pol/api";import Vl from"swr";import{usePublicClient as Wl}from"@berachain/wagmi/hooks";var Ml=(e,t=!1)=>["useRewardVaults",e,t],kt=(e,t)=>{let r=Ml(e.filter,e.onChainIncentives),o=Wl(),s=Vl(t?.opts?.isEnabled??!0?r:null,async([,a,i])=>await sr({filter:a,publicClient:i?o:void 0}),{...t?.opts});return{...s,refresh:s.mutate}};var Lw=(e={},{isEnabled:t=!0}={})=>{let r=kt({filter:{orderBy:_l.Apr,orderDirection:Ql.Desc,pageSize:1,where:e}},{opts:{refreshInterval:0,revalidateOnFocus:!1,refreshWhenOffline:!1,isEnabled:t}});return{isLoading:r.isLoading,highestApr:r.data?.gaugeList[0].dynamicData?.apr,refresh:r.mutate}};import Yl from"swr";import{usePublicClient as Gl}from"@berachain/wagmi/hooks";var $o=e=>{let t=Gl(),r=Yl(t?"usePollGlobalData":null,async()=>(g(t),ar(t)),{revalidateOnFocus:!1,...e?.opts});return{...r,refresh:r.mutate}};import Fl from"swr/immutable";var Kl=()=>"usePollMarkets",Yw=e=>{let t=Kl(),r=Fl(t,async()=>await nr(),{...e?.opts});return{...r,refresh:()=>r.mutate()}};import ql from"swr/immutable";import{isAddress as $l}from"viem";import{usePublicClient as zl}from"@berachain/wagmi/hooks";function Zw({receiptTokenAddresses:e,account:t,version:r},o){let s=zl(),a=e&&t&&s&&$l(t)&&r?["useQueuedBeraUnlock",e,t,r]:null,i=ql(a,async([,n,l,u])=>(g(s),await Promise.all(n.map(async m=>await dr({contractAddress:m,accountAddress:l,publicClient:s,version:u}))).then(m=>m.flat())),{refreshInterval:1e4,...o?.opts});return{...i,refresh:()=>i.mutate()}}import Zl from"swr";import{isAddress as jl}from"viem";import{defaultChainId as Jl}from"@berachain/config/internal";import{usePublicClient as Xl}from"@berachain/wagmi/hooks";var ak=({address:e},t)=>{let r=e?["useRewardTokenToBeraRate",e]:null,o=Xl({chainId:Jl});return Zl(r,async([s,a])=>{if(!a||!jl(a))throw new D({property:"address",value:a,expected:"Address"});return g(o),he({address:a,publicClient:o})},{...t?.opts})};import iu from"swr";import tu from"swr";import{erc20Abi as ru,formatUnits as ou,isAddress as su}from"viem";import{usePublicClient as au}from"@berachain/wagmi/hooks";import{erc20Abi as Le,formatUnits as eu}from"viem";async function Ue({address:e,publicClient:t}){g(t);let[r,o,s,a]=await t.multicall({contracts:[{address:e,abi:Le,functionName:"decimals"},{address:e,abi:Le,functionName:"name"},{address:e,abi:Le,functionName:"symbol"},{address:e,abi:Le,functionName:"totalSupply"}],allowFailure:!0});return{address:e,decimals:r.result,name:o.result,symbol:s.result,totalSupply:a.result!==void 0?r.status==="success"?eu(a.result,r.result):a.result.toString():void 0}}var nu=e=>e&&su(e)?["onChainRewardVault",e.toLowerCase()]:null,zo=({address:e},t)=>{let r=au(),o=t.opts?.isEnabled??!0,s=nu(e);return tu(o&&r?s:null,async([,a])=>{g(r);let{config:i}=k({chainId:r.chain.id}),n=await we({address:a,publicClient:r}),[l,u,m]=await Promise.all([Re({address:a,stakingToken:n,publicClient:r}),r.readContract({address:i.pol.beraChef,abi:K,functionName:"isWhitelistedVault",args:[a]}),r.readContract({address:n,abi:ru,functionName:"balanceOf",args:[a]})]),[p,c]=await Promise.all([Ue({address:n,publicClient:r}),Promise.all(l.map(d=>$({address:d.token,chainId:r.chain.id,publicClient:r})))]);if(!p)throw new Error("Staking token not found");return{id:a,address:a,vaultAddress:a,stakingToken:{address:n,name:p.name??"",symbol:p.symbol??"",decimals:p.decimals??0},stakingTokenAmount:ou(m,p.decimals??18),isVaultWhitelisted:u,activeIncentives:l.map((d,f)=>({active:!!d.remainingAmount,remainingAmount:d.remainingAmount,remainingAmountUsd:"0",incentiveRate:d.incentiveRate,incentiveRateUsd:"0",tokenAddress:d.token,token:c[f]}))}})};var lu=e=>e?["useRewardVault",e.toLowerCase()]:null,Ck=(e,t)=>{let r=lu(e),o=iu(r,async([i,n])=>lr({address:n}),{...t?.opts}),s=t?.opts?.isEnabled??((!!o.error||!o.isLoading)&&!o.data),a=zo({address:e},{opts:{...t?.opts,isEnabled:s}});return{data:a.data??o.data,error:a.error??o.error,isLoading:a.isLoading||o.isLoading,isValidating:a.isValidating??o.isValidating,refresh:()=>{o.mutate(),a.mutate()}}};import uu from"swr";import{usePublicClient as pu}from"@berachain/wagmi/hooks";function vk({address:e,stakingToken:t}){let r=pu(),s=uu(r&&e&&t?["useRewardVaultIncentives",e,t]:null,async([,a,i])=>(g(r),await Re({address:a,stakingToken:i,publicClient:r})));return{...s,refresh:()=>s?.mutate?.()}}import mu from"swr";import{usePublicClient as du}from"@berachain/wagmi/hooks";var cu=(e,t)=>{let r=du(),s=mu(r&&e?["useRewardVaultRewards",e]:null,async([,a])=>(g(r),await tr(a,r)),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};import fu from"swr";var Ne=e=>{let t=[],r="";for(let o of e){if(!o.timestamp&&!o._timestamp)continue;let s=(o?.timestamp??o?._timestamp??0)*1e3,a=new Date(s),i=a.toDateString();if(i!==r){let n=new Date(a.setHours(0,0,0,0)).getTime()/1e3;t.push({...o,timestamp:n,_timestamp:n}),r=i}}return t};function _k({range:e}){let r=fu(e?["useStakedAPR",e]:null,async([,o])=>{let s=await pr({range:o});return Ne(s.sort((i,n)=>i.timestamp-n.timestamp)).map(i=>({_timestamp:i.timestamp,apr:i.apr}))});return{...r,refresh:()=>r.mutate()}}import gu from"swr";import{useBeraWallet as yu,useConfig as Au,usePublicClient as bu}from"@berachain/wagmi/hooks";var Xk=e=>{let t=N("swberaAprWindow"),r=Au(),o=bu(),{address:s}=yu();return gu(s&&r&&e?["useStakedData",s,e,t]:null,async([,i,n,l])=>{q(r,"wagmiConfig"),g(o);let u=await ur({window:l}),m=n.map(d=>d.receiptToken),p=await J({account:i,tokenList:m,wagmiConfig:r});return await Promise.all(n.map(async d=>{let f=d.receiptToken,y=d.inputTokens[0],[A,R,w]=await Promise.all([or({address:f.address,account:i}),ke({addressIn:[y.address]}),he({address:f.address,publicClient:o})]),b=R[y.address]?.price??0,C=p?.find(le=>le.address===f.address)?.balance.raw??"0",P=w??0,T=new S(A.earningsTotal).minus(A.earningsRealized),V=new S(C).multipliedBy(P).minus(T).dividedBy(10**y.decimals),F=T.dividedBy(10**y.decimals),W=V.multipliedBy(b),Ct=F.multipliedBy(b);return{token:y,apr:u??0,stakedAmount:V.toNumber(),earnedAmount:F.toNumber(),stakedAmountUsd:W.toNumber(),earnedAmountUsd:Ct.toNumber()}}))},{refreshInterval:1e4})};import hu from"swr";async function Zo({address:e,range:t}){let r=new Date,o=new Date(r.getTime()-Number(t)*24*60*60*1e3),{config:s}=k({}),a=`${s.bonder}/vaults/${e}/total-assets-by-day?start=${o.toISOString().split("T")[0]}`;return de({url:a,type:"rest"})}function iP({range:e,addresses:t}){let o=hu(e?["useStakedSnapshots",e,t]:null,async([,s,a])=>{let[...i]=await Promise.all([...a.map(async n=>{let l=await Zo({address:n,range:s}),u=Ne(l.sort((m,p)=>m._timestamp-p._timestamp));return{[n]:u}})]);return i.reduce((n,l)=>({...n,...l}),{})});return{...o,refresh:()=>o.mutate()}}import Ru from"swr";import{usePublicClient as wu}from"@berachain/wagmi/hooks";var fP=e=>{let t=wu(),r=X();return Ru(e&&t&&r?["useStakingVaultMetadata",e,t,r]:null,async([,s,a,i])=>(g(a),mr({address:s,publicClient:a,blockTime:i})),{refreshInterval:1e4})};import ku from"swr";import{usePublicClient as Pu}from"@berachain/wagmi/hooks";function hP({vaultAddresses:e}){let t=Pu(),r=ku(e&&t?["useTotalStakedAmount",e]:null,([,o])=>cr({vaultAddresses:o,publicClient:t}));return{...r,refresh:()=>r.mutate()}}import Cu from"swr";import{useBeraWallet as Tu,usePublicClient as Iu}from"@berachain/wagmi/hooks";var Su=(e,t)=>{let{address:r}=Tu(),o=Iu(),s=r&&o&&e.vaultAddress?["useUserVaultInfo",r,e.vaultAddress]:null,a=Cu(s,async([,i,n])=>(g(o),yr({account:i,vaultAddress:n,publicClient:o})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a.mutate()}};import Eu from"swr";import{useBeraWallet as xu,usePublicClient as vu}from"@berachain/wagmi/hooks";var Bu=e=>{let{address:t}=xu(),r=vu(),s=Eu(t&&r?["useUserVaults",t]:null,async([,a])=>(g(r),await Ar({account:a,publicClient:r})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Du from"swr";import{usePublicClient as Ou}from"@berachain/wagmi/hooks";var UP=e=>{let t=Ou();return Du(e&&t?["useVaultAddress",e]:null,async([,o])=>{g(t);let[s]=await Promise.all([we({address:o,publicClient:t})]);return{stakeToken:s,address:o}})};import Lu from"swr";var WP=({vault:e,range:t,resolution:r})=>{let s=Lu(e?["useVaultHistory",e,t,r]:null,([,a,i,n])=>br({vault:a,range:i,resolution:n}));return{...s,refresh:()=>s.mutate()}};import Uu from"swr";var Nu=(e,t)=>{let o=Uu(e?["useVaultValidators",e]:null,async([,s])=>await hr({address:s}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{zeroAddress as Hu}from"viem";function jo({address:e},t){let r=re({addressIn:e?[e]:void 0},t);return{...r,data:e?r.data?.[e.toLowerCase()]:void 0}}function $P(e){return jo({address:Hu},e)}import Vu from"swr/immutable";import{isAddress as Wu,zeroAddress as Mu}from"viem";import{usePublicClient as _u}from"@berachain/wagmi/hooks";var tC=(e,t)=>{let r=_u(),o=e?.address&&r&&Wu(e.address)?["useStakingTokenInformation",e.address]:null,s=Vu(o,async([a,i])=>h(i,"BERA")?{address:Mu,decimals:L.decimals,name:L.name,symbol:L.symbol}:await Ue({address:i,publicClient:r}),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};function sC({token:e},t){let{isLoading:r,priceMap:o}=se({tokens:e?[e]:void 0},t);return{data:e?o[e.chainId]?.[e.address.toLowerCase()]:void 0,isLoading:r}}import Qu from"swr";import{erc20Abi as Yu}from"viem";import{usePublicClient as Gu}from"@berachain/wagmi/hooks";function pC({address:e}){let t=Gu();return Qu(e&&t?["useTotalSupply",e]:null,([,r])=>(g(t),t.readContract({address:r,abi:Yu,functionName:"totalSupply",args:[]})))}import Fu from"swr/immutable";import{useBlockNumber as Ku,usePublicClient as qu}from"@berachain/wagmi/hooks";function hC(e){let t=qu(),{config:r}=k({chainId:t?.chain.id}),{data:o,isLoading:s}=Ku({cacheTime:Ae(r.averageBlockTime)}),{data:a}=Fu(o&&t&&Number(e)>0?["useBlockToTimestamp",e,o]:null,async([,n,l])=>(g(t),er({block:n,currentBlock:l,blockTime:i,publicClient:t}))),i=X();if(a)return Number(a.timestamp);if(!(s||!o))return Math.floor(Xt(Date.now())+i*(Number(e)-Number(o)))}import{useCallback as Xo,useReducer as $u}from"react";import{useBeraWagmi as zu,useConfig as Zu}from"@berachain/wagmi/hooks";var Pt={confirmState:"idle",txnHash:"",message:""},Jo=(e,t)=>{switch(t.type){case"confirm_sending":return{...e,confirmState:"loading"};case"confirm_receipt":return{...e,confirmState:"success"};case"confirm_error":return{...e,confirmState:"fail"};case"confirm_submitting":return{...e,confirmState:"submitting"};case"confirm_reset":return{...Pt};default:return e}};function ju({onlyPermissionless:e,onSuccess:t,onError:r,onLoading:o,onWarning:s,onSubmission:a}={}){let[i,n]=$u(Jo,Pt),{account:l,onSmartAccountRejection:u}=zu(),m=Zu(),p=l?.wallet?.isContract?6e4*10:12e4,c=Xo(()=>{n({type:"confirm_reset"})},[]),d=N("enableSimulateCalls"),f=Xo(y=>{if(e&&!y.permissionless){let A=new wr({message:"Trying to send a non-permissionless transaction with an overridden account",displayMessage:"You can't send this transaction with an overridden account. Please reset the account in the settings popover.",level:"info",input:y});throw s?.(A,y),r?.(A,y),A}return kr({wagmiConfig:m,...y,txConfirmationTimeout:p,enableSimulateCalls:d,onLoading(...A){n({type:"confirm_sending"}),y.onLoading?.(y),o?.(...A)},onWarning(...A){y.onWarning?.(A[0],y),s?.(...A)},onSubmission(...A){n({type:"confirm_submitting"}),y.onSubmission?.(A[0],y),a?.(...A)},onSuccess(...A){n({type:"confirm_receipt"}),y.onSuccess?.(A[0],y),t?.(...A)},onError(...A){n({type:"confirm_error"}),y.onError?.(A[0],y),A[0].reason==="AtomicReadyWalletRejectedUpgradeError"&&u(),r?.(...A)}})},[m,o,s,a,t,r,e,d]);return{isLoading:i.confirmState==="loading",isSubmitting:i.confirmState==="submitting",isSuccess:i.confirmState==="success",isError:i.confirmState==="fail",write:f,reset:c}}var Ju=ju;import Xu from"swr/immutable";import{isAddress as ep,zeroAddress as tp}from"viem";import{chainId as rp}from"@berachain/config/internal";async function op(e){let t=await de({url:`https://api.routescan.io/v2/network/testnet/evm/${rp}/etherscan/api?module=contract&action=getabi&address=${e}`,type:"rest",name:"RouteScan"});if(t.status==="0")throw new Error(t.result);return t.result}var HC=e=>Xu(e&&ep(e)&&e!==tp?["useGetVerifiedAbi",e]:null,()=>e?op(e):Promise.resolve(""),{});import{useCallback as es,useEffect as sp,useState as ap}from"react";function MC({key:e,defaultValue:t}){let r=es(()=>{if(typeof window>"u")return t;let i=window.history.state?.[e];return i!==void 0?i:t},[e,t]),[o,s]=ap(r()),a=es(i=>{let n=r(),l=i instanceof Function?i(n):i,m={...window.history.state||{},[e]:l};window.history.replaceState(m,""),s(l)},[e,r]);return sp(()=>{if(window.history.state?.[e]===void 0){let l={...window.history.state||{},[e]:t};window.history.replaceState(l,"")}},[e,t]),[o,a]}import{useEffect as np,useRef as ip}from"react";function YC(e){let t=ip(void 0);return np(()=>{t.current=e}),t.current}import lp from"swr";var up=({variables:e}={})=>["useAllValidators",e],$C=(e,t)=>{let{config:r}=k(e),o=lp(up({variables:e}),async([,s])=>await Pr({variables:{chain:r.bex.chainName,...s}}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>o.mutate()}};import pp from"swr";function JC({allocation:e}){return pp(e?["useApiEnrichedAllocation",e]:null,([,t])=>Cr({allocation:t}))}import mp from"swr";import{isHex as dp}from"viem";var cp=e=>e?["useApiValidator",e]:null,ts=(e,t)=>{let r=cp(e),o=t?.opts?.isEnabled??!0,s=mp(o&&e?r:null,async([,a])=>{if(!a||!dp(a))throw new Error(`Invalid validator ID: ${a}`);return Tr({id:a})},{...t?.opts});return{...s,refresh:()=>s.mutate()}};import fp from"swr";import{usePublicClient as gp}from"@berachain/wagmi/hooks";var rs=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"address",name:"target",type:"address"}],name:"AddressEmptyCode",type:"error"},{inputs:[],name:"AmountGreaterThanReward",type:"error"},{inputs:[],name:"AmountLessThanMinIncentiveRate",type:"error"},{inputs:[],name:"CannotRecoverIncentiveToken",type:"error"},{inputs:[],name:"CannotRecoverRewardToken",type:"error"},{inputs:[],name:"CannotRecoverStakingToken",type:"error"},{inputs:[],name:"CommissionChangeAlreadyQueued",type:"error"},{inputs:[],name:"CommissionNotQueuedOrDelayNotPassed",type:"error"},{inputs:[],name:"DepositNotMultipleOfGwei",type:"error"},{inputs:[],name:"DepositValueTooHigh",type:"error"},{inputs:[],name:"DonateAmountLessThanPayoutAmount",type:"error"},{inputs:[{internalType:"address",name:"receiver",type:"address"}],name:"DuplicateReceiver",type:"error"},{inputs:[],name:"DurationChangeNotAllowed",type:"error"},{inputs:[{internalType:"address",name:"implementation",type:"address"}],name:"ERC1967InvalidImplementation",type:"error"},{inputs:[],name:"ERC1967NonPayable",type:"error"},{inputs:[],name:"FailedCall",type:"error"},{inputs:[],name:"IncentiveRateTooHigh",type:"error"},{inputs:[],name:"IndexOutOfRange",type:"error"},{inputs:[],name:"InsolventReward",type:"error"},{inputs:[],name:"InsufficientDelegateStake",type:"error"},{inputs:[],name:"InsufficientDeposit",type:"error"},{inputs:[],name:"InsufficientIncentiveTokens",type:"error"},{inputs:[],name:"InsufficientNativeValue",type:"error"},{inputs:[],name:"InsufficientSelfStake",type:"error"},{inputs:[],name:"InsufficientStake",type:"error"},{inputs:[],name:"InvalidActivateBoostDelay",type:"error"},{inputs:[],name:"InvalidArray",type:"error"},{inputs:[],name:"InvalidBaseRate",type:"error"},{inputs:[],name:"InvalidBoostMultiplier",type:"error"},{inputs:[],name:"InvalidCommissionChangeDelay",type:"error"},{inputs:[],name:"InvalidCommissionValue",type:"error"},{inputs:[],name:"InvalidCredentialsLength",type:"error"},{inputs:[],name:"InvalidDistribution",type:"error"},{inputs:[],name:"InvalidDropBoostDelay",type:"error"},{inputs:[],name:"InvalidIncentiveFeeRate",type:"error"},{inputs:[],name:"InvalidIncentiveRate",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidMaxIncentiveTokensCount",type:"error"},{inputs:[],name:"InvalidMaxWeightPerVault",type:"error"},{inputs:[],name:"InvalidMerkleRoot",type:"error"},{inputs:[],name:"InvalidMinBoostedRewardRate",type:"error"},{inputs:[],name:"InvalidProof",type:"error"},{inputs:[],name:"InvalidPubKeyLength",type:"error"},{inputs:[],name:"InvalidRewardAllocationInactivityBlockSpan",type:"error"},{inputs:[],name:"InvalidRewardAllocationWeights",type:"error"},{inputs:[],name:"InvalidRewardClaimDelay",type:"error"},{inputs:[],name:"InvalidRewardConvexity",type:"error"},{inputs:[],name:"InvalidRewardDuration",type:"error"},{inputs:[],name:"InvalidRewardRate",type:"error"},{inputs:[],name:"InvalidSignatureLength",type:"error"},{inputs:[],name:"InvalidStartBlock",type:"error"},{inputs:[],name:"InvalidToken",type:"error"},{inputs:[],name:"InvalidWeight",type:"error"},{inputs:[],name:"InvalidateDefaultRewardAllocation",type:"error"},{inputs:[],name:"InvariantCheckFailed",type:"error"},{inputs:[],name:"MaxNumWeightsPerRewardAllocationIsZero",type:"error"},{inputs:[],name:"MethodNotAllowed",type:"error"},{inputs:[],name:"MinIncentiveRateIsZero",type:"error"},{inputs:[],name:"NonTransferable",type:"error"},{inputs:[],name:"NotAContract",type:"error"},{inputs:[],name:"NotApprovedSender",type:"error"},{inputs:[],name:"NotBGT",type:"error"},{inputs:[],name:"NotBlockRewardController",type:"error"},{inputs:[],name:"NotDelegate",type:"error"},{inputs:[],name:"NotDistributor",type:"error"},{inputs:[],name:"NotEnoughBalance",type:"error"},{inputs:[],name:"NotEnoughBoostedBalance",type:"error"},{inputs:[],name:"NotEnoughTime",type:"error"},{inputs:[],name:"NotFactoryVault",type:"error"},{inputs:[],name:"NotFeeCollector",type:"error"},{inputs:[],name:"NotIncentiveManager",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"NotNewOperator",type:"error"},{inputs:[],name:"NotOperator",type:"error"},{inputs:[],name:"NotRewardAllocator",type:"error"},{inputs:[],name:"NotRewardDurationManager",type:"error"},{inputs:[],name:"NotRewardVaultManager",type:"error"},{inputs:[],name:"NotSystemAddress",type:"error"},{inputs:[],name:"NotWBERAStakerVault",type:"error"},{inputs:[],name:"NotWhitelistedVault",type:"error"},{inputs:[],name:"OnlyNFTOwnerAllowed",type:"error"},{inputs:[],name:"OnlySystemCallAllowed",type:"error"},{inputs:[],name:"OperatorAlreadySet",type:"error"},{inputs:[],name:"PayoutAmountIsZero",type:"error"},{inputs:[],name:"RewardAllocationAlreadyQueued",type:"error"},{inputs:[],name:"RewardAllocationBlockDelayTooLarge",type:"error"},{inputs:[],name:"RewardCycleNotEnded",type:"error"},{inputs:[],name:"RewardDurationCoolDownPeriodNotPassed",type:"error"},{inputs:[],name:"RewardInactive",type:"error"},{inputs:[],name:"RewardsDurationIsZero",type:"error"},{inputs:[],name:"StakeAmountIsZero",type:"error"},{inputs:[],name:"TimestampAlreadyProcessed",type:"error"},{inputs:[],name:"TokenAlreadyWhitelistedOrLimitReached",type:"error"},{inputs:[],name:"TokenNotWhitelisted",type:"error"},{inputs:[],name:"TooManyWeights",type:"error"},{inputs:[],name:"TotalSupplyOverflow",type:"error"},{inputs:[],name:"UUPSUnauthorizedCallContext",type:"error"},{inputs:[{internalType:"bytes32",name:"slot",type:"bytes32"}],name:"UUPSUnsupportedProxiableUUID",type:"error"},{inputs:[],name:"UnauthorizedETHTransfer",type:"error"},{inputs:[],name:"WithdrawAmountIsZero",type:"error"},{inputs:[],name:"WithdrawalAlreadyRequested",type:"error"},{inputs:[],name:"WithdrawalNotReady",type:"error"},{inputs:[],name:"WithdrawalNotRequested",type:"error"},{inputs:[],name:"ZeroAddress",type:"error"},{inputs:[],name:"ZeroOperatorOnFirstDeposit",type:"error"},{inputs:[],name:"ZeroPercentageWeight",type:"error"},{anonymous:!1,inputs:[{components:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint96",name:"percentageNumerator",type:"uint96"}],indexed:!1,internalType:"struct IBeraChef.Weight[]",name:"weights",type:"tuple[]"}],name:"BaselineAllocationSet",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[],name:"ALLOCATION_SETTER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"UPGRADE_INTERFACE_VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"beraChef",outputs:[{internalType:"contract IBeraChef",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBaselineAllocation",outputs:[{components:[{internalType:"uint64",name:"startBlock",type:"uint64"},{components:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint96",name:"percentageNumerator",type:"uint96"}],internalType:"struct IBeraChef.Weight[]",name:"weights",type:"tuple[]"}],internalType:"struct IBeraChef.RewardAllocation",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_governance",type:"address"},{internalType:"address",name:"_beraChef",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"proxiableUUID",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"receiver",type:"address"},{internalType:"uint96",name:"percentageNumerator",type:"uint96"}],internalType:"struct IBeraChef.Weight[]",name:"weights",type:"tuple[]"}],name:"setBaselineAllocation",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"}];async function os({publicClient:e,...t}){let{config:r}=k(t),o=await e.readContract({abi:rs,address:r.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),s=o.startBlock!==0n?await e.getBlock({blockNumber:o.startBlock}):{timestamp:0};return Sr(o,Number(s.timestamp))}function cT(){let e=gp();return fp(e?["baselineRewardAllocation"]:null,()=>(g(e),os({publicClient:e})))}import yp from"swr";var Ap=({pubKey:e,first:t=1})=>{let o=yp(e?["useDailyValidatorBlockStats",e,t]:null,async([,s,a])=>await Ir({pubKey:s,first:a}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}};import bp from"swr";import{usePublicClient as hp}from"@berachain/wagmi/hooks";function Rp(e){let t=hp(),o=bp(t?["useDefaultRewardAllocation"]:null,async()=>(g(t),await xr({client:t})),{...e?.opts});return{...o,refresh:()=>o.mutate()}}import wp from"swr/immutable";var kp=({account:e},t)=>{let o=wp(e?["useManagedValidatorByAccount",e]:null,async([,s])=>await vr({account:s}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{useMemo as as}from"react";import Cp from"swr";import{useBeraWallet as Tp,usePublicClient as Ip}from"@berachain/wagmi/hooks";import{zeroAddress as Pp}from"viem";async function ss({client:e,pubKey:t,...r}){let{config:o}=k(r);try{let s=await e.readContract({address:o.pol.beraChef,abi:K,functionName:"valRewardAllocator",args:[t]});return s===Pp?null:s}catch(s){throw console.log("getValidatorRewardAllocatorAddress:",s),s}}function ns(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function Sp(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():ns(e,t)}function Ep({pubKey:e,account:t},r){let o=Ip(),s=N("mockValidatorOperator"),a=N("mockValidatorRewardAllocator"),i=o&&e?["useManagedValidatorRole",e]:null,{address:n}=Tp(),l=t??n,u=Cp(i,async([,c])=>{g(o);let[d,f]=await Promise.all([Vr({client:o,pubKey:c}),ss({client:o,pubKey:c})]);return{operator:d??null,rewardAllocator:f}},{...r?.opts}),m=as(()=>s||ns(l,u.data),[l,s,u.data]),p=as(()=>a||Sp(l,u.data),[l,a,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import xp from"swr";import{keccak256 as vp}from"viem";import{usePublicClient as Bp}from"@berachain/wagmi/hooks";var is=({pubkey:e},t)=>{let r=Bp(),o=e?["useOnChainValidator",e]:null,s=t.opts?.isEnabled??!0,a=xp(s&&r?o:null,async([,i])=>{g(r);let{config:n}=k({chainId:r.chain.id}),[l,u,m]=await Promise.all([r.readContract({address:n.depositContract,abi:It,functionName:"getOperator",args:[i]}),r?.readContract({address:n.tokens.bgt,abi:Y,functionName:"boostees",args:[i]}),r.readContract({address:n.pol.beraChef,abi:K,functionName:"getActiveRewardAllocation",args:[i]})]);return{id:vp(i),pubkey:i,operator:l,votingPower:Number(u)}});return{...a,refresh:()=>{a.mutate()}}};import Dp from"swr";import{usePublicClient as Op}from"@berachain/wagmi/hooks";var jT=({valPubKey:e,options:t})=>{let r=Op(),s=(t?.opts?.isEnabled??!0)&&r&&e?["useStakingPoolBatch",e]:null,a=Dp(s,async([,i])=>(g(r),await Br({client:r,valPubKey:i})),{refreshInterval:1e4,...t?.opts});return{...a,refresh:()=>a.mutate()}};import Lp from"swr";import{GetUserValidatorInformation as Up}from"@berachain/graphql/pol/subgraph";import{useBeraWallet as Np}from"@berachain/wagmi/hooks";var Hp=({account:e}={})=>{let{address:t}=Np(),r=e??t;return Lp(r?["useSubgraphUserValidators",r]:null,async([,s])=>{let a=j("pol.subgraph",{}),{data:i}=await a.query({query:Up,variables:{address:s}});return i.userValidatorInformations})};import Vp from"swr";import{useBeraWallet as Wp,usePublicClient as Mp}from"@berachain/wagmi/hooks";var _p=e=>{let{address:t}=Wp(),r=Mp(),s=Vp(r&&t?["useUserActiveValidators",t]:null,async([,a])=>await Or({account:a,publicClient:r}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Qp from"swr";import{useBeraWallet as Yp,usePublicClient as Gp}from"@berachain/wagmi/hooks";var Fp=({pubkey:e,...t})=>{let{address:r}=Yp(),o=Gp(),s=t.account??r,i=Qp(s&&e?["useUserBoostsOnValidator",e,s]:null,async([,n,l])=>await Dr({account:l,pubkey:n,publicClient:o}),{refreshInterval:1e5});return{...i,refresh:()=>i.mutate()}};import{useCallback as Kp,useMemo as qp}from"react";import us from"swr";import{useBeraWallet as $p}from"@berachain/wagmi/hooks";var ls=e=>{let t=new Set;return e.forEach(r=>{Array.isArray(r.rewards)&&r.rewards.forEach(o=>{o.token&&t.add(o.token)})}),t};var zp=()=>{let{address:e}=$p(),r=us(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new x({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await fr({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),o=r?.data,s=qp(()=>{if(o){if(!Array.isArray(o)){be.captureException(new x({message:"Incorrect aggregated incentives data receieved.",level:"error",extra:{allRewards:o,account:e}}));return}return ls(o)}},[o,e]),i=us(e&&o?["useUserClaimableIncentives",e,o]:null,async([,l,u])=>{if(!l)throw new D({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new D({message:"Incorrect aggregated incentives data receieved to calculate proofs.",property:"allRewards",value:u,expected:"Array",level:"error"});let m=new Set(u.map(c=>c.validator)),p=Array.from(m);return await Promise.all(p.map(async c=>({...await ir({account:l,validator:c,page:1,perPage:1e4}),validator:c})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),n=Kp(()=>{r?.mutate(),i?.mutate()},[r,i]);return{...i,isLoading:r?.isLoading||i?.isLoading,tokenMap:s,refresh:n}};import Zp from"swr/immutable";var TI=({account:e,validatorAddress:t})=>{let o=Zp(e?["useUserStakingPositions",e,t]:null,async([s,a,i])=>{let n=await Lr(a);return i?n.filter(l=>l.validatorAddress.toLowerCase()===i.toLowerCase()):n});return{...o,refresh:()=>{o.mutate()}}};import{keccak256 as jp}from"viem";function vI({pubkey:e},t){let{data:{validator:r,uptime:o}={},isLoading:s,error:a}=ts(jp(e),t),{data:i,isLoading:n,error:l}=is({pubkey:e},t);return{data:{uptime:o,validator:r||i?{...r,...i,operator:i?.operator??r?.operator,dynamicData:{activeBoostAmount:i?.dynamicData?.activeBoostAmount??r?.dynamicData?.activeBoostAmount??"",queuedBoostAmount:r?.dynamicData?.queuedBoostAmount??"",usersActiveBoostCount:r?.dynamicData?.usersActiveBoostCount??0,usersQueuedBoostCount:r?.dynamicData?.usersQueuedBoostCount??0,allTimeDistributedBGTAmount:r?.dynamicData?.allTimeDistributedBGTAmount??"0",rewardRate:i?.dynamicData?.rewardRate??r?.dynamicData?.rewardRate??"",stakedBeraAmount:r?.dynamicData?.stakedBeraAmount??"",lastDayDistributedBGTAmount:r?.dynamicData?.lastDayDistributedBGTAmount??"",activeBoostAmountRank:r?.dynamicData?.activeBoostAmountRank??0,boostApr:r?.dynamicData?.boostApr??0,commissionOnIncentives:r?.dynamicData?.commissionOnIncentives??0},id:i?.id??r?.id,pubkey:i?.pubkey??r?.pubkey,metadata:i?.metadata??r?.metadata,rewardAllocationWeights:i?.rewardAllocationWeights??r?.rewardAllocationWeights??[]}:null},isLoading:s||n,error:a||l}}import Jp from"swr";function Xp({pubkey:e,dayRange:t}){let o=Jp(e&&t?["useValidatorAnalytics",e,t]:null,async([,s,a])=>await Ur({pubkey:s,dayRange:a}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}}import em from"swr";import{usePublicClient as tm}from"@berachain/wagmi/hooks";var rm=(e,t)=>{let r=tm(),s=em(r&&e?["useValidatorCommission",e]:null,async([,a])=>await Nr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};var om=e=>{let{data:t,isLoading:r}=$o(),o=X();return{data:t?Hr(e,Number(t?.totalStakedBeraAmount),o):void 0,isLoading:r}};import sm from"swr";import{usePublicClient as am}from"@berachain/wagmi/hooks";function nm(e,t){let r=am(),s=sm(r&&e?["useValidatorQueuedCommission",e]:null,async([,a])=>(g(r),await Wr({client:r,pubKey:a})),{...t?.opts});return{...s,refresh:()=>s.mutate()}}import im from"swr";import{usePublicClient as lm}from"@berachain/wagmi/hooks";var um=(e,t)=>{let r=lm(),s=im(r&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,a])=>await Mr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import pm from"swr";import{usePublicClient as mm}from"@berachain/wagmi/hooks";var dm=(e,t)=>{let r=mm(),s=pm(r&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,a])=>await _r({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import cm from"swr";import{usePublicClient as fm}from"@berachain/wagmi/hooks";function gm(e,t){let r=fm(),s=cm(r&&e?["useValidatorRewardAllocation",e]:null,async([,a])=>await Er({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}}export{da as OracleMode,io as USE_AGGREGATORS_QUOTES_QUERY_KEY,qo as reducer,Fc as useAggregatorsQuotes,Ce as useAggregatorsRouterFeeBps,lo as useAllUserPools,ra as useAllUserPoolsQueryKey,$C as useAllValidators,up as useAllValidatorsQueryKey,JC as useApiEnrichedAllocation,uo as useApiPool,aa as useApiPoolQueryKey,ts as useApiValidator,cp as useApiValidatorQueryKey,cT as useBaselineRewardAllocation,sA as useBendZapSupply,Hn as useBendZapSupplyHelper,Ju as useBeraContractWrite,$P as useBeraCurrentPrice,Ye as useBexStatus,dw as useBgtAprSimulation,Dl as useBgtUnstakedBalance,hC as useBlockToTimestamp,Wo as useCappedGlobally,Mo as useCappedRelatively,Hl as useClaimableFees,Xh as useCollateralWeights,Af as useCreatePool,mi as useCreateProposal,Ap as useDailyValidatorBlockStats,Rp as useDefaultRewardAllocation,SA as useEnsoSwapBundle,Ef as useExploitedTokens,wa as useExploitedTokensQueryKey,Gr as useGetConvertToAssets,lb as useGetPastVotes,HC as useGetVerifiedAbi,Pa as useGlobalLiquidityAndSwapVolume,yb as useHasVoted,Lw as useHighestVaultsAPR,MC as useHistoryState,BR as useHoneyAlerts,_o as useHoneyBalances,UR as useHoneyChartData,MR as useHoneyGlobalData,tw as useHoneySwapState,Qo as useHoneyVaultsBalance,Yo as useIsBadCollateralAsset,Fo as useIsBasketModeEnabled,Tb as useIsCanceller,Nf as useLiquidityMismatch,bg as useLpPosition,kp as useManagedValidatorByAccount,Ep as useManagedValidatorRole,tn as useMultipleTokenApprovalsWithSlippage,Po as useMultipleTokenInformation,Co as useOnChainPoolData,yn as useOnChainPoolDataQueryKey,is as useOnChainValidator,Bb as usePollAllProposals,xi as usePollAllProposalsQueryKey,wo as usePollAllowances,Se as usePollBalance,$o as usePollGlobalData,Yw as usePollMarkets,Kl as usePollMarketsQueryKey,Rn as usePollPoolCreationRelayerApproval,Wb as usePollProposal,Kb as usePollProposalThreshold,Zb as usePollProposalVotes,Hi as usePollProposalVotesQueryKey,sh as usePollUserDelegates,Bo as usePollWalletBalances,gy as usePool,hy as usePoolEvents,Cy as usePoolHistoricalData,By as usePools,En as usePoolsQueryKey,YC as usePrevious,xe as usePriceImpact,uh as useProposalFromTx,Lo as useProposalSnapshot,gh as useProposalState,wh as useProposalTimelockState,ae as usePythLatestPrices,lw as usePythUpdateFee,Zw as useQueuedBeraUnlock,Bh as useQuorum,ak as useRewardTokenToBeraRate,Ck as useRewardVault,Ao as useRewardVaultBalanceFromStakingToken,gt as useRewardVaultFromToken,vk as useRewardVaultIncentives,lu as useRewardVaultQueryKey,cu as useRewardVaultRewards,kt as useRewardVaults,Ml as useRewardVaultsQueryKey,fP as useSWBeraVaultMetadata,$s as useSingleAggregatorQuote,_k as useStakedAPR,Xk as useStakedData,iP as useStakedSnapshots,jT as useStakingPoolBatch,tC as useStakingTokenInformation,Pn as useSubgraphPoolQueryKey,Hp as useSubgraphUserValidators,jo as useTokenCurrentPrice,re as useTokenCurrentPrices,bo as useTokenInformation,sC as useTokenPrice,se as useTokenPrices,ee as useTokens,hP as useTotalStakedAmount,pC as useTotalSupply,_p as useUserActiveValidators,Fp as useUserBoostsOnValidator,zp as useUserClaimableIncentives,TI as useUserStakingPositions,Su as useUserVaultInfo,Bu as useUserVaults,vI as useValidator,Xp as useValidatorAnalytics,rm as useValidatorCommission,om as useValidatorEstimatedBgtPerYear,nm as useValidatorQueuedCommission,um as useValidatorQueuedOperatorAddress,dm as useValidatorQueuedRewardAllocation,gm as useValidatorRewardAllocation,UP as useVaultAddress,WP as useVaultHistory,Nu as useVaultValidators,UA as useZapStakeBera};
1
+ import{$ as oo,Aa as Eo,B as Vt,Ba as Io,C as Nt,Ca as xo,D as Wt,Da as Bo,Ea as vo,F as _t,Fa as Oo,G as me,Ga as Do,H as Qt,Ha as Lo,I as Ve,Ia as Uo,J as Yt,K as Gt,L as de,M as Kt,O as qt,P as $t,Q as zt,R as jt,S as Jt,U as Zt,V as Xt,W as se,X as eo,Y as ge,Z as ye,_ as to,a as wt,ba as ro,c as K,ca as so,da as ao,e as E,ea as no,f as Pt,fa as io,g as pe,ga as lo,h as Ct,ha as uo,i as St,ia as po,ja as mo,k as Tt,ka as co,l as Et,la as fo,m as It,n as xt,na as yo,o as L,oa as Ao,pa as bo,qa as ho,r as Bt,ra as Ro,s as vt,sa as wo,t as Ot,ua as ko,v as Dt,w as Lt,wa as Po,x as Ut,xa as Co,y as Ht,ya as So,z as M,za as To}from"../chunk-RW3JFPED.mjs";import"../chunk-NLVWRMGD.mjs";import{c as U,e as Ne,g as $,l as B,m as Ho}from"../chunk-55L7STYD.mjs";import{a as ie,c as Ae}from"../chunk-7SMWQ6SN.mjs";import"../chunk-NAXAZJJY.mjs";import"../chunk-YXLFOEZN.mjs";import"../chunk-OGJMSGB2.mjs";import"../chunk-575OK77P.mjs";import{c as go}from"../chunk-7WRTK7RJ.mjs";import{a as kt,b as q,c as f,d as _,e as Ue,f as fe}from"../chunk-2LL3P5PN.mjs";import{b as be,c as Vo}from"../chunk-YNO7BCCM.mjs";import{c as le,i as He,j as Mt,k as Ft,l as ce}from"../chunk-5XWELBWR.mjs";import"../chunk-C3FHGFLK.mjs";import{a as P,b as D,d as ue,e as h}from"../chunk-THATXCJK.mjs";import{f as x,g as F,h as v}from"../chunk-AX2YQQFQ.mjs";import ls from"swr";import{usePublicClient as us}from"@berachain/wagmi/hooks";var No=({sharesAmount:e,vaultAddress:t,vaultChainId:o},r)=>{let s=us({chainId:o}),a=ls(s&&e&&t?["useGetConvertToAssets",e,t,o]:null,async([i,n,l])=>(f(s),wt({sharesAmount:n,vaultAddress:l,publicClient:s})),{...r?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as oa}from"react";import{zeroAddress as ra}from"viem";import{defaultChainId as sa}from"@berachain/config/internal";import{useBeraWallet as aa,usePublicClient as na}from"@berachain/wagmi/hooks";import{Slippage as ps,Swap as ms,SwapKind as ds,Token as Wo,TokenAmount as cs}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as fs,formatEther as _o,zeroAddress as gs}from"viem";import{getUriFromLink as ys}from"@berachain/config";import{ChainId as Qo}from"@berachain/config/internal";import{vaultAbi as Mo}from"@berachain/abis/bex/vault";var As=300,bs=.05,We=ds.GivenIn,_e=class extends E{name="Hub Pools";supportedChains=[Qo.MAINNET,Qo.BEPOLIA];url=ys(this.config.api);type="graphql";convertZeroToWrapped(t){return h(t,"BERA")?this.config.tokens.wbera:t}calculatePriceImpact(t){return t.error?(console.error("Swap price impact error",t),0):Number(t.priceImpact)}checkStalePrices({onChainAmount:t,sorPaths:o,sorAmount:r,queryData:s}){let a=Number.parseFloat(_o(t.scale18))/Number.parseFloat(r);if(Math.abs(1-a)>bs){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let i=new x({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%",extra:{deltaFromSorAmount:a,pools:o.map(n=>n.pools),onChainAmount:_o(t.scale18),sorAmount:r,queryData:s},fingerprint:["SOR_STALE_PRICES"]});fe.captureException(i)}}async getQuote(t){let o=new Pt(this.url,this.chainId),{tokenIn:r,tokenOut:s,amount:a,slippage:i,account:n=gs,publicClient:l}=t;this.assertChainSupport({tokenIn:r,tokenOut:s}),f(l);let u=h(r,"BERA")||h(s,"BERA"),m=new Wo(this.chainId,this.convertZeroToWrapped(r.address),r.decimals),p=new Wo(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),c=cs.fromRawAmount(m,a),{paths:d,priceImpact:g,returnAmount:y}=await o.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:m.address,tokenOut:p.address,swapKind:We,swapAmount:c});if(!d?.length)throw new F({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:E.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:m.address,tokenOut:p.address,swapKind:We,swapAmount:c},message:"No swap paths returned from Balancer API"});let A=new ms({chainId:this.chainId,paths:d,swapKind:We,userData:"0x"}),R=await A.query(l.transport.url);if(!("expectedAmountOut"in R))throw new Error("No Bex paths found");return this.checkStalePrices({onChainAmount:R.expectedAmountOut,sorPaths:d,sorAmount:y,queryData:t}),{amountOut:R.expectedAmountOut.amount.toString(),amountIn:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:r,rawAmount:a,spender:R.to}),name:this.name,priceImpactPercentage:this.calculatePriceImpact(g),swapFeeBps:0,getCalldata:({account:w})=>{let b=A.buildCall({slippage:ps.fromPercentage(i.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+As),queryOutput:R,sender:w,recipient:w,wethIsEth:u}),{args:C,functionName:k}=fs({abi:Mo,data:b.callData});return{params:C,functionName:k,abi:Mo,address:b.to,value:b.value||BigInt(0)}}}}},Qe=new _e;import{ChainId as Yo}from"@berachain/config/internal";var Me=class extends E{name="RedeemBgt";supportedChains=[Yo.MAINNET,Yo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:o}){return super.checkChainSupport({tokenIn:t,tokenOut:o})?t.chainId===o.chainId&&h(t,"BGT",{chainId:t.chainId})&&h(o,"BERA"):!1}async getQuote({tokenIn:t,amount:o}){if(this.assertChainSupport({tokenIn:t,tokenOut:{...D,chainId:t.chainId}}),!h(t,"BGT",{config:this.config}))throw new v({property:"tokenIn",value:t,expected:"BGT",level:"warning"});return{amountOut:o,amountIn:o,allowanceRequirements:[],name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},Go=new Me;import{zeroAddress as Fo}from"viem";import{ChainId as Ko}from"@berachain/config/internal";import{metaAggregatorAbi as hs}from"@berachain/abis/meta-aggregator/metaAggregator";var Ye=class extends E{name="Enso";supportedChains=[Ko.MAINNET];type="rest";needsAccountForQuote=!0;notFoundMessages=["Could not build shortcuts for route","Could not quote shortcuts for route","Swap not found for a required underlying of defi route,","No route found from"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=Fo,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,o.address),d=this.getAmountAfterFees(r,i);this.url=n?"/api/aggregators?aggregator=enso":`${this.config.bex.aggregatorsProxyUrl}/enso/api/v1/shortcuts/route?`;let g=new URL(this.url);g.searchParams.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),g.searchParams.set("receiver",this.config.bex.aggregatorsRouterExecutor),g.searchParams.set("spender",this.config.bex.aggregatorsRouterExecutor),g.searchParams.set("amountIn",d),g.searchParams.set("tokenIn",u),g.searchParams.set("tokenOut",m),g.searchParams.set("chainId",Ko.MAINNET.toString()),g.searchParams.set("slippage",(Number(s)*100).toString()),g.searchParams.set("refundReceiver",a);let A=await(await this.fetch(g)).json(),R=this.getInputData({tokenIn:u,amountIn:r,isNative:p}),w={tokenOut:m,receiver:a,minAmountOut:this.getMinAmountOut(A.amountOut.toString(),s),isNative:c},b={aggregator:A.tx?.to,data:A.tx?.data};return{amountOut:A.amountOut.toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i,getCalldata:()=>({params:[R,w,b,{rewardVault:l??Fo,isSwapAndStake:!!l}],functionName:"swap",abi:hs,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter})}}},Ge=new Ye;import{erc4626Abi as qo,formatUnits as Rs}from"viem";import{wberaStakerVaultAbi as ws}from"@berachain/abis/pol/wberaStakerVault";var Fe=class extends E{name="Mint";supportedChains=null;type="rpc";checkChainSupport({tokenIn:t,tokenOut:o,underlyingToken:r}){return super.checkChainSupport({tokenIn:t,tokenOut:o,underlyingToken:r})&&!!r&&r?.chainId===o.chainId&&(h(r,t)||h(t,"BERA")&&h(o,"SWBERA"))}async getQuote({tokenIn:t,tokenOut:o,amount:r,underlyingToken:s,publicClient:a}){this.assertChainSupport({tokenIn:t,tokenOut:o,underlyingToken:s}),q(s,"underlyingToken"),f(a);let i=await a.readContract({address:o.address,abi:qo,functionName:"convertToShares",args:[BigInt(r)]}),n=h(o,"SWBERA")&&h(t,"BERA");return{amountOut:i.toString(),amountIn:r,allowanceRequirements:n?[]:[{token:t,spender:o.address,amount:{raw:r,formatted:Rs(BigInt(r),t.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>n?{abi:ws,address:o.address,functionName:"depositNative",params:[BigInt(r),l],value:BigInt(r)}:{abi:qo,address:o.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(r),l],value:0n}}}},Ke=new Fe;import{zeroAddress as ks}from"viem";import{ChainId as Ps}from"@berachain/config/internal";import{metaAggregatorAbi as Cs}from"@berachain/abis/meta-aggregator/metaAggregator";var $o="https://api.fly.trade/aggregator",qe=class extends E{name="Fly";supportedChains=[Ps.MAINNET];type="rest";notFoundMessages=["Couldn't recognize to token","Couldn't recognize from token","There is not enough liquidity. Amount is too high.","Routes were not found"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a,aggregatorsFeeBps:i,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,i),d=new URL(`${$o}/quote`);this.url=d.toString();let g=new URLSearchParams({fromTokenAddress:l,toTokenAddress:u,sellAmount:c,slippage:(s/100).toString(),gasless:"false",network:"berachain"});g.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),g.set("toAddress",this.config.bex.aggregatorsRouterExecutor),d.search=g.toString();let A=await(await this.fetch(d)).json(),R={amountOut:A.amountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i??0},w=new URL(`${$o}/transaction`);this.url=w.toString();let b=new URLSearchParams({quoteId:A.id,estimateGas:"false"});w.search=b.toString();let k=await(await this.fetch(w)).json();return{...R,getCalldata:({account:S})=>{let T=this.getInputData({tokenIn:l,amountIn:r,isNative:m}),I={tokenOut:u,receiver:S,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},N={aggregator:k?.to,data:k?.data};return{params:[T,I,N,{rewardVault:n??ks,isSwapAndStake:!!n}],functionName:"swap",abi:Cs,value:h(t,"BERA")?BigInt(r):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},$e=new qe;import{formatUnits as Ss,parseUnits as Ts,zeroAddress as Es}from"viem";import{ChainId as Is}from"@berachain/config/internal";import{metaAggregatorAbi as xs}from"@berachain/abis/meta-aggregator/metaAggregator";var ze=class extends E{name="Haiku";supportedChains=[Is.MAINNET];type="rest";notFoundMessages=["token not found","Token is not supported","No route found for the given input or the liquidity is not enough","Invalid input amount. Please ensure the total amount of input is greater than 0.001 USD"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,referrer:n,rewardVault:l}){if(t.decimals===void 0||o.decimals===void 0)throw new x({message:"Missing required params",level:"error"});this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:c}=this.parseAddresses(t.address,o.address),d=this.getAmountAfterFees(r,a),g={intent:{allowancesMode:"approve",slippage:s/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${u}`]:Ss(BigInt(d),t.decimals)},target_weights:{[`bera:${m}`]:1}}},y=n==="ZAP"?"zap-haiku":"haiku";this.url=i?"/api/aggregators?aggregator=haikuQuote":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/quoteIntent`;let R=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)})).json(),w={amountOut:Ts(R.balances[0].amount,o.decimals).toString(),amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:a};this.url=i?"/api/aggregators?aggregator=haikuSolve":`${this.config.bex.aggregatorsProxyUrl}/${y}/v1/solveIntent`;let C=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({quoteId:R.quoteId})})).json();return{...w,getCalldata:({account:k})=>{let S=this.getInputData({tokenIn:u,amountIn:r,isNative:p,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),T={tokenOut:m,receiver:k,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:c},I={aggregator:C.to,data:C.data};return{params:[S,T,I,{rewardVault:l??Es,isSwapAndStake:!!l}],functionName:"swap",abi:xs,value:BigInt(p?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},je=new ze;import{formatUnits as zo}from"viem";import{ChainId as Bs}from"@berachain/config/internal";import vs from"@berachain/utils/pkg/bignumber.js";function Os(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var Je=class extends E{name="Honey";supportedChains=[Bs.MAINNET];type="rpc";honeyToken=ue(this);isHoneyNativeSwap({tokenIn:t,tokenOut:o,honeyNativeState:r,...s}){if(!r?.collateralList)return!1;let a=h(o,"HONEY",s),i=h(t,"HONEY",s);return!a&&!i?!1:r.collateralList.some(n=>h(n.address,a?t:o))}checkChainSupport({tokenIn:t,tokenOut:o,honeyNativeState:r}){return super.checkChainSupport({tokenIn:t,tokenOut:o})&&t.chainId===o.chainId&&this.isHoneyNativeSwap({tokenIn:t.address,tokenOut:o.address,honeyNativeState:r})}async getQuote({tokenIn:t,tokenOut:o,amount:r,publicClient:s,account:a,honeyNativeState:i}){let{collateralList:n}=i??{};if(!n)throw new v({message:"Invalid Honey Context state",property:"collaterals",value:n,expected:"TokenWithOrder[]"});f(s),this.assertChainSupport({tokenIn:t,tokenOut:o});let l=h(o,this.honeyToken),u=n,m=n.find(S=>h(S.address,l?t.address:o.address));if(!m)throw new x({message:"This collateral is not part of the Honey protocol"});let[p,c]=await Promise.all([me({client:s,collateralList:[m]}),de({client:s,isMint:l,collateralList:n,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new x({message:"Failed to fetch the Honey vault balances"});if(c)return;let d=p[0],g=m.order;u.length>1&&g!==0&&(u.splice(g,1),u.unshift(m));let y=zo(BigInt(r),l?m.decimals:this.honeyToken.decimals),A={client:s,collateral:m,collateralList:n,amount:y,method:Os(l),latestPrices:void 0,isPythWrapperEnabled:!1},R=await _t(A);if(!R)throw new x({message:"Failed to fetch the Honey preview"});let{honey:w,collaterals:b}=R;if(!(l?!0:new vs(d?.balance.formatted??"0").gte(zo(b[m.address],m.decimals))))return;let k=await Gt({state:{actionType:l?"mint":"redeem",fromAmount:[y],collaterals:u,isBasketModeEnabled:!1},collateralList:u,publicClient:s,priceFeedMap:void 0,isPythWrapperEnabled:!1});if(!k&&a)throw new x({message:"Failed to fetch the Honey swap payload"});return{amountIn:r,amountOut:l?w.toString():b[m.address].toString(),allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:"Honey",swapFeeBps:0,getCalldata:({account:S})=>k({account:S})}}},Ze=new Je;import{zeroAddress as Ds}from"viem";import{ChainId as Ls}from"@berachain/config/internal";import{metaAggregatorAbi as Us}from"@berachain/abis/meta-aggregator/metaAggregator";var Xe=class extends E{name="KyberSwap";supportedChains=[Ls.MAINNET];type="rest";notFoundMessages=["token not found","route not found","amountIn is greater than max allowed"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{isTokenInNative:l,isTokenOutNative:u,tokenInAddress:m,tokenOutAddress:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,a);this.url=i?"/api/aggregators?aggregator=kyberswapRoutes":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/routes`;let d=new URL(this.url);d.searchParams.set("tokenIn",m),d.searchParams.set("tokenOut",p),d.searchParams.set("amountIn",c),d.searchParams.set("slippageTolerance",(s/100).toString()),d.searchParams.set("to",this.config.bex.aggregatorsRouterExecutor),d.searchParams.set("clientData",JSON.stringify({source:"berachain"}));let y=await(await this.fetch(d)).json(),A={amountOut:y.data.routeSummary.amountOut,amountIn:r,name:this.name,swapFeeBps:a,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter})},R={routeSummary:y.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:s*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},w=d.searchParams.entries(),b=new URL(i?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[T,I]of w)b.searchParams.set(T,I);let k=await(await this.fetch(b,{method:"POST",body:JSON.stringify(R)})).json(),S=this.getInputData({tokenIn:m,amountIn:r,isNative:l});return{...A,getCalldata:({account:T})=>{let I={tokenOut:p,receiver:T,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:u},N={aggregator:k.data.routerAddress,data:k.data.data};return{params:[S,I,N,{rewardVault:n??Ds,isSwapAndStake:!!n}],functionName:"swap",abi:Us,value:BigInt(l?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},et=new Xe;import{zeroAddress as Hs}from"viem";import{ChainId as Vs}from"@berachain/config/internal";import{metaAggregatorAbi as Ns}from"@berachain/abis/meta-aggregator/metaAggregator";var tt=class extends E{name="Oogabooga";supportedChains=[Vs.MAINNET];type="rest";async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:n}){this.assertChainSupport({tokenIn:t,tokenOut:o});let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t.address,o.address),c=this.getAmountAfterFees(r,a),d=new URLSearchParams({tokenIn:l,tokenOut:u,amount:c,slippage:(s/100).toString(),to:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter});this.url=i?`/api/aggregators?aggregator=oogabooga&${d.toString()}`:`${this.config.bex.aggregatorsProxyUrl}/oogabooga/v1/swap?${d.toString()}`;let y=await(await this.fetch(this.url)).json(),A={amountOut:y.assumedAmountOut,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,spender:this.config.bex.aggregatorsRouter,rawAmount:r}),name:this.name,priceImpactPercentage:y.priceImpact,swapFeeBps:a};return{...A,getCalldata:({account:R})=>{let w=this.getInputData({tokenIn:l,amountIn:r,isNative:m}),b={tokenOut:u,receiver:R,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},C={aggregator:y.tx?.to,data:y.tx?.data};return{params:[w,b,C,{rewardVault:n??Hs,isSwapAndStake:!!n}],functionName:"swap",abi:Ns,value:BigInt(m?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},ot=new tt;import{zeroAddress as jo}from"viem";import{ChainId as Jo}from"@berachain/config/internal";import{metaAggregatorAbi as Ws}from"@berachain/abis/meta-aggregator/metaAggregator";var rt=class extends E{name="OpenOcean";supportedChains=[Jo.MAINNET];type="rest";url="https://open-api.openocean.finance/v4/bera/swap";notFoundMessages=["No avail liquidity for the pair"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=jo,aggregatorsFeeBps:i,publicClient:n,rewardVault:l}){if(f(n),!t.decimals)throw new v({property:"tokenIn.decimals",value:t.decimals,expected:"number",chainId:this.chainId});this.assertChainSupport({tokenIn:t,tokenOut:o});let u=this.getAmountAfterFees(r,i),{tokenInAddress:m,tokenOutAddress:p,isTokenInNative:c,isTokenOutNative:d}=this.parseAddresses(t.address,o.address),g=(await n.getGasPrice()).toString(),y=new URLSearchParams({chain:Jo.MAINNET.toString(),inTokenAddress:m,outTokenAddress:p,amountDecimals:u,slippage:s<.01?"0.01":s.toString(),account:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter,gasPrice:g}),A=await this.fetch(`${this.url}?${y.toString()}`),R=await A.json();if(R.code!==200||!R.data){let b=this.notFoundMessages.some(C=>R.error.includes(C));throw new F({response:A,endpoint:{url:this.url,name:this.name,type:this.type},cause:R,reason:b?E.PATH_NOT_FOUND_REASON:R.error})}let w={amountOut:R.data.outAmount,amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:this.config.bex.aggregatorsRouter}),name:this.name,swapFeeBps:i};return{...w,getCalldata:({account:b})=>{let C=this.getInputData({tokenIn:m,amountIn:r,isNative:c}),k={tokenOut:p,receiver:b,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:d},S={aggregator:R.data.to,data:R.data.data};return{params:[C,k,S,{rewardVault:l??jo,isSwapAndStake:!!l}],functionName:"swap",abi:Ws,value:BigInt(c?r:"0"),address:this.config.bex.aggregatorsRouter}}}}},st=new rt;import{ChainId as Zo}from"@berachain/config/internal";import{wberaAbi as Xo}from"@berachain/abis/wbera";var at=class extends E{name="Wrap";supportedChains=[Zo.MAINNET,Zo.BEPOLIA];type="rpc";checkChainSupport({tokenIn:t,tokenOut:o}){return t.chainId!==o.chainId||!super.checkChainSupport({tokenIn:t,tokenOut:o})?!1:h(t,"BERA")&&h(o,"WBERA")||h(t,"WBERA")&&h(o,"BERA")}async getQuote({tokenIn:t,tokenOut:o,amount:r}){this.assertChainSupport({tokenIn:t,tokenOut:o});let s=h(t,"BERA")&&h(o,"WBERA");return{amountOut:r,amountIn:r,allowanceRequirements:[],name:s?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,getCalldata:()=>s?{abi:Xo,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(r)}:{abi:Xo,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(r)],value:BigInt(0)}}}},nt=new at;import _s from"swr/immutable";import{zeroAddress as Qs}from"viem";import{metaAggregatorAbi as Ms}from"@berachain/abis/meta-aggregator/metaAggregator";import{usePublicClient as Ys}from"@berachain/wagmi/hooks";var he=()=>{let e=Ys(),{config:t}=P({chainId:e.chain?.id}),o=_s(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==Qs?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,r])=>{let s=await e.readContract({address:r,abi:Ms,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...o,refresh:o.mutate}};import Ks from"swr/immutable";import{useConfig as qs}from"@berachain/wagmi/hooks";import{getPublicClient as Gs}from"@wagmi/core";import{erc4626Abi as Fs}from"viem";async function er({token:e,wagmiConfig:t}){try{if(h(e,"BERA"))return null;let o=Gs(t,{chainId:e.chainId});f(o);let r=await o.readContract({address:e.address,abi:Fs,functionName:"asset"});return await M({address:r,publicClient:o,chainId:e.chainId})}catch(o){let r=kt({cause:o});if(r.reason==='The contract function "asset" reverted.')return null;throw r}}function tr({token:e}){let t=qs();return Ks(e&&t&&!h(e,"BERA")?["useUnderlyingAsset",e]:null,async([,o])=>er({token:o,wagmiConfig:t}))}import $s from"swr";import{parseUnits as zs,zeroAddress as js}from"viem";import{useBeraWallet as Js,usePublicClient as Zs}from"@berachain/wagmi/hooks";var or="useAggregatorsQuotes";function Xs({aggregator:e,account:t,args:o,feeBps:r,options:s,activeAggregators:a,isMAEnabled:i}){if(s?.opts?.isEnabled!==void 0&&!s?.opts?.isEnabled||!Number(o.amount)||!e.checkChainSupport({tokenIn:o.tokenIn,tokenOut:o.tokenOut,underlyingToken:o.underlyingToken,honeyNativeState:o.honeyNativeState}))return null;let n=e.name,l=!["Hub Pools","Honey","Wrap","Unwrap","Mint"].includes(n);if(!i&&l)return null;let{tokenIn:u,tokenOut:m,amount:p,slippage:c,referrer:d,rewardVault:g}=o,y=zs(p,u.decimals).toString();if(!(e.name==="Wrap"||e.name==="RedeemBgt"||e.name==="Honey"||!a||a.includes(n.toLowerCase().replaceAll(" ","")))||e.name==="Honey"&&o.honeyNativeState?.protocol.isPaused)return null;let R=e.name==="Mint"||e.name==="Enso (Mint)";return l&&r===void 0?null:[or,n,u,m,y,c,e.needsAccountForQuote?t:void 0,l?r:0,d,g,R?o.underlyingToken:void 0,e.name==="Honey"?o.honeyNativeState?.collateralList:void 0]}function ea({aggregator:e,publicClient:t,proxyAggregatorsThroughVercel:o}){return async([,,r,s,a,i,n,l,u,m,p,c])=>e.getQuote({tokenIn:r,tokenOut:s,amount:a,slippage:i,account:n,aggregatorsFeeBps:l,publicClient:t,proxyAggregatorsThroughVercel:o,referrer:u,rewardVault:m,underlyingToken:p,honeyNativeState:{collateralList:c??[]}})}function H({feeBps:e,publicClient:t,account:o,proxyAggregatorsThroughVercel:r,activeAggregators:s,isMAEnabled:a,...i},n){return $s(Xs({aggregator:i.aggregator,account:o,args:i,feeBps:e,options:n,activeAggregators:s,isMAEnabled:a}),ea({aggregator:i.aggregator,proxyAggregatorsThroughVercel:r,publicClient:t}),n?.opts)}function it(e){return{refreshInterval:1e4,errorRetryCount:3,...e?.opts,onErrorRetry(t,o,r,s,a){if(e?.opts?.onErrorRetry?.(t,o,r,s,a),!(t instanceof x&&t.reason===E.PATH_NOT_FOUND_REASON)){if(t instanceof F&&t.statusCode===403){console.warn(o[1],"returned error 403, stopping retries");return}a.retryCount>(r.errorRetryCount??3)||setTimeout(()=>{s()},r.errorRetryInterval??ce(10))}}}}function ta(e,t){let{address:o}=Js(),r=U("proxyAggregatorsThroughVercel"),s=U("aggregators"),a=Zs(),{data:i}=he();if(e.aggregator.name!=="Wrap"&&!((h(e.tokenIn.address,"BERA")||h(e.tokenIn.address,"WBERA"))&&(h(e.tokenOut.address,"BERA")||h(e.tokenOut.address,"WBERA"))))return null;let{config:n}=P(e),l=n.bex.aggregatorsRouter!==js;return H({...e,aggregator:e.aggregator,feeBps:i,activeAggregators:s,account:o,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:r},{...t,opts:it(t)})}var ia=[ot,$e,et,st,je,Ge,Qe,Ze,Ke];function bf(e,t){let{address:o}=aa(),r=U("proxyAggregatorsThroughVercel"),s=U("aggregators"),a=na(),{data:i}=he(),n=(h(e.tokenIn.address,"BERA")||h(e.tokenIn.address,"WBERA"))&&(h(e.tokenOut.address,"BERA")||h(e.tokenOut.address,"WBERA")),l=h(e.tokenIn.address,"BGT",{chainId:sa}),{data:u}=tr({token:e.tokenOut}),m=n||l,{config:p}=P(e),c=p.bex.aggregatorsRouter!==ra,d=it(t),g={activeAggregators:s,isMAEnabled:c,underlyingToken:u,isNativeSwap:m,account:o,publicClient:a,proxyAggregatorsThroughVercel:r,feeBps:i},y=H({...g,...e,aggregator:ot},{opts:d}),A=H({...g,...e,aggregator:$e},{opts:d}),R=H({...g,...e,aggregator:Ke},{opts:d}),w=H({...g,...e,aggregator:et},{opts:d}),b=H({...g,...e,aggregator:st},{opts:d}),C=H({...g,...e,aggregator:je},{opts:d}),k=H({...g,...e,aggregator:Ge},{opts:d}),{protocol:S}=Ne(),T=H({...g,...e,aggregator:Qe},{opts:{...d,isEnabled:S.isPaused===!1}}),I=H({...g,...e,aggregator:nt}),N=H({...g,...e,aggregator:Go},{opts:d}),Q=H({...g,...e,aggregator:Ze},{opts:d}),O=n?[I]:l?[N]:[y,R,A,w,b,C,k,Q,S.isPaused===!1?T:null].filter(G=>G!==null);return{...oa(()=>{let G=O.reduce((V,re)=>V||re.error,void 0),Le=O.map((V,re)=>V.isLoading?m?nt.name:ia[re].name:null).filter(Boolean),oe=O.filter(V=>V!==void 0&&!V.isLoading&&!V.error&&V.data?.amountOut).map(({data:V})=>V),ne=oe.length===0&&Le.length>0;return{quotes:oe,loadingAggregatorsNames:Le,isLoading:ne,error:G}},[O]),refresh:()=>O.map(G=>G.mutate())}}import la from"swr";var ua=({query:e}={})=>["useAllUserPools",e],rr=(e,t)=>{let o=la(ua({query:e}),async([r,s])=>pe({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>{o.mutate()}}};import pa from"swr";import{isAddress as ma}from"viem";var da=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function sr({poolId:e,account:t}){let o=pa(da({poolId:e,account:t}),async([,r,s])=>{if(s&&!ma(s))throw new v({property:"account",value:s,expected:"Address"});return Ct({poolId:r,account:s})},{refreshInterval:1e5});return{...o,refresh:()=>{o.mutate()}}}import{useMemo as lr}from"react";import{PoolType as Re}from"@berachain-foundation/berancer-sdk";import fa from"swr/immutable";import{formatUnits as ga,keccak256 as ya,parseUnits as we,zeroAddress as ut}from"viem";import{poolCreationHelperAbi as ur}from"@berachain/abis/bex/poolCreationHelper";import{GetDedupedSubgraphPools as Aa}from"@berachain/graphql/dex/subgraph";import{PoolType as ar}from"@berachain-foundation/berancer-sdk";import{formatUnits as ca}from"viem";var lt=e=>[...e].sort((t,o)=>t.address.toLowerCase().localeCompare(o.address.toLowerCase())),nr=e=>e.length===0?"":lt(e).map(t=>t.symbol).join(" | "),ir=(e,t,o)=>{let r;switch(o){case ar.ComposableStable:r="STABLE";break;default:r=o.toString().toUpperCase();break}return o===ar.Weighted?t.length===0?"":`${lt(e).map((s,a)=>{let i=t[a];return`${(Number.parseFloat(ca(i,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${r}`:`${lt(e).map(s=>s.symbol).join("-")}-${r}`};var ba=.005,ha=(o=>(o.None="None",o.Custom="Custom",o))(ha||{}),Ra=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:o,swapFeePercentage:r,salt:s,poolName:a,poolSymbol:i,owner:n,amplification:l,oracles:u,message:m,actionType:p,gasLimit:c=He})=>{let d=t.map(k=>k.address.toLowerCase()).sort((k,S)=>k<S?-1:1),g=d.map(k=>{let S=o.find(O=>O.address.toLowerCase()===k||h(k,"WBERA")&&h(O.address,"BERA")),T=S?we(S.amount,S.decimals):0n,I=u.find(O=>O.tokenAddress.toLowerCase()===k.toLowerCase()),N=I?I.address:ut,Q=BigInt(I?I.cacheDuration:100);return{amountIn:T,rateProvider:N,cacheDuration:Q}}),y=g.map(k=>k.amountIn),A=g.map(k=>k.rateProvider),R=g.map(k=>k.cacheDuration),w=o.findIndex(k=>h(k.address,"BERA")),b=w!==-1?we(o[w].amount,o[w].decimals):0n,C=b>0n;return{address:e,abi:ur,functionName:"createAndJoinStablePool",params:[a,i,d,BigInt(l),A,R,!1,r,y,n,s,C],message:m,actionType:p,value:b,gasLimit:c,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:i}}}},wa=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:o,normalizedWeights:r,swapFeePercentage:s,salt:a,poolName:i,poolSymbol:n,owner:l,message:u,actionType:m,gasLimit:p=He})=>{let c=[],d=[],g=[],y=[];t.map((w,b)=>({createToken:w.address,joinToken:o[b].address,weight:r[b],amountIn:we(o[b].amount,o[b].decimals)})).sort((w,b)=>w.createToken.toLowerCase()<b.createToken.toLowerCase()?-1:1).forEach(w=>{c.push(w.createToken),d.push(w.joinToken),g.push(w.weight),y.push(w.amountIn)});let A=d.indexOf(ut),R=A!==-1?y[A]:0n;return{address:e,abi:ur,functionName:"createAndJoinWeightedPool",params:[i,n,c,d,g,Array(c.length).fill(ut),s,y,l,a],message:u,actionType:m,value:R,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:i,poolSymbol:n}}}},Yf=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:o,poolType:r,poolName:s,poolSymbol:a,swapFee:i,owner:n,amplification:l,oracles:u,weightsDuplicationThreshold:m=ba,...p})=>{let{data:c,error:d,isLoading:g}=fa(["useCreatePool__deduped_pool",e,r,o],async()=>{if(e.length===0||!r)return null;let w=K("bex.subgraph",{});try{let b=be(e).map(S=>S.address.toLowerCase()).sort((S,T)=>S.toLowerCase()<T.toLowerCase()?-1:1);return(await w.query({query:Aa,variables:{tokens:b,type:r}})).data.pools.filter(S=>S.tokens?.every(T=>r===Re.Weighted?b.includes(T.address)&&Math.abs(Number(T.weight)-Number(ga(o[b.indexOf(T.address)],18)))<m:b.includes(T.address)||T.address===S.address))?.at(0)??null}catch{return null}}),{generatedPoolName:y,generatedPoolSymbol:A}=lr(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let w=nr(e),b=ir(e,o,r);return{generatedPoolName:w,generatedPoolSymbol:b}},[e,o,r]),R=lr(()=>{if(!n||s===""||a===""||e.length!==t.length||e.length===0)return null;let w=we(i.toString(),16),b=ya(Buffer.from(`${s}-${n}`)),{config:C}=P(p);return r===Re.Weighted?wa({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:o,swapFeePercentage:w,salt:b,poolName:s,poolSymbol:a,owner:n,message:`Create pool ${s}`,actionType:"Create Pool"}):r===Re.ComposableStable||r===Re.MetaStable?Ra({poolCreationHelper:C.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,swapFeePercentage:w,salt:b,poolName:s,poolSymbol:a,owner:n,amplification:l,oracles:u,message:`Create pool ${s}`,actionType:"Create Pool"}):null},[e,t,o,r,i,s,a,n,l,u]);return{generatedPoolName:y,generatedPoolSymbol:A,isDupePool:!!c,dupePool:c,createPoolArgs:R,isLoadingPools:g,errorLoadingPools:d}};import Ea from"swr";import{usePublicClient as Ia}from"@berachain/wagmi/hooks";import{erc20Abi as ka,formatUnits as Pa}from"viem";import{GetExploitedTokens as Ca}from"@berachain/graphql/dex/subgraph";import Sa from"@berachain/utils/pkg/bignumber.js";var Ta=1e-4;async function pr({token:e,publicClient:t,...o}){let r=K("bex.subgraph",o),s=await t.readContract({address:e.address,abi:ka,functionName:"totalSupply"}),a=Sa(Pa(s,e.decimals)).multipliedBy(Ta),{data:i}=await r.query({query:Ca,variables:{token:e.address,balance:a.toFixed()}});return i.userInternalBalances.length>0}var xa=e=>{let t=e?.filter(o=>o.address);return!t||t.length===0?null:["useExploitedTokens",t]},eg=({tokens:e})=>{let t=xa(e),o=Ia(),r=Ea(o?t:null,async([,s])=>(f(o),(await Promise.all(s.map(i=>pr({token:i,publicClient:o})))).reduce((i,n,l)=>(n!==void 0&&(i[s[l].address]=n),i),{})));return{...r,refresh:()=>r.mutate()}};import Ba from"swr";var va=()=>{let e=Ba("useGlobalLiquidityAndSwapVolume",async()=>St());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Oa,useState as Da}from"react";import{PoolType as ae}from"@berachain-foundation/berancer-sdk";var La=.05,lg=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:o,tokens:r,weights:s,weightsError:a,poolType:i,liquidityMismatchTolerancePercent:n=La,oracles:l})=>{let[u,m]=Da({title:null,message:null});return Oa(()=>{if(!t||o||!r||!s||a||r.some(b=>!b.address)||l.some(b=>b.mode==="Custom")){m({title:null,message:null});return}let p=0,c=[],d=r.length,y=be(r).map(b=>{let C=t[b.address.toLowerCase()]?.price??0;if(!C||C===0)return c.push(0),null;let k=C*Number.parseFloat(b.amount);return c.push(k),p+=k,C});if(y.some(b=>b===null)||y.length!==d){m({title:"Missing token price data",message:`One or more token(s) do not have valid market price data. Please verify that token market prices align with the pool
2
+ weightings and your initial liquidity amounts.`});return}if(e==="Select Tokens"&&i===ae.ComposableStable){let b=y.map(k=>k/y[0]);Math.max(...b)-Math.min(...b)>n?m({title:"Selected tokens have a significant price deviation",message:"Did you mean to create a Weighted pool instead?",suggestWeighted:!0}):m({title:null,message:null});return}if(p===0||c.some(b=>b===0)){m({title:null,message:null});return}let A=0;if(i===ae.ComposableStable){let b=p/d;c.forEach(C=>{A+=Math.abs(b-C)})}else i===ae.Weighted&&c.forEach((b,C)=>{let k=Number(s[C])/1e18,S=p*k;A+=Math.abs(S-b)});let R=A>=p*.9;A=Math.min(A,p);let w=A/p;w>n?m({title:R?"You could lose all of your initial liquidity":`You could lose $${A.toFixed(2)} (~${(w*100).toFixed(2)}%)`,message:`Based on the market token prices, the value of tokens does not align with the specified pool weights.
3
+ This discrepancy could expose you to potential losses from arbitrageurs. ${i===ae.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:i===ae.ComposableStable}):m({title:null,message:null})},[e,t,o,r,s,a,i,n,l]),u};import{formatEther as gr,isAddressEqual as sn}from"viem";import yr from"@berachain/utils/pkg/bignumber.js";import _a from"swr";import{isAddress as mr,zeroAddress as Qa}from"viem";import{rewardVaultAbi as Ma}from"@berachain/abis/pol/rewards/rewardVault";import{useBeraWallet as Ya,usePublicClient as Ga}from"@berachain/wagmi/hooks";import Ua from"swr/immutable";import{isAddress as Ha,zeroAddress as Va}from"viem";import{rewardVaultFactoryAbi as Na}from"@berachain/abis/pol/rewards/rewardVaultFactory";import{usePublicClient as Wa}from"@berachain/wagmi/hooks";var pt=({tokenAddress:e},{isEnabled:t=!0}={})=>{let o=Wa(),r=o&&e&&Ha(e)&&t?["useRewardVaultFromToken",e]:null,s=Ua(r,async([,a])=>{if(!a)throw new Error("useRewardVaultFromToken needs a valid token address");f(o);let{config:i}=P({chainId:o.chain.id}),n=await o.readContract({address:i.pol.factory,abi:Na,functionName:"getVault",args:[a]});return n===Va?void 0:n});return{...s,refresh:()=>s.mutate()}};var dr=({stakingToken:e,rewardVaultAddress:t},o)=>{let{address:r}=Ya(),s=Ga(),a=o?.opts?.isEnabled??!0,{data:i=t,error:n,mutate:l,isLoading:u}=pt({tokenAddress:e},{isEnabled:!t&&a}),m=_a(i&&r&&s&&mr(i)&&mr(r)&&a?["useVaultBalanceFromStakingToken",i,r]:null,async([,p,c])=>{if(f(s),p===Qa)return{address:p,balance:0n};let d=await s.readContract({address:p,abi:Ma,functionName:"balanceOf",args:[c]});return{address:p,balance:d}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import ja from"swr";import{erc20Abi as Ja,formatEther as Za,formatUnits as Xa,isAddress as fr,zeroAddress as en}from"viem";import{defaultChainId as tn}from"@berachain/config/internal";import{useBeraWallet as on,usePublicClient as rn}from"@berachain/wagmi/hooks";import Fa from"swr/immutable";import{isAddress as Ka,zeroAddress as qa}from"viem";import{defaultChainId as $a}from"@berachain/config/internal";import{usePublicClient as za}from"@berachain/wagmi/hooks";function cr(e,t){let o=za({chainId:e.chainId}),r=e?.address&&o&&Ka(e.address)?["useTokenInformation",e.address,e.chainId]:null,s=Fa(r,async([a,i,n=$a])=>h(i,"BERA")?{address:qa,decimals:D.decimals,name:D.name,symbol:D.symbol,chainId:n}:(f(o),await M({address:i,publicClient:o,chainId:n})),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}function ke({address:e,owner:t,chainId:o=tn},r){let s=e;h(s,"ETH")&&(s=en);let a=rn({chainId:o}),{address:i}=on(),n=t??i,l=(r?.opts?.isEnabled??!0)&&a&&n&&fr(n)&&s&&fr(s)?["usePollBalance",n,s,o]:null,{data:u,isLoading:m}=cr({address:s,chainId:o}),p=h(s,"BERA"),{isLoading:c,data:d,error:g,...y}=ja(l,async([,w,b])=>(f(a),h(b,"BERA")?await a.getBalance({address:w}):await a.readContract({address:b,abi:Ja,functionName:"balanceOf",args:[w]})),{refreshInterval:1e4}),A=!g&&d?h(s,"BERA")?Za(d):u&&!m?Xa(d,u.decimals):void 0:void 0,R={chainId:o,balance:d?{raw:d.toString(),formatted:A??"0"}:{raw:"0",formatted:"0"},address:s,decimals:p?D.decimals:u?.decimals??0,symbol:p?D.symbol:u?.symbol??"",name:p?D.name:u?.name??""};return{...y,refresh:()=>{y.mutate()},isLoading:c||p?m:!1,error:g||!p?g:void 0,data:R}}var Gg=({pool:e,vaultAddress:t},o)=>{let{data:r,...s}=ke({address:e?.address}),{data:a,refresh:i}=dr({stakingToken:e?.address,rewardVaultAddress:t??e?.rewardVault?.vaultAddress},o),n=e?Number.parseFloat(e?.dynamicData?.totalShares??"0"):0,l=e?.dynamicData?.totalLiquidity?Number(e?.dynamicData?.totalLiquidity??0):null,u=n&&l?l/Number(n):0,m=e?.tokens?.map(p=>({address:p.address,ratio:n?Number(p.balance)/Number(n):0}));return{data:{lpTokenPrice:u,lpBalance:r?{...r,usdValue:r?Number(r.balance.formatted)*u:void 0}:void 0,tokenBalances:e?.tokens?.map(p=>{let c=m?.find(y=>sn(y.address,p.address))?.ratio??0,d=c?yr(r?.balance.formatted??"0").times(c):yr(0),g=Number(p.balanceUSD)/Number(p.balance);return{...p,balance:{raw:d?.isGreaterThan(0)?d.times(10**p.decimals).toFixed(0).toString():"0",formatted:d.toString()},price:g,usdValue:Number.isNaN(g)||!d?void 0:Number.parseFloat(d.toString())*g}}),stakedBalance:a?.address?{...a,balance:{raw:a.balance.toString(),formatted:gr(a.balance)},usdValue:Number(gr(a.balance))*u}:void 0},...s,refresh:()=>{s.refresh?.(),i()}}};import{useMemo as br}from"react";import{parseUnits as un,zeroAddress as pn}from"viem";import hr from"@berachain/utils/pkg/bignumber.js";import an from"swr";import{useBeraWallet as nn,useConfig as ln}from"@berachain/wagmi/hooks";function Ar(e,t){let o=ln(),{address:r}=nn(),s=o&&r&&e?.items?["usePollAllowances",r,e?.items]:null,a=an(s,async([,i,n])=>fo({items:n,account:i,config:o}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a?.mutate?.()}}function mn({amount:e,decimals:t,slippage:o}){let r=un((o??0).toString(),t);return e+e*r/BigInt(100*10**t)}function dn(e,t){let{slippage:o}=t??{},r=br(()=>e.filter(l=>l.token.address!==pn).filter(l=>hr(l.amount.formatted).gt(0)),[e]),{data:s,refresh:a,isLoading:i}=Ar({items:r});return{needsApproval:br(()=>s?.map(l=>{let u=r.find(p=>h(p.token.address,l.token));if(!u)throw new x({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,items:r}});let m=mn({decimals:u.token.decimals,amount:BigInt(u.amount.raw),slippage:o});if(hr(l.allowance.raw).lt(m))return{...u,needsApproval:!0,maxAmountIn:m,allowance:{raw:l.allowance.raw,formatted:l.allowance.formatted}}}).filter(l=>l!==void 0)??[],[s,o,r]),refresh:a,isLoading:i}}import{useMemo as wn}from"react";import kn from"swr/immutable";import{formatUnits as Pn,isAddress as Cn}from"viem";import{usePublicClient as Sn}from"@berachain/wagmi/hooks";import cn from"swr/immutable";import{isAddress as fn}from"viem";import{defaultChainId as gn}from"@berachain/config/internal";import{usePublicClient as yn}from"@berachain/wagmi/hooks";function Rr(e,t){let o=yn(),r=o&&e.addresses?["useMultipleTokenInformation",e.addresses,e.chainId??gn]:null,s=cn(r,async([,a,i])=>(f(o),Promise.all(a.map(async n=>{if(!n||!fn(n,{strict:!1}))throw new Error("Invalid address");let l=await M({address:n,publicClient:o,chainId:i});if(!l)throw new Error(`Token ${n} not found`);return l}))),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}import{useMemo as Pe}from"react";import bn from"swr";import{isAddress as hn,zeroAddress as Rn}from"viem";import{defaultChainId as j}from"@berachain/config/internal";import{useContext as An}from"react";function z(){let e=An(Ho);if(!e)throw new x({message:"useTokens must be used within a TokensProvider",level:"fatal"});return{...e,data:{tokenList:e.tokenList,customTokenList:e.userTokens,featuredTokenList:e.featuredTokens}}}function J({addressIn:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:o,ensoTokens:r}=z(),s=Pe(()=>{let p=[];return e&&p.push(...e.filter(c=>hn(c))),p.map(c=>c.toLowerCase())},[o]),i=Pe(()=>{let p=new Set(o?.map(c=>c.address.toLowerCase()));return o.some(c=>h(c,"WBERA"))&&p.add(Rn),s?.some(c=>!p.has(c))},[s,o])?s:o.map(p=>p.address),n=i&&(t.opts?.isEnabled??!0)?["useTokenCurrentPrices",i.map(p=>p.toLowerCase())]:null,l=bn(n,async([,p])=>co({addressIn:p}),t.opts),u=Pe(()=>{if(!r)return{};let p=new Map([[j,new Map]]);for(let c of r)c.price===void 0||c.chainId!==j||p.get(j)?.set(c.address.toLowerCase(),{...c,price:c.price,chainId:j});return Object.fromEntries(i.map(c=>{let d=p.get(j)?.get(c)?.price;return d?[c.toLowerCase(),{price:d,chainId:j,updatedAt:Date.now()}]:[null,null]}))},[r]),m=Pe(()=>({...u,...l.data}),[u,l.data]);return{...l,data:m}}function Tn(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return Cn(t)&&t?["useOnChainPoolData",t]:null}function wr(e){let t=Sn(),o=e?.slice(0,42),r=Tn({poolId:e}),{data:s,error:a,isLoading:i,mutate:n}=kn(t?r:null,async([,d])=>Tt({poolId:d,publicClient:t})),{data:l,isLoading:u}=Rr({addresses:s?.poolTokens[0]}),{data:m,isLoading:p}=J({addressIn:s?.poolTokens[0]});return{data:wn(()=>{if(!s||!l)return;let d={address:o.toLowerCase(),id:e.toLowerCase(),type:s.type,factory:s.factory,totalShares:s.totalSupply,totalLiquidity:"0",swapFee:s.swapFee,createTime:0,name:s.name,tokens:l.map((y,A)=>({address:y.address.toLowerCase(),name:y.name,decimals:y.decimals,symbol:y.symbol,index:A,weight:s.weights?.[A]??void 0,balance:Pn(BigInt(s.poolTokens[1][A]),y.decimals),token:{__typename:"Token",token:y,latestUSDPrice:m?.[y.address]}})),amplificationParameter:s?.amplificationParameter&&{currentFormattedValue:Number(s.amplificationParameter[0])/Number(s.amplificationParameter[2])}},g=d.tokens?.reduce((y,A)=>{let R=Number(m?.[A.address.toLowerCase()]?.price??0);return R?y+R*Number(A.balance):y},0);return d.totalLiquidity=g?.toString()??"",d},[s,l,m,o,e]),error:a,isLoading:i||u||p,mutate:n,refresh:()=>n()}}import En from"swr";import{vaultAbi as In}from"@berachain/abis/bex/vault";import{useBeraWallet as xn,usePublicClient as Bn}from"@berachain/wagmi/hooks";var vn=e=>{let{address:t}=xn(),o=Bn(),r=t&&o?["usePollPoolCreationRelayerApproval",t,o.chain.id]:null,s=En(r,async([,i])=>{f(o);let{config:n}=P({chainId:o.chain.id});return await o.readContract({address:n.bex.vault,abi:In,functionName:"hasApprovedRelayer",args:[i,n.bex.poolCreationHelper]})},{...e?.opts});return{...s,refreshPoolCreationApproval:()=>{s.mutate()}}};import{useMemo as On}from"react";import Dn from"swr";function Ln({poolId:e}){return e?["usePool-subgraph",e]:null}var Qy=({poolId:e})=>{let t=Dn(Ln({poolId:e}),async([,n])=>xt({poolId:n}),{refreshInterval:1e5}),o=sr({poolId:e}),{data:r,isLoading:s,refresh:a}=wr(e);return{data:[On(()=>{if(!t.data)return r;let n={...t.data};return r&&(n.swapFee=r.swapFee,n.totalShares=r.totalShares,n.createTime=r.createTime??n.createTime),n},[r,t]),o.data,r],isLoading:o.isLoading||t.isLoading||s,isError:o.error||t.error,refresh:()=>{o.refresh(),t.mutate(),a()}}};import Un from"swr/immutable";var Fy=({poolId:e,typeInArray:t})=>Un(e?["usePoolEvents",e,t]:null,async([,o,r])=>Et({poolId:o,typeInArray:r}),{refreshInterval:18e4});import Hn from"swr";var jy=({poolId:e,...t},o)=>{let{config:r}=P(t),a=Hn(e?["usePoolHistoricalData",e]:null,async([,i])=>await It({poolId:i,chain:r.bex.chainName}),o?.opts);return{...a,refresh:()=>void a.mutate()}};import{useMemo as kr}from"react";import Vn from"swr";import{useBeraWallet as Nn}from"@berachain/wagmi/hooks";var Wn=({query:e}={})=>["useAllPools",e],rA=(e,t)=>{let{address:o}=Nn(),{data:r,isLoading:s,mutate:a}=rr({userAddress:o,chain:e.chain}),{data:i,isLoading:n,mutate:l}=Vn(Wn({query:e}),async([p,c])=>pe(c),{refreshInterval:18e4,...t?.opts}),u=kr(()=>{if(!i||!r?.pools?.length)return i?.pools??[];let p=Object.fromEntries(r.pools.map(c=>[c.id.toLowerCase(),c]));return i.pools.map(c=>({...c,...p[c.id.toLowerCase()]||{}})).filter(Boolean)},[i,r]),m=kr(()=>({page:Math.ceil((e?.skip??0)/(e?.first??10)),pageSize:e?.first,count:Math.ceil((i?.count??0)/(e?.first??10))}),[i,e.skip,e.first]);return{pools:u??[],walletPools:i?.pools??[],isLoading:n||s,refresh:()=>{l(),a()},pagination:m}};import{useMemo as Qn}from"react";import{useCallback as _n,useMemo as Pr}from"react";import{defaultChainId as Z}from"@berachain/config/internal";function Y({tokens:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{ensoTokens:o}=z(),r=J({addressIn:e?.filter(n=>n.chainId===Z).map(n=>n.address)},t),s=Pr(()=>{let n=[];if(!e)return[];let l=new Map;for(let u of e){let m=u.chainId??Z;l.has(m)||l.set(m,new Map),l.get(m)?.set(u.address.toLowerCase(),u)}if(r.data){for(let[u,m]of Object.entries(r.data))if(m&&l.get(m.chainId??Z)?.get(u.toLowerCase())&&m.price!==void 0){let p=l.get(m.chainId??Z)?.get(u.toLowerCase());if(!p)continue;n.push({...p,chainId:m.chainId,price:m.price})}}if(o)for(let u of o)u.price!==void 0&&u.chainId!==void 0&&n.push({...u,chainId:u.chainId,price:u.price});return n},[r.data,o,e]),a=Pr(()=>{let n={};for(let l of s){let u=l.chainId??Z;n[u]||(n[u]={}),n[u][l.address.toLowerCase()]=l.price}return n},[s]),i=_n(n=>n?a[n.chainId??Z]?.[n.address?.toLowerCase()]??void 0:void 0,[a]);return{isLoading:r.isLoading,data:s,priceMap:a,getTokenPrice:i}}function Ce({tokenIn:e,tokenOut:t,formattedAmountIn:o,formattedAmountOut:r}){let{getTokenPrice:s,isLoading:a}=Y({tokens:e&&t?[e,t]:void 0});return{data:Qn(()=>{if(!e||!t||!o||!r)return;let n=s(e),l=s(t);return!n||!l?null:Vo(n.toString(),l.toString(),o,r)},[e,t,o,r]),isLoading:a}}import Mn from"swr";import{formatEther as Yn,parseUnits as Gn,zeroAddress as Sr}from"viem";import{defaultChainId as Fn}from"@berachain/config/internal";import{useBeraWallet as Kn,usePublicClient as qn}from"@berachain/wagmi/hooks";import{ethAddress as Cr,zeroAddress as mt}from"viem";var dt=class extends E{name="Enso (Mint)";supportedChains=null;type="rest";needsAccountForQuote=!0;notFoundMessages=["Could not build shortcuts for route","Could not quote shortcuts for route","Swap not found for a required underlying of defi route,","No route found from"];async getQuote({tokenIn:t,tokenOut:o,amount:r,slippage:s,account:a=mt,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l,underlyingToken:u}){this.assertChainSupport({tokenIn:t,tokenOut:o}),_(a,"account");let m=ie({useProxy:!n});t.address===mt&&(t.address=Cr),o.address===mt&&(o.address=Cr);let p=u??o,c=[{protocol:"enso",action:"route",args:{tokenIn:t.address,tokenOut:p.address,destinationChainId:t.chainId===p.chainId?void 0:p.chainId,refundReceiver:a,amountIn:r,slippage:s*100}}];if(u&&c.push({protocol:"erc4626",action:"deposit",args:{amountIn:{useOutputOfCallAt:0},tokenIn:u.address,primaryAddress:o.address,tokenOut:o.address}}),l){let A=c.length;c.push({protocol:"enso",action:"balance",args:{token:o.address}},{protocol:"erc20",action:"approve",args:{amount:{useOutputOfCallAt:A},spender:l,token:o.address}},{protocol:"enso",action:"call",args:{address:l,args:[a,{useOutputOfCallAt:A}],method:"stakeOnBehalf",abi:"function stakeOnBehalf(address account, uint256 amount) external"}},{protocol:"enso",action:"balance",args:{token:l}})}let d=await m.getBundleData({fromAddress:a,receiver:a,spender:a,chainId:t.chainId,routingStrategy:"router"},c),g=l?.toLowerCase()??o.address.toLowerCase();return{amountOut:d.minAmountsOut[g]??d.amountsOut[g]??"0",amountIn:r,allowanceRequirements:this.parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:d.tx.to}),name:this.name,swapFeeBps:0,priceImpactPercentage:d.priceImpact?d.priceImpact/100:null,getCalldata:()=>({address:d.tx.to,data:d.tx.data,value:BigInt(d.tx.value??0)})}}},Se=new dt;function BA({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s,slippage:a},i){let{getTokenPrice:n}=Y({tokens:e&&t?[e,t]:void 0}),l=$n({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s?Gn(s,e?.decimals??18).toString():void 0,slippage:a},i),{data:u}=No({sharesAmount:BigInt(l.data?.amountOut??0),vaultAddress:o.address}),{data:m}=Ce({tokenIn:e,tokenOut:t,formattedAmountIn:s,formattedAmountOut:u?.formatted??"0"}),p=e?.chainId&&e.chainId!==Fn,{data:c,isLoading:d}=ke({address:Sr,chainId:p?e?.chainId:void 0},{opts:{isEnabled:!!p}}),g=l.data?.getCalldata?.({account:Sr})?.value??0n,y=c?.balance??{raw:"0",formatted:"0"},A=p&&g>0n&&!d&&g>BigInt(y.raw),R=p&&g>0n?Yn(g):void 0;return{...l,zapSupplyAmount:u,priceImpact:m,hasInsufficientNativeBalance:A,isCrossChain:p,nativeFee:R,refresh:()=>{l.mutate()}}}function $n({tokenIn:e,loanToken:t,bendVault:o,rewardVault:r,amount:s,slippage:a},i){let{address:n}=Kn(),l=!!e&&!!t&&!!o&&!!s&&!!n&&!h(t.address,e.address)&&e.chainId&&Number(s)>0&&!!a,u=qn();return Mn(l?["useBendZapSupply",e,t,o,r,s,a]:null,async([,p,c,d,g,y,A])=>(f(u),_(n,"fromAddress"),_(p?.address,"tokenInAddress"),q(p?.chainId,"tokenInChainId"),await Se.getQuote({tokenIn:p,tokenOut:d,underlyingToken:c,amount:y,slippage:A,account:n,rewardVault:g})),{...i?.opts,refreshInterval:1e5})}import{getPublicClient as si}from"@wagmi/core";import ai from"swr";import{parseUnits as ni}from"viem";import{defaultChainId as ii}from"@berachain/config/internal";import{useBeraWallet as li,useConfig as ui}from"@berachain/wagmi/hooks";import{ethAddress as Jn,zeroAddress as Zn}from"viem";import{erc20Abi as zn,ethAddress as jn}from"viem";var Tr=async({fromAddress:e,amountIn:t,tokenIn:o,chainId:r,ensoClient:s,bundle:a,publicClient:i})=>{let n=[];if(o!==jn){let l=await s.getApprovalData({fromAddress:e,tokenAddress:o,chainId:r,amount:t}),u=!0;i&&(u=await i.readContract({address:o,abi:zn,functionName:"allowance",args:[e,l.spender]})<BigInt(t)),u&&n.push({to:l.tx.to,data:l.tx.data,value:l.tx.value,gasLimit:BigInt(l.gas)})}return n.push({to:a.tx.to,data:a.tx.data,value:a.tx.value,gasLimit:BigInt(a.gas)}),n};async function Er({fromAddress:e,amountIn:t,tokenIn:o,tokenOut:r,chainId:s,ensoClient:a,destinationChainId:i,slippage:n,publicClient:l}){if(!e)throw new v({property:"fromAddress",value:e,expected:"address"});r===Zn&&(r=Jn);let u={protocol:"enso",action:"route",args:{tokenIn:o,tokenOut:r,amountIn:t,slippage:n*100}};i&&i!==s&&(u.args={...u.args,destinationChainId:i,refundReceiver:e});let m=await a.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:s,routingStrategy:"router"},[u]),p=await Tr({fromAddress:e,amountIn:t,tokenIn:o,chainId:s,ensoClient:a,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{useMemo as Xn}from"react";import ei from"swr";import{useBeraWallet as ti,useConfig as oi,usePublicClient as ri}from"@berachain/wagmi/hooks";function Te(e,t){let o=ri(),r=oi(),{address:s}=ti(),{tokenList:a,refresh:i}=z(),n=e?.walletAddress??s,l=Xn(()=>new Map((e?.tokens??a)?.map(p=>[p.address.toLowerCase(),p])??[]),[a,e?.tokens]),u=o&&a!==void 0&&n?["usePollWalletBalances",n,Array.from(l.values())]:null,m=ei(u,async([,p,c])=>Ae({account:p,tokenList:c,wagmiConfig:r}),{refreshInterval:1e5,...t?.opts});return{...m,refresh:()=>{m?.mutate?.(),i()}}}function XA({tokenIn:e,tokenOut:t,amount:o,slippage:r}){let{address:s}=li(),a=ui(),i=ie(),{refresh:n}=Te(),l=!!e&&!!t&&!!o&&Number(o)>0&&!!r&&!!s&&!!e.chainId,m=ai(l?["useEnsoSwapBundle",e,t,o,r]:null,async([,p,c,d,g])=>{_(s,"fromAddress"),_(p?.address,"tokenInAddress"),q(p?.chainId,"tokenInChainId"),_(c?.address,"tokenOutAddress"),Ue(d,"amount"),Ue(g,"slippage");let y=si(a,{chainId:p.chainId});f(y);let A=ni(d,p.decimals).toString();return Er({fromAddress:s,amountIn:A,tokenIn:p.address,tokenOut:c.address,chainId:p.chainId,ensoClient:i,destinationChainId:ii,slippage:g,publicClient:y})},{refreshInterval:1e5,isEnabled:l});return{...m,refresh:()=>{m.mutate(),n()}}}import pi from"swr";import{formatUnits as mi,parseUnits as di}from"viem";import{chainConfigs as ci,defaultChainId as fi}from"@berachain/config/internal";import{useBeraWallet as gi}from"@berachain/wagmi/hooks";function ib({inputToken:e,amount:t,underlyingToken:o,slippage:r,tokenOut:s},a){let{address:i}=gi(),n=i??ci[fi].bex.aggregatorsRouterExecutor,u=!!e&&!!t&&Number(t)>0&&!!e.chainId&&!!o&&!!r?["useZapStakeBera",e,t,n,r,o,s]:null,m=pi(u,async([,c,d,g,y,A,R])=>{let w=di(d,c.decimals).toString();return Se.getQuote({account:g,amount:w,tokenIn:c,underlyingToken:A,tokenOut:R,slippage:y})},{...a?.opts,refreshInterval:1e5}),{data:p}=Ce({tokenIn:e,tokenOut:s,formattedAmountIn:t,formattedAmountOut:mi(BigInt(m.data?.amountOut??"0"),s.decimals)});return{...m,data:{...m.data,priceImpactPercentage:p,isCrossChain:e&&s.chainId!==e?.chainId},refresh:()=>{m.mutate()}}}import{useCallback as ct,useEffect as ki,useState as Pi}from"react";import yi from"gray-matter";import{encodeFunctionData as Ie,erc20Abi as Ai,parseAbiItem as bi,toHex as hi}from"viem";import{beraChefAbi as Ri}from"@berachain/abis/pol/rewards/beraChef";import{rewardVaultAbi as wi}from"@berachain/abis/pol/rewards/rewardVault";function Ee(e){return Object.values(e).some(t=>Array.isArray(t)?t.some(o=>typeof o=="object"&&o!==null?Ee(o):!!o):typeof t=="object"&&t!==null?Ee(t):!!t)}var Ir=({proposal:e,currentTopic:t,onError:o})=>{let r=vt(e,t),s=[];if(r.actions=e.actions.map((n,l)=>{let u={};if(u.target=L({fieldOrType:"address",value:n.target}),n.type==="custom-action")if(n.input==="ABI")if(u.ABI=L({fieldOrType:"abi",value:n.ABI}),!n.functionSignature)u.functionSignature="Required";else try{let p=bi(n.functionSignature);p.type!=="function"?(console.error("parsedSignatureAbi is not a function",p),u.functionSignature="Invalid ABI"):(u.args=p.inputs.map((c,d)=>{try{return"components"in c?L({fieldOrType:c.type,value:n.args?.[d],components:c.components}):L({fieldOrType:c.type,value:n.args?.[d]})}catch{return null}}),u.args.some(c=>c)||(s[l]=Ie({abi:[p],args:n.args})))}catch{u.functionSignature="Invalid ABI"}else if(n.input==="rawCalldata")u.rawCalldata=L({fieldOrType:"hex",value:n.rawCalldata}),s[l]=n.rawCalldata;else if(n.input==="message")u.message=L({fieldOrType:"string",value:n.message}),s[l]=hi(n.message);else throw new Error("Invalid input type");else if(n.type==="whitelist-reward-vault"||n.type==="blacklist-reward-vault"){if(u.vault=L({fieldOrType:"address",value:n.vault}),!u.vault){let p=n.type==="whitelist-reward-vault";s[l]=Ie({abi:Ri,functionName:"setVaultWhitelistedStatus",args:[n.vault,p,""]})}}else n.type==="whitelist-reward-vault-incentive"?(u.token=L({fieldOrType:"address",value:n.token}),u.minIncentiveRate=L({fieldOrType:"uint256",value:n.minIncentiveRate}),u.managerAddress=L({fieldOrType:"address",value:n.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(s[l]=Ie({abi:wi,functionName:"whitelistIncentiveToken",args:[n.token,BigInt(n.minIncentiveRate),n.managerAddress]}))):n.type==="erc20-transfer"&&(u.amount=L({fieldOrType:"uint256",value:n.amount}),u.to=L({fieldOrType:"address",value:n.to}),!u.amount&&!u.to&&(s[l]=Ie({abi:Ai,functionName:"transfer",args:[n.to,BigInt(n.amount)]})));return Ee(u)?u:null}),o?.(r),Object.getOwnPropertyNames(r).map(n=>r[n]).some(n=>Array.isArray(n)?n.filter(l=>l).length>0:n===null?!1:!!n)){console.warn("Proposal has errors",r);return}if(s.length===0)throw new Error("No actions submitted in proposal");let a=new URL(e.forumLink),i=yi.stringify(e.description,{title:e.title,topics:Array.from(e.topic.values()),forumLink:a.toString(),version:"1.0.0","content-encoding":"utf-8","content-type":"text/markdown",actions:e.actions.map(n=>{let l={type:n.type};return n.type==="custom-action"&&(l.inputType=n.input),l})});return[e.actions.map(n=>n.target),e.actions.map(n=>n.value??0n),s,i]};var xr={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},Ci=({initialData:e={},currentTopic:t,onError:o})=>{let[r,s]=Pi({title:"",description:"",forumLink:"",actions:[xr],...e,topic:new Set});ki(()=>{s(l=>({...l,topic:new Set([t.id])}))},[t]);let a=ct(()=>{s(l=>({...l,actions:[...l.actions,xr]}))},[]),i=ct(l=>{s(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[s]),n=ct(()=>r?Ir({proposal:r,currentTopic:t,onError:o}):void 0,[r,t]);return{proposal:r,setProposal:s,addProposalAction:a,removeProposalAction:i,computeParamsAndErrors:n}};import Ii from"swr/immutable";import{formatUnits as xi}from"viem";import{bgtAbi as Bi}from"@berachain/abis/pol/bgt";import{useBeraWallet as vi,usePublicClient as Oi}from"@berachain/wagmi/hooks";import Si from"swr/immutable";import{berachainGovernanceAbi as Ti}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as Ei}from"@berachain/wagmi/hooks";var Br=({proposalId:e})=>{let t=Ei();return Si(t&&e?["useProposalSnapshot",e]:null,async([,r])=>{f(t);let{config:s}=P({chainId:t.chain.id});return(await t.readContract({abi:Ti,address:s.governance.governor,functionName:"proposalSnapshot",args:[BigInt(r)]})).toString()})};var Lb=e=>{let{address:t}=vi(),o=Oi(),r=e.wallet||t,{data:s}=Br({proposalId:e.proposalId}),a=e.timepoint||s;return Ii(a&&o&&r?["useGetPastVotes",a,r]:null,async([,n,l])=>{f(o);let{config:u}=P({chainId:o.chain.id});if(Number(n)>Date.now()/1e3)throw new Error("timepoint is in the future");let m=await o.readContract({abi:Bi,address:u.tokens.bgt,functionName:"getPastVotes",args:[l,BigInt(n)]});return xi(m,18)})};import Di from"swr";import{isAddress as Li}from"viem";import{berachainGovernanceAbi as Ui}from"@berachain/abis/gov/berachainGovernance";import{useBeraWallet as Hi,usePublicClient as Vi}from"@berachain/wagmi/hooks";var Mb=({proposalId:e,wallet:t})=>{let{address:o}=Hi(),r=Vi(),s=t||o;return Di(r&&s&&Li(s)?["useHasVoted",e,s]:null,([,a,i])=>{f(r);let{config:n}=P({chainId:r.chain.id});return r.readContract({address:n.governance.governor,abi:Ui,functionName:"hasVoted",args:[BigInt(a),i]})})};import Ni from"swr";import{timeLockAbi as Wi}from"@berachain/abis/gov/timeLock";import{usePublicClient as _i}from"@berachain/wagmi/hooks";var vr="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var Jb=({account:e,...t})=>{let o=_i(),{config:r}=P(t);return Ni(e&&o?["useCancellerRole",e]:null,async([,a])=>(f(o),await o.readContract({abi:Wi,address:r.governance.timelock,functionName:"hasRole",args:[vr,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as Or,useMemo as Qi,useState as Mi}from"react";import Yi from"swr/infinite";import{Proposal_OrderBy as Gi,ProposalStatus as W}from"@berachain/graphql/governance";var Dr=10,Fi=e=>{switch(e){case W.QuorumNotReached:return[W.Active,W.Pending];case W.PendingQueue:case W.Defeated:return[W.Active];case W.PendingExecution:return[W.InQueue];default:return[e]}};function Ki(e,t={}){let o=2*(t.perPage??Dr);return(r,s)=>{if(r!==0&&s&&s.length<o)return null;let a=t.status_in?.flatMap(Fi).filter((i,n,l)=>l.indexOf(i)===n);return["usePollAllProposals",r,e,t.where,a,t.orderBy,t.orderDirection,o,t.text]}}function rh(e,t){let o=t?.autoRefresh??!1,r=e.perPage??Dr,s=2*r,a=Ki(e.topic,e);async function i(d){if(!d)return[];let[,g,y,A,R,w,b,C,k]=d;return(await Bt({where:{topics_contains:[y],status_in:R?.length?R:void 0,...A},orderBy:w,orderDirection:b,text:k,perPage:C,offset:g*C})??[]).filter(Boolean)}let n=Yi(a,i,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=Qi(()=>{if(!n.data)return[];let d=n.data.flat().filter(y=>y?e.status_in?.length?e.status_in.includes(y.status):!0:!1).sort((y,A)=>{if(!e.text)return 0;if(e.orderBy===Gi.CreatedAt){let R=Number(A.createdAt)-Number(y.createdAt);return e.orderDirection==="asc"?R:-R}return 0}),g=[];for(let y=0;y<d.length;y+=r)g.push(d.slice(y,y+r));return g},[n.data,e,r]),u=n.data?.[n.data.length-1],m=!!u&&u.length===s,[p,c]=Mi(Date.now()/1e3);return Or(()=>{if(!o)return;let d=setInterval(()=>{c(Date.now()/1e3)},1e4);return()=>clearInterval(d)},[o]),Or(()=>{if(!n.data)return;let d=!1;for(let g of n.data.flat()){switch(g.status){case W.Pending:p>=Number(g.voteStartAt)&&(d=!0);break;case W.Active:p>=Number(g.voteEndAt)&&(d=!0);break;case W.InQueue:Date.now()/1e3+1>=Number(g.queueEnd)&&(d=!0);break;default:break}if(d)break}d&&n.mutate()},[n.data,p]),{...n,data:l,hasMore:m}}import{useEffect as Lr,useState as qi}from"react";import $i from"swr";import{ProposalStatus as ft}from"@berachain/graphql/governance";import{usePublicClient as zi}from"@berachain/wagmi/hooks";var mh=(e,t)=>{let o=t?.autoRefresh??!1,r=zi(),a=$i(e&&r?["usePollProposal",e]:null,([,l])=>(f(r),Ot({proposalId:l,client:r})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[i,n]=qi(Date.now());return Lr(()=>{if(!o)return;let l=setInterval(()=>{n(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),Lr(()=>{if(a.data!==void 0)switch(a.data.status){case ft.Pending:i>=Number(a.data.voteStartAt)&&a.mutate();break;case ft.Active:i>=Number(a.data.voteEndAt)&&a.mutate();break;case ft.InQueue:Date.now()/1e3+1>=Number(a.data.queueEnd)&&a.mutate();break}},[a.data?.status,i]),{...a,refresh:()=>a?.mutate?.()}};import ji from"swr";import{formatEther as Ji}from"viem";import{berachainGovernanceAbi as Zi}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as Xi}from"@berachain/wagmi/hooks";var bh=e=>{let t=Xi(),r=ji(t?["usePollProposalThreshold",e]:null,async([,s])=>{f(t);let a=await t.readContract({address:s,abi:Zi,functionName:"proposalThreshold"});return{votesThreshold:Ji(a)}},{refreshInterval:18e4});return{...r,refresh:r.mutate}};import el from"swr/infinite";var xe=1e3,kh=(e,t)=>el(tl(e,t),async([o,r])=>Lt({variables:{...e,limit:xe,offset:xe*r}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),tl=({...e},t)=>o=>o>Math.floor(t/xe)?null:["usePollProposalVotes",o,xe,e.proposalId,e.orderBy,e.orderDirection];import ol from"swr";import{formatEther as rl}from"viem";import{bgtAbi as Ur}from"@berachain/abis/pol/bgt";import{useBeraWallet as sl,usePublicClient as al}from"@berachain/wagmi/hooks";var Bh=e=>{let{address:t}=sl(),o=al(),s=ol(t?["usePollUserDelegates",t]:null,async([,a])=>{f(o);let{config:i}=P({chainId:o.chain.id});if(!o||!a)throw new Error("usePollUserDelegates needs publicClient and account");let[n,l]=await Promise.all([o.readContract({address:i.tokens.bgt,abi:Ur,functionName:"delegates",args:[a]}),o.readContract({address:i.tokens.bgt,abi:Ur,functionName:"getVotes",args:[a]})]);return{delegate:n,currentVotes:rl(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...s,refresh:()=>s?.mutate?.()}};import nl from"swr";import{usePublicClient as il,useTransactionReceipt as ll}from"@berachain/wagmi/hooks";var Uh=e=>{let{data:t}=ll({hash:e}),o=il();return nl(t&&o?["useProposalFromTx",e]:null,async([,a])=>{if(!t)throw new Error("Transaction not found");if(t.transactionHash!==a)throw new Error("Transaction hash mismatch");return Dt({tx:t,publicClient:o})})};import ul from"swr/immutable";import{berachainGovernanceAbi as pl}from"@berachain/abis/gov/berachainGovernance";import{usePublicClient as ml}from"@berachain/wagmi/hooks";var dl={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},Qh=({proposalId:e,governorAddress:t})=>{let o=ml();return ul(t&&o&&e?["useProposalState",e]:null,async([,s])=>{f(o);let a=await o.readContract({abi:pl,address:t,functionName:"state",args:[BigInt(s)]});return dl[a]})};import cl from"swr";import{timeLockAbi as fl}from"@berachain/abis/gov/timeLock";import{usePublicClient as gl}from"@berachain/wagmi/hooks";var yl={0:"unset",1:"waiting",2:"ready",3:"done"};function qh({proposalTimelockId:e,timelockAddress:t}){let o=gl();return cl(t&&o&&e?["useProposalTimelockState",e,t]:null,async([,s,a])=>{f(o);let i=await o.readContract({abi:fl,address:a,functionName:"getOperationState",args:[s]});return yl[i]},{refreshInterval:18e4})}import hl from"swr";import{usePublicClient as Rl}from"@berachain/wagmi/hooks";import{formatEther as Al}from"viem";import{berachainGovernanceAbi as bl}from"@berachain/abis/gov/berachainGovernance";async function gt({at:e,publicClient:t,...o}){let{config:r}=P(o);f(t);let s=await t.readContract({address:r.governance.governor,abi:bl,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return Al(s)}function rR({at:e},{isEnabled:t=!0}){let o=Math.floor(Date.now()/1e3),r=Rl(),s=t&&r?["useQuorum",Number(e)>o?"now":e]:null,a=hl(s,async([,i])=>i==="now"?gt({publicClient:r}):gt({at:i,publicClient:r}));return{...a,data:a.data?Number(a.data):void 0}}import kl from"swr";import{usePublicClient as Pl}from"@berachain/wagmi/hooks";import wl from"swr";function X({priceFeedMap:e},t){let o=e?Object.values(e):null,r=(t?.opts?.isEnabled??!0)&&o?["usePythLatestPrices",o]:null;return wl(r,async([a,i])=>await Qt({priceFeedId:i}))}var Hr=({asset:e,amount:t,isMint:o,isBasketModeEnabled:r},s)=>{let a=Pl(),{priceFeedMap:i,flags:n}=B(),{data:l}=X({priceFeedMap:e?.address&&i?{[e.address]:i[e.address]}:void 0},{opts:{isEnabled:n.isPythWrapperEnabled&&!!e?.address}}),u=t&&e&&(n.isPythWrapperEnabled&&l?.prices.length||!n.isPythWrapperEnabled)?["useCappedGlobally",t,e,l,n.isPythWrapperEnabled,r]:null,m=kl(u,async([p,c,d,g,y,A])=>A?!1:(f(a),await Nt({client:a,asset:d,amount:o?c:`-${c}`,isMint:o,latestPrices:g,isPythWrapperEnabled:y})),{...s?.opts,refreshInterval:0});return{...m,refresh:()=>void m.mutate()}};import Cl from"swr";import{usePublicClient as Sl}from"@berachain/wagmi/hooks";var Vr=({asset:e,amount:t,isMint:o,isBasketModeEnabled:r},s)=>{let a=Sl(),{collateralList:i,referenceCollateral:n}=B(),u=Cl(e&&t?["useCappedRelatively",e,t,i,n]:null,async([m,p,c,d,g])=>{if(r)return!1;if(f(a),!o){let y=`-${c}`;return g.address!==p?!1:(await Promise.all(d.map(R=>Ve({client:a,asset:R.address,amount:y,isMint:o,referenceCollateral:g})))).some(R=>R)}return await Ve({client:a,asset:p,amount:c,isMint:o,referenceCollateral:g})},{refreshInterval:0,...s?.opts});return{...u,refresh:()=>void u.mutate()}};import Tl from"swr";import{usePublicClient as El}from"@berachain/wagmi/hooks";var SR=({collateralList:e},t)=>{let o=El(),s=Tl(o&&e?["useCollateralWeights",e]:void 0,async([a,i])=>(f(o),await Ht({client:o,collateralList:i})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>void s.mutate()}};import{useMemo as yt}from"react";import ee from"@berachain/utils/pkg/bignumber.js";import Il from"swr";import{useBeraWallet as xl,useConfig as Bl,usePublicClient as vl}from"@berachain/wagmi/hooks";var Nr=()=>{let e=vl(),{address:t}=xl(),{collateralList:o}=B(),r=Bl(),a=Il(t&&o&&e?["useHoneyBalances",t,o]:null,async([i,n,l])=>{f(e);let u=[...l??[],ue({})];return(await Ae({account:n,tokenList:u,wagmiConfig:r}))?.reduce((c,d)=>(c[d.address]=d,c),{})},{refreshInterval:1e4});return{...a,refresh:()=>a.mutate()}};import Ol from"swr";import{usePublicClient as Dl}from"@berachain/wagmi/hooks";var Wr=e=>{let t=Dl(),{collateralList:o}=B(),s=Ol(o&&t?["useHoneyVaultsBalance",o]:null,async([a,i])=>(f(t),await me({client:t,collateralList:i})),{...e?.opts,refreshInterval:1e5});return{...s,refresh:()=>void s.mutate()}};import Ll from"swr";import{usePublicClient as Ul}from"@berachain/wagmi/hooks";var _r=({collateral:e},t)=>{let o=Ul(),{priceFeedMap:r,flags:s}=B(),{data:a}=X({priceFeedMap:e?.address?{[e.address]:r[e.address]}:void 0},{opts:{isEnabled:s.isPythWrapperEnabled&&!!e?.address}}),i=o&&e&&(s.isPythWrapperEnabled&&a?.prices.length||!s.isPythWrapperEnabled)?["useIsBadCollateralAsset",e,a,s.isPythWrapperEnabled]:null,n=Ll(i,async([l,u,m,p])=>(f(o),await Vt({client:o,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};var Qr=({lowerThan:e,vaultsBalances:t,state:o,collateralList:r})=>{if(!(o.actionType==="mint")&&!o.isBasketModeEnabled){let a=t?.find(l=>l.address.toLowerCase()===o.collaterals[0].address.toLowerCase()),i=new ee(a?.balance.formatted??"0").lte(e),n=r.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new ee(u?.balance.formatted??"0").lte(e)});return{isLow:i,isLiquidityLowCollaterals:n}}return{isLow:!1,isLiquidityLowCollaterals:[]}},Hl=({vaultsBalances:e,redeemedVaultBalance:t,state:o,collateralList:r})=>{if(!(o.actionType==="mint")&&e&&t){let a=r.filter(i=>{let n=e.find(u=>u.address.toLowerCase()===i.address.toLowerCase()),l=o.toAmount[o.collaterals.indexOf(i)];return new ee(n?.balance.formatted??"0").lt(l??"0")});return{isMore:!!a.find(i=>h(i,o.collaterals[0])),isRedeemMoreThanLiquidityCollaterals:a}}return{isMore:!1,isRedeemMoreThanLiquidityCollaterals:void 0}};function Vl({state:e,honeyBalances:t,...o}){let{config:r}=P(o),s=e.actionType==="mint";return!s&&t?new ee(e.fromAmount[0]).gt(t[r.honey.token]?.balance.formatted??"0"):s&&t&&e.isBasketModeEnabled!==void 0&&e.collaterals.length>0?e.isBasketModeEnabled?e.collaterals.some((a,i)=>{let n=e.fromAmount[i];return new ee(t[a.address]?.balance.formatted).lt(n)}):new ee(t[e.collaterals[0].address]?.balance.formatted).lt(e.fromAmount[0]):!1}var rw=({actionType:e,collaterals:t,fromAmount:o,toAmount:r,isBasketModeEnabled:s})=>{let a={actionType:e,collaterals:t,fromAmount:o,toAmount:r,isBasketModeEnabled:s},i=e==="mint",{data:n}=_r({collateral:t[0]}),{collateralList:l}=B(),{isBlacklisted:u,isDepegged:m}=n??{isBlacklisted:!1,isDepegged:!1},{data:p}=Hr({asset:t[0],amount:i?o[0]:r[0],isMint:i,isBasketModeEnabled:s}),{data:c}=Vr({asset:t[0]?.address,amount:i?o[0]:r[0],isMint:i,isBasketModeEnabled:s}),{data:d}=Nr(),{data:g}=Wr(),y=t[0]?.address,A=g?.find(S=>S.address.toLowerCase()===y.toLowerCase()),[R,w]=yt(()=>{let S=Qr({lowerThan:1,vaultsBalances:g,state:a,collateralList:l}),T=Qr({lowerThan:1e3,vaultsBalances:g,state:a,collateralList:l});return[S,T]},[g,a]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:C}=yt(()=>Hl({vaultsBalances:g,redeemedVaultBalance:A,state:a,collateralList:l}),[g,A,a,l]),k=yt(()=>Vl({state:a,honeyBalances:d}),[a,d]);return{isLiquidityDepleted:R.isLow,isLiquidityDepletedCollaterals:R.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:b,isRedeemMoreThanLiquidityCollaterals:C,isLowLiquidity:w.isLow,isLiquidityLowCollaterals:w.isLiquidityLowCollaterals,isBlacklisted:a.isBasketModeEnabled?!1:u,isDepegged:a.isBasketModeEnabled?!1:m,isCappedGlobally:p,isCappedRelatively:c,isExceedingBalance:k}};import Nl from"swr";function iw({days:e}){let t=Nl(["useHoneyChartData",e],async([o,r])=>await Ut({days:r}));return{...t,refresh:()=>t.mutate()}}import Wl from"swr";import Mr from"@berachain/utils/pkg/bignumber.js";function dw(){let e=Wl(["useHoneyGlobalData"],()=>Wt()),t=e.data?.honeySnapshots.reduce((o,r)=>new Mr(r.totalVolume).plus(o),new Mr(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as Ml,useReducer as Yl}from"react";import{formatUnits as Gr}from"viem";import{defaultChainId as Gl}from"@berachain/config/internal";import _l from"swr";import{usePublicClient as Ql}from"@berachain/wagmi/hooks";function Yr({state:e},t){let o=Ql(),{priceFeedMap:r,flags:s,collateralList:a}=B(),{data:i}=X({priceFeedMap:r},{opts:{isEnabled:s.isPythWrapperEnabled&&!!a.length}}),n=e.actionType==="mint",l=o&&e&&a.length>0&&(s.isPythWrapperEnabled&&i?.prices.length||!s.isPythWrapperEnabled)?["useIsBasketModeEnabled",n,i,s.isPythWrapperEnabled,a]:null,u=_l(l,async([m,p,c,d,g])=>(f(o),await de({client:o,isMint:p,collateralList:g,latestPrices:c,isPythWrapperEnabled:d})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e4});return{...u,data:u.data,refresh:()=>void u.mutate()}}var Fl={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function Fr(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return Fr({...e,actionType:t.value},{type:"RESET_AMOUNTS"});case"COLLATERALS_CHANGE":return{...e,collaterals:t.value,fromAmount:[],toAmount:[]};case"FROM_AMOUNT_CHANGE":{let o=e.fromAmount;return o[t.index]=t.value,{...e,fromAmount:o}}case"TO_AMOUNT_CHANGE":{let o=e.toAmount;return o[t.index]=t.value,{...e,toAmount:o}}case"PREVIEW_CHANGE":{let o=t.value,r=e.actionType==="mint",s=e.collaterals.map((i,n)=>t.changedAsset===i.address?r?e.fromAmount[n]:e.toAmount[n]:o.collaterals[i.address]?Gr(o.collaterals[i.address],i.decimals):e.isBasketModeEnabled?"0":""),a=h(t.changedAsset,"HONEY",{chainId:Gl})?r?e.toAmount[0]:e.fromAmount[0]:o.honey?Gr(o.honey,18):e.isBasketModeEnabled?"0":"";return{...e,fromAmount:r?s:[a],toAmount:r?[a]:s}}case"IS_BASKET_MODE_ENABLED_CHANGE":return{...e,isBasketModeEnabled:t.value,fromAmount:[],toAmount:[]};case"IS_TYPING_CHANGE":return{...e,isTyping:t.value};case"IS_SUBMITTING_CHANGE":return{...e,isSubmitting:t.value};case"IS_LOADING_CHANGE":return{...e,isLoading:t.value};default:throw new Error(`Unknown action type: ${t}`)}}var Ew=()=>{let{collateralList:e}=B(),[t,o]=Yl(Fr,Fl,s=>({...s,collaterals:e})),{data:r}=Yr({state:t});return Ml(()=>{r!==void 0&&t.isBasketModeEnabled!==r&&(o({type:"IS_LOADING_CHANGE",value:!0}),o({type:"IS_BASKET_MODE_ENABLED_CHANGE",value:r}),o({type:"IS_LOADING_CHANGE",value:!1}))},[r]),{state:t,dispatch:o}};import Kl from"swr/immutable";import{usePublicClient as ql}from"@berachain/wagmi/hooks";var Lw=({pythPriceFeedCalldata:e,tokenListLength:t},o)=>{let r=ql(),s=(o?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:a=Mt(t),isLoading:i}=Kl(s,async([n,l])=>(f(r),await Yt({client:r,priceFeedId:l})));return{QUERY_KEY:s,data:a,isLoading:i}};import{useMemo as $l}from"react";function Nw(e){return $l(()=>{if(e)return $t(e)},[e])}import zl from"swr";import{formatEther as jl}from"viem";import{bgtAbi as Jl}from"@berachain/abis/pol/bgt";import{useBeraWallet as Zl,usePublicClient as Xl}from"@berachain/wagmi/hooks";var eu=e=>{let{address:t}=Zl(),o=Xl(),s=zl(t&&o?["useBgtUnstakedBalance",t]:null,async([,a])=>{f(o);let{config:i}=P({chainId:o.chain.id}),n=await o.readContract({address:i.tokens.bgt,abi:Jl,functionName:"unboostedBalanceOf",args:[a]});return jl(n)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import tu from"swr";import{formatUnits as ou}from"viem";import{useBeraWallet as ru,usePublicClient as su}from"@berachain/wagmi/hooks";var au=()=>{let{address:e}=ru(),t=su(),r=tu(e&&t?["useClaimableFees",e]:null,async([,s])=>{f(t);let{config:a}=P({chainId:t.chain.id}),i=await io({account:s,vaultAddress:a.pol.staker,publicClient:t});return ou(i,18)},{refreshInterval:18e4*2});return{...r,refresh:()=>r?.mutate?.()}};import{GqlRewardVaultOrderBy as uu,GqlRewardVaultOrderDirection as pu}from"@berachain/graphql/pol/api";import nu from"swr";import{usePublicClient as iu}from"@berachain/wagmi/hooks";var lu=(e,t=!1)=>["useRewardVaults",e,t],At=(e,t)=>{let o=lu(e.filter,e.onChainIncentives),r=iu(),s=nu(t?.opts?.isEnabled??!0?o:null,async([,a,i])=>await jt({filter:a,publicClient:i?r:void 0}),{...t?.opts});return{...s,refresh:s.mutate}};var nk=(e={},{isEnabled:t=!0}={})=>{let o=At({filter:{orderBy:uu.Apr,orderDirection:pu.Desc,pageSize:1,where:e}},{opts:{refreshInterval:0,revalidateOnFocus:!1,refreshWhenOffline:!1,isEnabled:t}});return{isLoading:o.isLoading,highestApr:o.data?.gaugeList[0].dynamicData?.apr,refresh:o.mutate}};import mu from"swr";import{usePublicClient as du}from"@berachain/wagmi/hooks";var Kr=e=>{let t=du(),o=mu(t?"usePollGlobalData":null,async()=>(f(t),Jt(t)),{revalidateOnFocus:!1,...e?.opts});return{...o,refresh:o.mutate}};import cu from"swr/immutable";var fu=()=>"usePollMarkets",gk=e=>{let t=fu(),o=cu(t,async()=>await Zt(),{...e?.opts});return{...o,refresh:()=>o.mutate()}};import gu from"swr/immutable";import{isAddress as yu}from"viem";import{usePublicClient as Au}from"@berachain/wagmi/hooks";function kk({receiptTokenAddresses:e,account:t,version:o},r){let s=Au(),a=e&&t&&s&&yu(t)&&o?["useQueuedBeraUnlock",e,t,o]:null,i=gu(a,async([,n,l,u])=>(f(s),await Promise.all(n.map(async m=>await so({contractAddress:m,accountAddress:l,publicClient:s,version:u}))).then(m=>m.flat())),{refreshInterval:1e4,...r?.opts});return{...i,refresh:()=>i.mutate()}}import bu from"swr";import{isAddress as hu}from"viem";import{defaultChainId as Ru}from"@berachain/config/internal";import{usePublicClient as wu}from"@berachain/wagmi/hooks";var vk=({address:e},t)=>{let o=e?["useRewardTokenToBeraRate",e]:null,r=wu({chainId:Ru});return bu(o,async([s,a])=>{if(!a||!hu(a))throw new v({property:"address",value:a,expected:"Address"});return f(r),se({address:a,publicClient:r})},{...t?.opts})};import Bu from"swr";import Pu from"swr";import{erc20Abi as Cu,formatUnits as Su,isAddress as Tu}from"viem";import{beraChefAbi as Eu}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as Iu}from"@berachain/wagmi/hooks";import{erc20Abi as Be,formatUnits as ku}from"viem";async function ve({address:e,publicClient:t}){f(t);let[o,r,s,a]=await t.multicall({contracts:[{address:e,abi:Be,functionName:"decimals"},{address:e,abi:Be,functionName:"name"},{address:e,abi:Be,functionName:"symbol"},{address:e,abi:Be,functionName:"totalSupply"}],allowFailure:!0});return{address:e,decimals:o.result,name:r.result,symbol:s.result,totalSupply:a.result!==void 0?o.status==="success"?ku(a.result,o.result):a.result.toString():void 0}}var xu=e=>e&&Tu(e)?["onChainRewardVault",e.toLowerCase()]:null,qr=({address:e},t)=>{let o=Iu(),r=t.opts?.isEnabled??!0,s=xu(e);return Pu(r&&o?s:null,async([,a])=>{f(o);let{config:i}=P({chainId:o.chain.id}),n=await ye({address:a,publicClient:o}),[l,u,m]=await Promise.all([ge({address:a,stakingToken:n,publicClient:o}),o.readContract({address:i.pol.beraChef,abi:Eu,functionName:"isWhitelistedVault",args:[a]}),o.readContract({address:n,abi:Cu,functionName:"balanceOf",args:[a]})]),[p,c]=await Promise.all([ve({address:n,publicClient:o}),Promise.all(l.map(d=>M({address:d.token,chainId:o.chain.id,publicClient:o})))]);if(!p)throw new Error("Staking token not found");return{id:a,address:a,vaultAddress:a,stakingToken:{address:n,name:p.name??"",symbol:p.symbol??"",decimals:p.decimals??0},stakingTokenAmount:Su(m,p.decimals??18),isVaultWhitelisted:u,activeIncentives:l.map((d,g)=>({active:!!d.remainingAmount,remainingAmount:d.remainingAmount,remainingAmountUsd:"0",incentiveRate:d.incentiveRate,incentiveRateUsd:"0",tokenAddress:d.token,token:c[g]}))}})};var vu=e=>e?["useRewardVault",e.toLowerCase()]:null,jk=(e,t)=>{let o=vu(e),r=Bu(o,async([i,n])=>eo({address:n}),{...t?.opts}),s=t?.opts?.isEnabled??((!!r.error||!r.isLoading)&&!r.data),a=qr({address:e},{opts:{...t?.opts,isEnabled:s}});return{data:a.data??r.data,error:a.error??r.error,isLoading:a.isLoading||r.isLoading,isValidating:a.isValidating??r.isValidating,refresh:()=>{r.mutate(),a.mutate()}}};import Ou from"swr";import{usePublicClient as Du}from"@berachain/wagmi/hooks";function oP({address:e,stakingToken:t}){let o=Du(),s=Ou(o&&e&&t?["useRewardVaultIncentives",e,t]:null,async([,a,i])=>(f(o),await ge({address:a,stakingToken:i,publicClient:o})));return{...s,refresh:()=>s?.mutate?.()}}import Lu from"swr";import{usePublicClient as Uu}from"@berachain/wagmi/hooks";var Hu=(e,t)=>{let o=Uu(),s=Lu(o&&e?["useRewardVaultRewards",e]:null,async([,a])=>(f(o),await qt(a,o)),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};import Vu from"swr";var Oe=e=>{let t=[],o="";for(let r of e){if(!r.timestamp&&!r._timestamp)continue;let s=(r?.timestamp??r?._timestamp??0)*1e3,a=new Date(s),i=a.toDateString();if(i!==o){let n=new Date(a.setHours(0,0,0,0)).getTime()/1e3;t.push({...r,timestamp:n,_timestamp:n}),o=i}}return t};function cP({range:e}){let o=Vu(e?["useStakedAPR",e]:null,async([,r])=>{let s=await oo({range:r});return Oe(s.sort((i,n)=>i.timestamp-n.timestamp)).map(i=>({_timestamp:i.timestamp,apr:i.apr}))});return{...o,refresh:()=>o.mutate()}}import{useMemo as De}from"react";import bt from"swr";import{useBeraWallet as Nu,usePublicClient as Wu}from"@berachain/wagmi/hooks";import ht from"@berachain/utils/pkg/bignumber.js";var TP=e=>{let t=U("swberaAprWindow"),o=Wu(),{address:r}=Nu(),s=De(()=>e.map(b=>b.receiptToken),[e]),a=De(()=>e.map(b=>b.inputTokens[0]),[e]),i=t?["useStakedData:apr",t]:null,{data:n}=bt(i,async([,b])=>to({window:b}),{refreshInterval:1e5}),{data:l,isLoading:u}=Te({tokens:s}),{getTokenPrice:m}=Y({tokens:a}),p=o&&s.length>0?["useStakedData:exchangeRates",s]:null,{data:c}=bt(p,async([,b])=>(f(o),Promise.all(b.map(C=>se({address:C.address,publicClient:o})))),{refreshInterval:1e5}),d=De(()=>{if(!(!l||!c))return e.map((b,C)=>{let k=b.inputTokens[0],S=l.find(te=>te.address===b.receiptToken.address)?.balance.raw??"0",T=c[C]??0,I=m(k)??0,Q=new ht(S).multipliedBy(T).dividedBy(10**k.decimals),O=Q.multipliedBy(I);return{token:k,apr:n??0,stakedAmount:Q.toNumber(),stakedAmountUsd:O.toNumber(),earnedAmount:0,earnedAmountUsd:0,isLoadingEarnings:!0}})},[l,c,e,n,m]),g=r&&o&&e.length>0?["useStakedData:positions",r,e]:null,{data:y,isLoading:A,isValidating:R}=bt(g,async([,b,C])=>(f(o),Promise.all(C.map(async k=>{let S=k.receiptToken,[T,I]=await Promise.all([zt({address:S.address,account:b}),se({address:S.address,publicClient:o})]);return{earnings:T,exchangeRate:I}}))),{refreshInterval:1e4}),w=De(()=>{if(!(!y||!l))return e.map((b,C)=>{let k=b.inputTokens[0],S=b.receiptToken,{earnings:T,exchangeRate:I}=y[C],N=m(k)??0,Q=l.find(is=>is.address===S.address)?.balance.raw??"0",O=I??0,te=new ht(T.earningsTotal).minus(T.earningsRealized),oe=new ht(Q).multipliedBy(O).minus(te).dividedBy(10**k.decimals),ne=te.dividedBy(10**k.decimals),V=oe.multipliedBy(N),re=ne.multipliedBy(N);return{token:k,apr:n??0,stakedAmount:oe.toNumber(),earnedAmount:ne.toNumber(),stakedAmountUsd:V.toNumber(),earnedAmountUsd:re.toNumber()}})},[y,l,e,n,m]);return{balances:d,data:w,isLoading:u&&A,isLoadingBalances:u,isLoadingPositions:A,isValidatingPositions:R}};import _u from"swr";async function $r({address:e,range:t}){let o=new Date,r=new Date(o.getTime()-Number(t)*24*60*60*1e3),{config:s}=P({}),a=`${s.bonder}/vaults/${e}/total-assets-by-day?start=${r.toISOString().split("T")[0]}`;return le({url:a,type:"rest"})}function LP({range:e,addresses:t}){let r=_u(e?["useStakedSnapshots",e,t]:null,async([,s,a])=>{let[...i]=await Promise.all([...a.map(async n=>{let l=await $r({address:n,range:s}),u=Oe(l.sort((m,p)=>m._timestamp-p._timestamp));return{[n]:u}})]);return i.reduce((n,l)=>({...n,...l}),{})});return{...r,refresh:()=>r.mutate()}}import Qu from"swr";import{usePublicClient as Mu}from"@berachain/wagmi/hooks";var QP=e=>{let t=Mu(),o=$();return Qu(e&&t&&o?["useStakingVaultMetadata",e,t,o]:null,async([,s,a,i])=>(f(a),ro({address:s,publicClient:a,blockTime:i})),{refreshInterval:1e4})};import Yu from"swr";import{usePublicClient as Gu}from"@berachain/wagmi/hooks";function KP({vaultAddresses:e}){let t=Gu(),o=Yu(e&&t?["useTotalStakedAmount",e]:null,([,r])=>ao({vaultAddresses:r,publicClient:t}));return{...o,refresh:()=>o.mutate()}}import Fu from"swr";import{useBeraWallet as Ku,usePublicClient as qu}from"@berachain/wagmi/hooks";var $u=(e,t)=>{let{address:o}=Ku(),r=qu(),s=o&&r&&e.vaultAddress?["useUserVaultInfo",o,e.vaultAddress]:null,a=Fu(s,async([,i,n])=>(f(r),lo({account:i,vaultAddress:n,publicClient:r})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a.mutate()}};import zu from"swr";import{useBeraWallet as ju,usePublicClient as Ju}from"@berachain/wagmi/hooks";var Zu=e=>{let{address:t}=ju(),o=Ju(),s=zu(t&&o?["useUserVaults",t]:null,async([,a])=>(f(o),await uo({account:a,publicClient:o})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Xu from"swr";import{usePublicClient as ep}from"@berachain/wagmi/hooks";var lC=e=>{let t=ep();return Xu(e&&t?["useVaultAddress",e]:null,async([,r])=>{f(t);let[s]=await Promise.all([ye({address:r,publicClient:t})]);return{stakeToken:s,address:r}})};import tp from"swr";var dC=({vault:e,range:t,resolution:o})=>{let s=tp(e?["useVaultHistory",e,t,o]:null,([,a,i,n])=>po({vault:a,range:i,resolution:n}));return{...s,refresh:()=>s.mutate()}};import op from"swr";var rp=(e,t)=>{let r=op(e?["useVaultValidators",e]:null,async([,s])=>await mo({address:s}),{...t?.opts});return{...r,refresh:()=>r.mutate()}};import{zeroAddress as sp}from"viem";function zr({address:e},t){let o=J({addressIn:e?[e]:void 0},t);return{...o,data:e?o.data?.[e.toLowerCase()]:void 0}}function wC(e){return zr({address:sp},e)}import ap from"swr/immutable";import{isAddress as np,zeroAddress as ip}from"viem";import{usePublicClient as lp}from"@berachain/wagmi/hooks";var IC=(e,t)=>{let o=lp(),r=e?.address&&o&&np(e.address)?["useStakingTokenInformation",e.address]:null,s=ap(r,async([a,i])=>h(i,"BERA")?{address:ip,decimals:D.decimals,name:D.name,symbol:D.symbol}:await ve({address:i,publicClient:o}),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};function vC({token:e},t){let{isLoading:o,priceMap:r}=Y({tokens:e?[e]:void 0},t);return{data:e?r[e.chainId]?.[e.address.toLowerCase()]:void 0,isLoading:o}}import up from"swr";import{erc20Abi as pp}from"viem";import{usePublicClient as mp}from"@berachain/wagmi/hooks";function VC({address:e}){let t=mp();return up(e&&t?["useTotalSupply",e]:null,([,o])=>(f(t),t.readContract({address:o,abi:pp,functionName:"totalSupply",args:[]})))}import dp from"swr/immutable";import{useBlockNumber as cp,usePublicClient as fp}from"@berachain/wagmi/hooks";function KC(e){let t=fp(),{config:o}=P({chainId:t?.chain.id}),{data:r,isLoading:s}=cp({cacheTime:ce(o.averageBlockTime)}),{data:a}=dp(r&&t&&Number(e)>0?["useBlockToTimestamp",e,r]:null,async([,n,l])=>(f(t),Kt({block:n,currentBlock:l,blockTime:i,publicClient:t}))),i=$();if(a)return Number(a.timestamp);if(!(s||!r))return Math.floor(Ft(Date.now())+i*(Number(e)-Number(r)))}import{useCallback as Jr,useReducer as gp}from"react";import{useBeraWagmi as yp,useConfig as Ap}from"@berachain/wagmi/hooks";var Rt={confirmState:"idle",txnHash:"",message:""},jr=(e,t)=>{switch(t.type){case"confirm_sending":return{...e,confirmState:"loading"};case"confirm_receipt":return{...e,confirmState:"success"};case"confirm_error":return{...e,confirmState:"fail"};case"confirm_submitting":return{...e,confirmState:"submitting"};case"confirm_reset":return{...Rt};default:return e}};function bp({onlyPermissionless:e,onSuccess:t,onError:o,onLoading:r,onWarning:s,onSubmission:a}={}){let[i,n]=gp(jr,Rt),{account:l,onSmartAccountRejection:u}=yp(),m=Ap(),p=l?.wallet?.isContract?6e4*10:12e4,c=Jr(()=>{n({type:"confirm_reset"})},[]),d=U("enableSimulateCalls"),g=Jr(y=>{if(e&&!y.permissionless){let A=new go({message:"Trying to send a non-permissionless transaction with an overridden account",displayMessage:"You can't send this transaction with an overridden account. Please reset the account in the settings popover.",level:"info",input:y});throw s?.(A,y),o?.(A,y),A}return yo({wagmiConfig:m,...y,txConfirmationTimeout:p,enableSimulateCalls:d,onLoading(...A){n({type:"confirm_sending"}),y.onLoading?.(y),r?.(...A)},onWarning(...A){y.onWarning?.(A[0],y),s?.(...A)},onSubmission(...A){n({type:"confirm_submitting"}),y.onSubmission?.(A[0],y),a?.(...A)},onSuccess(...A){n({type:"confirm_receipt"}),y.onSuccess?.(A[0],y),t?.(...A)},onError(...A){n({type:"confirm_error"}),y.onError?.(A[0],y),A[0].reason==="AtomicReadyWalletRejectedUpgradeError"&&u(),o?.(...A)}})},[m,r,s,a,t,o,e,d]);return{isLoading:i.confirmState==="loading",isSubmitting:i.confirmState==="submitting",isSuccess:i.confirmState==="success",isError:i.confirmState==="fail",write:g,reset:c}}var hp=bp;import Rp from"swr/immutable";import{isAddress as wp,zeroAddress as kp}from"viem";import{chainId as Pp}from"@berachain/config/internal";async function Cp(e){let t=await le({url:`https://api.routescan.io/v2/network/testnet/evm/${Pp}/etherscan/api?module=contract&action=getabi&address=${e}`,type:"rest",name:"RouteScan"});if(t.status==="0")throw new Error(t.result);return t.result}var pS=e=>Rp(e&&wp(e)&&e!==kp?["useGetVerifiedAbi",e]:null,()=>e?Cp(e):Promise.resolve(""),{});import{useCallback as Zr,useEffect as Sp,useState as Tp}from"react";function cS({key:e,defaultValue:t}){let o=Zr(()=>{if(typeof window>"u")return t;let i=window.history.state?.[e];return i!==void 0?i:t},[e,t]),[r,s]=Tp(o()),a=Zr(i=>{let n=o(),l=i instanceof Function?i(n):i,m={...window.history.state||{},[e]:l};window.history.replaceState(m,""),s(l)},[e,o]);return Sp(()=>{if(window.history.state?.[e]===void 0){let l={...window.history.state||{},[e]:t};window.history.replaceState(l,"")}},[e,t]),[r,a]}import{useEffect as Ep,useRef as Ip}from"react";function yS(e){let t=Ip(void 0);return Ep(()=>{t.current=e}),t.current}import xp from"swr";var Bp=({variables:e}={})=>["useAllValidators",e],wS=(e,t)=>{let{config:o}=P(e),r=xp(Bp({variables:e}),async([,s])=>await Ao({variables:{chain:o.bex.chainName,...s}}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>r.mutate()}};import vp from"swr";function SS({allocation:e}){return vp(e?["useApiEnrichedAllocation",e]:null,([,t])=>bo({allocation:t}))}import Op from"swr";import{isHex as Dp}from"viem";var Lp=e=>e?["useApiValidator",e]:null,Xr=(e,t)=>{let o=Lp(e),r=t?.opts?.isEnabled??!0,s=Op(r&&e?o:null,async([,a])=>{if(!a||!Dp(a))throw new Error(`Invalid validator ID: ${a}`);return ho({id:a})},{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Hp from"swr";import{usePublicClient as Vp}from"@berachain/wagmi/hooks";import{rewardAllocatorFactoryAbi as Up}from"@berachain/abis/pol/rewards/rewardAllocatorFactory";async function es({publicClient:e,...t}){let{config:o}=P(t),r=await e.readContract({abi:Up,address:o.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),s=r.startBlock!==0n?await e.getBlock({blockNumber:r.startBlock}):{timestamp:0};return wo(r,Number(s.timestamp))}function WS(){let e=Vp();return Hp(e?["baselineRewardAllocation"]:null,()=>(f(e),es({publicClient:e})))}import Np from"swr";var Wp=({pubKey:e,first:t=1})=>{let r=Np(e?["useDailyValidatorBlockStats",e,t]:null,async([,s,a])=>await Ro({pubKey:s,first:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}};import _p from"swr";import{usePublicClient as Qp}from"@berachain/wagmi/hooks";function Mp(e){let t=Qp(),r=_p(t?["useDefaultRewardAllocation"]:null,async()=>(f(t),await Po({client:t})),{...e?.opts});return{...r,refresh:()=>r.mutate()}}import Yp from"swr/immutable";var Gp=({account:e},t)=>{let r=Yp(e?["useManagedValidatorByAccount",e]:null,async([,s])=>await Co({account:s}),{...t?.opts});return{...r,refresh:()=>r.mutate()}};import{useMemo as os}from"react";import qp from"swr";import{useBeraWallet as $p,usePublicClient as zp}from"@berachain/wagmi/hooks";import{zeroAddress as Fp}from"viem";import{beraChefAbi as Kp}from"@berachain/abis/pol/rewards/beraChef";async function ts({client:e,pubKey:t,...o}){let{config:r}=P(o);try{let s=await e.readContract({address:r.pol.beraChef,abi:Kp,functionName:"valRewardAllocator",args:[t]});return s===Fp?null:s}catch(s){throw console.log("getValidatorRewardAllocatorAddress:",s),s}}function rs(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function jp(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():rs(e,t)}function Jp({pubKey:e,account:t},o){let r=zp(),s=U("mockValidatorOperator"),a=U("mockValidatorRewardAllocator"),i=r&&e?["useManagedValidatorRole",e]:null,{address:n}=$p(),l=t??n,u=qp(i,async([,c])=>{f(r);let[d,g]=await Promise.all([Oo({client:r,pubKey:c}),ts({client:r,pubKey:c})]);return{operator:d??null,rewardAllocator:g}},{...o?.opts}),m=os(()=>s||rs(l,u.data),[l,s,u.data]),p=os(()=>a||jp(l,u.data),[l,a,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import Zp from"swr";import{keccak256 as Xp}from"viem";import{beaconDepositAbi as em}from"@berachain/abis/pol/beaconDeposit";import{bgtAbi as tm}from"@berachain/abis/pol/bgt";import{beraChefAbi as om}from"@berachain/abis/pol/rewards/beraChef";import{usePublicClient as rm}from"@berachain/wagmi/hooks";var ss=({pubkey:e},t)=>{let o=rm(),r=e?["useOnChainValidator",e]:null,s=t.opts?.isEnabled??!0,a=Zp(s&&o?r:null,async([,i])=>{f(o);let{config:n}=P({chainId:o.chain.id}),[l,u,m]=await Promise.all([o.readContract({address:n.depositContract,abi:em,functionName:"getOperator",args:[i]}),o?.readContract({address:n.tokens.bgt,abi:tm,functionName:"boostees",args:[i]}),o.readContract({address:n.pol.beraChef,abi:om,functionName:"getActiveRewardAllocation",args:[i]})]);return{id:Xp(i),pubkey:i,operator:l,votingPower:Number(u)}});return{...a,refresh:()=>{a.mutate()}}};import sm from"swr";import{usePublicClient as am}from"@berachain/wagmi/hooks";var PT=({valPubKey:e,options:t})=>{let o=am(),s=(t?.opts?.isEnabled??!0)&&o&&e?["useStakingPoolBatch",e]:null,a=sm(s,async([,i])=>(f(o),await So({client:o,valPubKey:i})),{refreshInterval:1e4,...t?.opts});return{...a,refresh:()=>a.mutate()}};import nm from"swr";import{GetUserValidatorInformation as im}from"@berachain/graphql/pol/subgraph";import{useBeraWallet as lm}from"@berachain/wagmi/hooks";var um=({account:e}={})=>{let{address:t}=lm(),o=e??t;return nm(o?["useSubgraphUserValidators",o]:null,async([,s])=>{let a=K("pol.subgraph",{}),{data:i}=await a.query({query:im,variables:{address:s}});return i.userValidatorInformations})};import pm from"swr";import{useBeraWallet as mm,usePublicClient as dm}from"@berachain/wagmi/hooks";var cm=e=>{let{address:t}=mm(),o=dm(),s=pm(o&&t?["useUserActiveValidators",t]:null,async([,a])=>await Eo({account:a,publicClient:o}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import fm from"swr";import{useBeraWallet as gm,usePublicClient as ym}from"@berachain/wagmi/hooks";var Am=({pubkey:e,...t})=>{let{address:o}=gm(),r=ym(),s=t.account??o,i=fm(s&&e?["useUserBoostsOnValidator",e,s]:null,async([,n,l])=>await To({account:l,pubkey:n,publicClient:r}),{refreshInterval:1e5});return{...i,refresh:()=>i.mutate()}};import{useCallback as bm,useMemo as hm}from"react";import ns from"swr";import{useBeraWallet as Rm}from"@berachain/wagmi/hooks";var as=e=>{let t=new Set;return e.forEach(o=>{Array.isArray(o.rewards)&&o.rewards.forEach(r=>{r.token&&t.add(r.token)})}),t};var wm=()=>{let{address:e}=Rm(),o=ns(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new x({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await no({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),r=o?.data,s=hm(()=>{if(r){if(!Array.isArray(r)){fe.captureException(new x({message:"Incorrect aggregated incentives data receieved.",level:"error",extra:{allRewards:r,account:e}}));return}return as(r)}},[r,e]),i=ns(e&&r?["useUserClaimableIncentives",e,r]:null,async([,l,u])=>{if(!l)throw new v({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new v({message:"Incorrect aggregated incentives data receieved to calculate proofs.",property:"allRewards",value:u,expected:"Array",level:"error"});let m=new Set(u.map(c=>c.validator)),p=Array.from(m);return await Promise.all(p.map(async c=>({...await Xt({account:l,validator:c,page:1,perPage:1e4}),validator:c})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),n=bm(()=>{o?.mutate(),i?.mutate()},[o,i]);return{...i,isLoading:o?.isLoading||i?.isLoading,tokenMap:s,refresh:n}};import km from"swr/immutable";var JT=({account:e,validatorAddress:t})=>{let r=km(e?["useUserStakingPositions",e,t]:null,async([s,a,i])=>{let n=await Io(a);return i?n.filter(l=>l.validatorAddress.toLowerCase()===i.toLowerCase()):n});return{...r,refresh:()=>{r.mutate()}}};import{keccak256 as Pm}from"viem";function oE({pubkey:e},t){let{data:{validator:o,uptime:r}={},isLoading:s,error:a}=Xr(Pm(e),t),{data:i,isLoading:n,error:l}=ss({pubkey:e},t);return{data:{uptime:r,validator:o||i?{...o,...i,operator:i?.operator??o?.operator,dynamicData:{activeBoostAmount:i?.dynamicData?.activeBoostAmount??o?.dynamicData?.activeBoostAmount??"",queuedBoostAmount:o?.dynamicData?.queuedBoostAmount??"",usersActiveBoostCount:o?.dynamicData?.usersActiveBoostCount??0,usersQueuedBoostCount:o?.dynamicData?.usersQueuedBoostCount??0,allTimeDistributedBGTAmount:o?.dynamicData?.allTimeDistributedBGTAmount??"0",rewardRate:i?.dynamicData?.rewardRate??o?.dynamicData?.rewardRate??"",stakedBeraAmount:o?.dynamicData?.stakedBeraAmount??"",lastDayDistributedBGTAmount:o?.dynamicData?.lastDayDistributedBGTAmount??"",activeBoostAmountRank:o?.dynamicData?.activeBoostAmountRank??0,boostApr:o?.dynamicData?.boostApr??0,commissionOnIncentives:o?.dynamicData?.commissionOnIncentives??0},id:i?.id??o?.id,pubkey:i?.pubkey??o?.pubkey,metadata:i?.metadata??o?.metadata,rewardAllocationWeights:i?.rewardAllocationWeights??o?.rewardAllocationWeights??[]}:null},isLoading:s||n,error:a||l}}import Cm from"swr";function Sm({pubkey:e,dayRange:t}){let r=Cm(e&&t?["useValidatorAnalytics",e,t]:null,async([,s,a])=>await xo({pubkey:s,dayRange:a}),{refreshInterval:18e4});return{...r,refresh:()=>r.mutate()}}import Tm from"swr";import{usePublicClient as Em}from"@berachain/wagmi/hooks";var Im=(e,t)=>{let o=Em(),s=Tm(o&&e?["useValidatorCommission",e]:null,async([,a])=>await Bo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};var xm=e=>{let{data:t,isLoading:o}=Kr(),r=$();return{data:t?vo(e,Number(t?.totalStakedBeraAmount),r):void 0,isLoading:o}};import Bm from"swr";import{usePublicClient as vm}from"@berachain/wagmi/hooks";function Om(e,t){let o=vm(),s=Bm(o&&e?["useValidatorQueuedCommission",e]:null,async([,a])=>(f(o),await Do({client:o,pubKey:a})),{...t?.opts});return{...s,refresh:()=>s.mutate()}}import Dm from"swr";import{usePublicClient as Lm}from"@berachain/wagmi/hooks";var Um=(e,t)=>{let o=Lm(),s=Dm(o&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,a])=>await Lo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Hm from"swr";import{usePublicClient as Vm}from"@berachain/wagmi/hooks";var Nm=(e,t)=>{let o=Vm(),s=Hm(o&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,a])=>await Uo({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import Wm from"swr";import{usePublicClient as _m}from"@berachain/wagmi/hooks";function Qm(e,t){let o=_m(),s=Wm(o&&e?["useValidatorRewardAllocation",e]:null,async([,a])=>await ko({client:o,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}}export{ha as OracleMode,or as USE_AGGREGATORS_QUOTES_QUERY_KEY,Fr as reducer,bf as useAggregatorsQuotes,he as useAggregatorsRouterFeeBps,rr as useAllUserPools,ua as useAllUserPoolsQueryKey,wS as useAllValidators,Bp as useAllValidatorsQueryKey,SS as useApiEnrichedAllocation,sr as useApiPool,da as useApiPoolQueryKey,Xr as useApiValidator,Lp as useApiValidatorQueryKey,WS as useBaselineRewardAllocation,BA as useBendZapSupply,$n as useBendZapSupplyHelper,hp as useBeraContractWrite,wC as useBeraCurrentPrice,Ne as useBexStatus,Nw as useBgtAprSimulation,eu as useBgtUnstakedBalance,KC as useBlockToTimestamp,Hr as useCappedGlobally,Vr as useCappedRelatively,au as useClaimableFees,SR as useCollateralWeights,Yf as useCreatePool,Ci as useCreateProposal,Wp as useDailyValidatorBlockStats,Mp as useDefaultRewardAllocation,XA as useEnsoSwapBundle,eg as useExploitedTokens,xa as useExploitedTokensQueryKey,No as useGetConvertToAssets,Lb as useGetPastVotes,pS as useGetVerifiedAbi,va as useGlobalLiquidityAndSwapVolume,Mb as useHasVoted,nk as useHighestVaultsAPR,cS as useHistoryState,rw as useHoneyAlerts,Nr as useHoneyBalances,iw as useHoneyChartData,dw as useHoneyGlobalData,Ew as useHoneySwapState,Wr as useHoneyVaultsBalance,_r as useIsBadCollateralAsset,Yr as useIsBasketModeEnabled,Jb as useIsCanceller,lg as useLiquidityMismatch,Gg as useLpPosition,Gp as useManagedValidatorByAccount,Jp as useManagedValidatorRole,dn as useMultipleTokenApprovalsWithSlippage,Rr as useMultipleTokenInformation,wr as useOnChainPoolData,Tn as useOnChainPoolDataQueryKey,ss as useOnChainValidator,rh as usePollAllProposals,Ki as usePollAllProposalsQueryKey,Ar as usePollAllowances,ke as usePollBalance,Kr as usePollGlobalData,gk as usePollMarkets,fu as usePollMarketsQueryKey,vn as usePollPoolCreationRelayerApproval,mh as usePollProposal,bh as usePollProposalThreshold,kh as usePollProposalVotes,tl as usePollProposalVotesQueryKey,Bh as usePollUserDelegates,Te as usePollWalletBalances,Qy as usePool,Fy as usePoolEvents,jy as usePoolHistoricalData,rA as usePools,Wn as usePoolsQueryKey,yS as usePrevious,Ce as usePriceImpact,Uh as useProposalFromTx,Br as useProposalSnapshot,Qh as useProposalState,qh as useProposalTimelockState,X as usePythLatestPrices,Lw as usePythUpdateFee,kk as useQueuedBeraUnlock,rR as useQuorum,vk as useRewardTokenToBeraRate,jk as useRewardVault,dr as useRewardVaultBalanceFromStakingToken,pt as useRewardVaultFromToken,oP as useRewardVaultIncentives,vu as useRewardVaultQueryKey,Hu as useRewardVaultRewards,At as useRewardVaults,lu as useRewardVaultsQueryKey,QP as useSWBeraVaultMetadata,ta as useSingleAggregatorQuote,cP as useStakedAPR,TP as useStakedData,LP as useStakedSnapshots,PT as useStakingPoolBatch,IC as useStakingTokenInformation,Ln as useSubgraphPoolQueryKey,um as useSubgraphUserValidators,zr as useTokenCurrentPrice,J as useTokenCurrentPrices,cr as useTokenInformation,vC as useTokenPrice,Y as useTokenPrices,z as useTokens,KP as useTotalStakedAmount,VC as useTotalSupply,cm as useUserActiveValidators,Am as useUserBoostsOnValidator,wm as useUserClaimableIncentives,JT as useUserStakingPositions,$u as useUserVaultInfo,Zu as useUserVaults,oE as useValidator,Sm as useValidatorAnalytics,Im as useValidatorCommission,xm as useValidatorEstimatedBgtPerYear,Om as useValidatorQueuedCommission,Um as useValidatorQueuedOperatorAddress,Nm as useValidatorQueuedRewardAllocation,Qm as useValidatorRewardAllocation,lC as useVaultAddress,dC as useVaultHistory,rp as useVaultValidators,ib as useZapStakeBera};
4
4
  //# sourceMappingURL=exports.mjs.map