@berachain/berajs 0.2.2 → 0.2.3

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.
@@ -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{a as L,b as Qe,c as de,d as Ye}from"../chunk-TEBJWAVU.mjs";import{$ as cr,Aa as Hr,B as $t,Ba as Vr,C as zt,Ca as Wr,D as Zt,Da as Mr,Ea as _r,F as jt,Fa as Qr,G as be,Ga as Yr,H as Jt,Ha as Gr,I as Ke,Ia as Fr,J as er,K as tr,L as he,M as or,O as sr,P as ar,Q as nr,R as ir,S as lr,U as ur,V as pr,W as ue,X as mr,Y as ke,Z as Pe,_ as dr,a as Dt,ba as fr,c as j,ca as gr,da as yr,e as I,ea as Ar,f as Lt,fa as br,g as Ae,ga as hr,h as Ut,ha as Rr,i as Nt,ia as wr,ja as kr,k as Ht,ka as Pr,l as Vt,la as Cr,m as Wt,n as Mt,na as Ir,o as H,oa as Sr,pa as Er,qa as xr,r as _t,ra as vr,s as Qt,sa as Br,t as Yt,ua as Dr,v as Gt,w as Ft,wa as Or,x as Kt,xa as Lr,y as qt,ya as Ur,z as q,za as Nr}from"../chunk-A4UDYSB6.mjs";import{b as le,c as Y,h as xt,i as K,j as G,k as ce,l as vt,m as Bt}from"../chunk-Q3SCM6WL.mjs";import{c as V,e as qe,g as X,l as B,m as Kr}from"../chunk-55L7STYD.mjs";import{a as fe,c as Ce}from"../chunk-7SMWQ6SN.mjs";import"../chunk-NAXAZJJY.mjs";import"../chunk-YXLFOEZN.mjs";import"../chunk-OGJMSGB2.mjs";import"../chunk-575OK77P.mjs";import{c as Tr}from"../chunk-7WRTK7RJ.mjs";import{a as Ot,b as J,c as g,d as F,e as Ge,f as we}from"../chunk-2LL3P5PN.mjs";import{b as Te,c as qr}from"../chunk-3YXSUBA5.mjs";import{a as E,d as ge,j as Fe,k as Xt,l as rr,m as Re}from"../chunk-ECRMUMTA.mjs";import"../chunk-C3FHGFLK.mjs";import{a as C,b as U,d as ye,e as h}from"../chunk-THATXCJK.mjs";import{f as v,g as Z,h as D}from"../chunk-AX2YQQFQ.mjs";import fs from"swr";import{usePublicClient as gs}from"@berachain/wagmi/hooks";var $r=({sharesAmount:e,vaultAddress:t,vaultChainId:r},o)=>{let s=gs({chainId:r}),a=fs(s&&e&&t?["useGetConvertToAssets",e,t,r]:null,async([i,n,l])=>(g(s),Dt({sharesAmount:n,vaultAddress:l,publicClient:s})),{...o?.opts});return{...a,refresh:()=>{a.mutate()}}};import{useMemo as Js}from"react";import{zeroAddress as Xs}from"viem";import{defaultChainId as ea}from"@berachain/config/internal";import{useBeraWallet as ta,usePublicClient as ra}from"@berachain/wagmi/hooks";import{Slippage as ys,Swap as As,SwapKind as bs,Token as zr,TokenAmount as hs}from"@berachain-foundation/berancer-sdk";import{decodeFunctionData as Rs,formatEther as Zr,zeroAddress as ws}from"viem";import{getUriFromLink as ks}from"@berachain/config";import{ChainId as jr}from"@berachain/config/internal";var Ps=300,Cs=.05,$e=bs.GivenIn,ze=class extends I{name="Hub Pools";supportedChains=[jr.MAINNET,jr.BEPOLIA];url=ks(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(Zr(t.scale18))/Number.parseFloat(o);if(Math.abs(1-a)>Cs){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:a});let i=new v({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:Zr(t.scale18),sorAmount:o,queryData:s},fingerprint:["SOR_STALE_PRICES"]});we.captureException(i)}}async getQuote(t){let r=new Lt(this.url,this.chainId),{tokenIn:o,tokenOut:s,amount:a,slippage:i,account:n=ws,publicClient:l}=t;this.assertChainSupport({tokenIn:o,tokenOut:s}),g(l);let u=h(o,"BERA")||h(s,"BERA"),m=new zr(this.chainId,this.convertZeroToWrapped(o.address),o.decimals),p=new zr(this.chainId,this.convertZeroToWrapped(s.address),s.decimals),c=hs.fromRawAmount(m,a),{paths:d,priceImpact:f,returnAmount:y}=await r.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:m.address,tokenOut:p.address,swapKind:$e,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:$e,swapAmount:c},message:"No swap paths returned from Balancer API"});let A=new As({chainId:this.chainId,paths:d,swapKind:$e,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:ys.fromPercentage(i.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+Ps),queryOutput:R,sender:w,recipient:w,wethIsEth:u}),{args:P,functionName:k}=Rs({abi:le,data:b.callData});return{params:P,functionName:k,abi:le,address:b.to,value:b.value||BigInt(0)}}}}},Ze=new ze;import{ChainId as Jr}from"@berachain/config/internal";var je=class extends I{name="RedeemBgt";supportedChains=[Jr.MAINNET,Jr.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:{...U,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}}},Xr=new je;import{zeroAddress as eo}from"viem";import{ChainId as to}from"@berachain/config/internal";var Je=class extends I{name="Enso";supportedChains=[to.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=eo,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",to.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??eo,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter})}}},Xe=new Je;import{erc4626Abi as ro,formatUnits as Ts}from"viem";var et=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}),J(s,"underlyingToken"),g(a);let i=await a.readContract({address:r.address,abi:ro,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:Ts(BigInt(o),t.decimals)}}],name:"Mint",isNativeSwap:!1,swapFeeBps:0,getCalldata:({account:l})=>n?{abi:Bt,address:r.address,functionName:"depositNative",params:[BigInt(o),l],value:BigInt(o)}:{abi:ro,address:r.address,functionName:"deposit",contractName:"others.erc4626",params:[BigInt(o),l],value:0n}}}},tt=new et;import{zeroAddress as Is}from"viem";import{ChainId as Ss}from"@berachain/config/internal";var oo="https://api.fly.trade/aggregator",rt=class extends I{name="Fly";supportedChains=[Ss.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(`${oo}/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(`${oo}/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:T})=>{let S=this.getInputData({tokenIn:l,amountIn:o,isNative:m}),x={tokenOut:u,receiver:T,minAmountOut:this.getMinAmountOut(A.amountOut,s),isNative:p},N={aggregator:k?.to,data:k?.data};return{params:[S,x,N,{rewardVault:n??Is,isSwapAndStake:!!n}],functionName:"swap",abi:L,value:h(t,"BERA")?BigInt(o):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}}},ot=new rt;import{formatUnits as Es,parseUnits as xs,zeroAddress as vs}from"viem";import{ChainId as Bs}from"@berachain/config/internal";var st=class extends I{name="Haiku";supportedChains=[Bs.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 v({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}`]:Es(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:xs(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 P=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 T=this.getInputData({tokenIn:u,amountIn:o,isNative:p,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),S={tokenOut:m,receiver:k,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:c},x={aggregator:P.to,data:P.data};return{params:[T,S,x,{rewardVault:l??vs,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},at=new st;import{formatUnits as so}from"viem";import{ChainId as Ds}from"@berachain/config/internal";function Os(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var nt=class extends I{name="Honey";supportedChains=[Ds.MAINNET];type="rpc";honeyToken=ye(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 v({message:"This collateral is not part of the Honey protocol"});let[p,c]=await Promise.all([be({client:s,collateralList:[m]}),he({client:s,isMint:l,collateralList:n,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new v({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=so(BigInt(o),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 jt(A);if(!R)throw new v({message:"Failed to fetch the Honey preview"});let{honey:w,collaterals:b}=R;if(!(l?!0:new E(d?.balance.formatted??"0").gte(so(b[m.address],m.decimals))))return;let k=await tr({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 v({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})=>k({account:T})}}},it=new nt;import{zeroAddress as ao}from"viem";import{ChainId as Ls}from"@berachain/config/internal";var lt=class extends I{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:r,amount:o,slippage:s,account:a=ao,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(),P=new URL(n?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[x,N]of b)P.searchParams.set(x,N);let T=await(await this.fetch(P,{method:"POST",body:JSON.stringify(w)})).json(),S=this.getInputData({tokenIn:p,amountIn:o,isNative:u});return{...R,getCalldata:({account:x})=>{let N={tokenOut:c,receiver:x,minAmountOut:this.getMinAmountOut(R.amountOut,s),isNative:m},Q={aggregator:T.data.routerAddress,data:T.data.data};return{params:[S,N,Q,{rewardVault:l??ao,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(u?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},ut=new lt;import{zeroAddress as Us}from"viem";import{ChainId as Ns}from"@berachain/config/internal";var pt=class extends I{name="Oogabooga";supportedChains=[Ns.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},P={aggregator:y.tx?.to,data:y.tx?.data};return{params:[w,b,P,{rewardVault:n??Us,isSwapAndStake:!!n}],functionName:"swap",abi:L,value:BigInt(m?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},mt=new pt;import{zeroAddress as no}from"viem";import{ChainId as io}from"@berachain/config/internal";var dt=class extends I{name="OpenOcean";supportedChains=[io.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=no,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:io.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(P=>R.error.includes(P));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 P=this.getInputData({tokenIn:m,amountIn:o,isNative:c}),k={tokenOut:p,receiver:b,minAmountOut:this.getMinAmountOut(w.amountOut,s),isNative:d},T={aggregator:R.data.to,data:R.data.data};return{params:[P,k,T,{rewardVault:l??no,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(c?o:"0"),address:this.config.bex.aggregatorsRouter}}}}},ct=new dt;import{ChainId as lo}from"@berachain/config/internal";var ft=class extends I{name="Wrap";supportedChains=[lo.MAINNET,lo.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:Ye,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(o)}:{abi:Ye,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(o)],value:BigInt(0)}}}},gt=new ft;import Hs from"swr/immutable";import{zeroAddress as Vs}from"viem";import{usePublicClient as Ws}from"@berachain/wagmi/hooks";var Ie=()=>{let e=Ws(),{config:t}=C({chainId:e.chain?.id}),r=Hs(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==Vs?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,o])=>{let s=await e.readContract({address:o,abi:L,functionName:"SWAP_FEE_RATE"});return Number(s)});return{...r,refresh:r.mutate}};import Qs from"swr/immutable";import{useConfig as Ys}from"@berachain/wagmi/hooks";import{getPublicClient as Ms}from"@wagmi/core";import{erc4626Abi as _s}from"viem";async function uo({token:e,wagmiConfig:t}){try{if(h(e,"BERA"))return null;let r=Ms(t,{chainId:e.chainId});g(r);let o=await r.readContract({address:e.address,abi:_s,functionName:"asset"});return await q({address:o,publicClient:r,chainId:e.chainId})}catch(r){let o=Ot({cause:r});if(o.reason==='The contract function "asset" reverted.')return null;throw o}}function po({token:e}){let t=Ys();return Qs(e&&t&&!h(e,"BERA")?["useUnderlyingAsset",e]:null,async([,r])=>uo({token:r,wagmiConfig:t}))}import Gs from"swr";import{parseUnits as Fs,zeroAddress as Ks}from"viem";import{useBeraWallet as qs,usePublicClient as $s}from"@berachain/wagmi/hooks";var mo="useAggregatorsQuotes";function zs({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=Fs(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:[mo,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 Zs({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 W({feeBps:e,publicClient:t,account:r,proxyAggregatorsThroughVercel:o,activeAggregators:s,isMAEnabled:a,...i},n){return Gs(zs({aggregator:i.aggregator,account:r,args:i,feeBps:e,options:n,activeAggregators:s,isMAEnabled:a}),Zs({aggregator:i.aggregator,proxyAggregatorsThroughVercel:o,publicClient:t}),n?.opts)}function yt(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 v&&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??Re(10))}}}}function js(e,t){let{address:r}=qs(),o=V("proxyAggregatorsThroughVercel"),s=V("aggregators"),a=$s(),{data:i}=Ie();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}=C(e),l=n.bex.aggregatorsRouter!==Ks;return W({...e,aggregator:e.aggregator,feeBps:i,activeAggregators:s,account:r,isMAEnabled:l,publicClient:a,proxyAggregatorsThroughVercel:o},{...t,opts:yt(t)})}var oa=[mt,ot,ut,ct,at,Xe,Ze,it,tt];function Kc(e,t){let{address:r}=ta(),o=V("proxyAggregatorsThroughVercel"),s=V("aggregators"),a=ra(),{data:i}=Ie(),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:ea}),{data:u}=po({token:e.tokenOut}),m=n||l,{config:p}=C(e),c=p.bex.aggregatorsRouter!==Xs,d=yt(t),f={activeAggregators:s,isMAEnabled:c,underlyingToken:u,isNativeSwap:m,account:r,publicClient:a,proxyAggregatorsThroughVercel:o,feeBps:i},y=W({...f,...e,aggregator:mt},{opts:d}),A=W({...f,...e,aggregator:ot},{opts:d}),R=W({...f,...e,aggregator:tt},{opts:d}),w=W({...f,...e,aggregator:ut},{opts:d}),b=W({...f,...e,aggregator:ct},{opts:d}),P=W({...f,...e,aggregator:at},{opts:d}),k=W({...f,...e,aggregator:Xe},{opts:d}),{protocol:T}=qe(),S=W({...f,...e,aggregator:Ze},{opts:{...d,isEnabled:T.isPaused===!1}}),x=W({...f,...e,aggregator:gt}),N=W({...f,...e,aggregator:Xr},{opts:d}),Q=W({...f,...e,aggregator:it},{opts:d}),O=n?[x]:l?[N]:[y,R,A,w,b,P,k,Q,T.isPaused===!1?S:null].filter(z=>z!==null);return{...Js(()=>{let z=O.reduce((M,ie)=>M||ie.error,void 0),_e=O.map((M,ie)=>M.isLoading?m?gt.name:oa[ie].name:null).filter(Boolean),ne=O.filter(M=>M!==void 0&&!M.isLoading&&!M.error&&M.data?.amountOut).map(({data:M})=>M),me=ne.length===0&&_e.length>0;return{quotes:ne,loadingAggregatorsNames:_e,isLoading:me,error:z}},[O]),refresh:()=>O.map(z=>z.mutate())}}import sa from"swr";var aa=({query:e}={})=>["useAllUserPools",e],co=(e,t)=>{let r=sa(aa({query:e}),async([o,s])=>Ae({...s,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>{r.mutate()}}};import na from"swr";import{isAddress as ia}from"viem";var la=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function fo({poolId:e,account:t}){let r=na(la({poolId:e,account:t}),async([,o,s])=>{if(s&&!ia(s))throw new D({property:"account",value:s,expected:"Address"});return Ut({poolId:o,account:s})},{refreshInterval:1e5});return{...r,refresh:()=>{r.mutate()}}}import{useMemo as bo}from"react";import{PoolType as Se}from"@berachain-foundation/berancer-sdk";import pa from"swr/immutable";import{formatUnits as ma,keccak256 as da,parseUnits as Ee,zeroAddress as bt}from"viem";import{GetDedupedSubgraphPools as ca}from"@berachain/graphql/dex/subgraph";import{PoolType as go}from"@berachain-foundation/berancer-sdk";import{formatUnits as ua}from"viem";var At=e=>[...e].sort((t,r)=>t.address.toLowerCase().localeCompare(r.address.toLowerCase())),yo=e=>e.length===0?"":At(e).map(t=>t.symbol).join(" | "),Ao=(e,t,r)=>{let o;switch(r){case go.ComposableStable:o="STABLE";break;default:o=r.toString().toUpperCase();break}return r===go.Weighted?t.length===0?"":`${At(e).map((s,a)=>{let i=t[a];return`${(Number.parseFloat(ua(i,18))*100).toFixed(0)}${s.symbol}`}).join("-")}-${o}`:`${At(e).map(s=>s.symbol).join("-")}-${o}`};var fa=.005,ga=(r=>(r.None="None",r.Custom="Custom",r))(ga||{}),ya=({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=Fe})=>{let d=t.map(k=>k.address.toLowerCase()).sort((k,T)=>k<T?-1:1),f=d.map(k=>{let T=r.find(O=>O.address.toLowerCase()===k||h(k,"WBERA")&&h(O.address,"BERA")),S=T?Ee(T.amount,T.decimals):0n,x=u.find(O=>O.tokenAddress.toLowerCase()===k.toLowerCase()),N=x?x.address:bt,Q=BigInt(x?x.cacheDuration:100);return{amountIn:S,rateProvider:N,cacheDuration:Q}}),y=f.map(k=>k.amountIn),A=f.map(k=>k.rateProvider),R=f.map(k=>k.cacheDuration),w=r.findIndex(k=>h(k.address,"BERA")),b=w!==-1?Ee(r[w].amount,r[w].decimals):0n,P=b>0n;return{address:e,abi:Qe,functionName:"createAndJoinStablePool",params:[a,i,d,BigInt(l),A,R,!1,o,y,n,s,P],message:m,actionType:p,value:b,gasLimit:c,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:i}}}},Aa=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,normalizedWeights:o,swapFeePercentage:s,salt:a,poolName:i,poolSymbol:n,owner:l,message:u,actionType:m,gasLimit:p=Fe})=>{let c=[],d=[],f=[],y=[];t.map((w,b)=>({createToken:w.address,joinToken:r[b].address,weight:o[b],amountIn:Ee(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(bt),R=A!==-1?y[A]:0n;return{address:e,abi:Qe,functionName:"createAndJoinWeightedPool",params:[i,n,c,d,f,Array(c.length).fill(bt),s,y,l,a],message:u,actionType:m,value:R,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:i,poolSymbol:n}}}},bf=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,poolType:o,poolName:s,poolSymbol:a,swapFee:i,owner:n,amplification:l,oracles:u,weightsDuplicationThreshold:m=fa,...p})=>{let{data:c,error:d,isLoading:f}=pa(["useCreatePool__deduped_pool",e,o,r],async()=>{if(e.length===0||!o)return null;let w=j("bex.subgraph",{});try{let b=Te(e).map(T=>T.address.toLowerCase()).sort((T,S)=>T.toLowerCase()<S.toLowerCase()?-1:1);return(await w.query({query:ca,variables:{tokens:b,type:o}})).data.pools.filter(T=>T.tokens?.every(S=>o===Se.Weighted?b.includes(S.address)&&Math.abs(Number(S.weight)-Number(ma(r[b.indexOf(S.address)],18)))<m:b.includes(S.address)||S.address===T.address))?.at(0)??null}catch{return null}}),{generatedPoolName:y,generatedPoolSymbol:A}=bo(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let w=yo(e),b=Ao(e,r,o);return{generatedPoolName:w,generatedPoolSymbol:b}},[e,r,o]),R=bo(()=>{if(!n||s===""||a===""||e.length!==t.length||e.length===0)return null;let w=Ee(i.toString(),16),b=da(Buffer.from(`${s}-${n}`)),{config:P}=C(p);return o===Se.Weighted?Aa({poolCreationHelper:P.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===Se.ComposableStable||o===Se.MetaStable?ya({poolCreationHelper:P.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 ka from"swr";import{usePublicClient as Pa}from"@berachain/wagmi/hooks";import{erc20Abi as ba,formatUnits as ha}from"viem";import{GetExploitedTokens as Ra}from"@berachain/graphql/dex/subgraph";var wa=1e-4;async function ho({token:e,publicClient:t,...r}){let o=j("bex.subgraph",r),s=await t.readContract({address:e.address,abi:ba,functionName:"totalSupply"}),a=E(ha(s,e.decimals)).multipliedBy(wa),{data:i}=await o.query({query:Ra,variables:{token:e.address,balance:a.toFixed()}});return i.userInternalBalances.length>0}var Ca=e=>{let t=e?.filter(r=>r.address);return!t||t.length===0?null:["useExploitedTokens",t]},xf=({tokens:e})=>{let t=Ca(e),r=Pa(),o=ka(r?t:null,async([,s])=>(g(r),(await Promise.all(s.map(i=>ho({token:i,publicClient:r})))).reduce((i,n,l)=>(n!==void 0&&(i[s[l].address]=n),i),{})));return{...o,refresh:()=>o.mutate()}};import Ta from"swr";var Ia=()=>{let e=Ta("useGlobalLiquidityAndSwapVolume",async()=>Nt());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as Sa,useState as Ea}from"react";import{PoolType as pe}from"@berachain-foundation/berancer-sdk";var xa=.05,Hf=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:r,tokens:o,weights:s,weightsError:a,poolType:i,liquidityMismatchTolerancePercent:n=xa,oracles:l})=>{let[u,m]=Ea({title:null,message:null});return Sa(()=>{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=Te(o).map(b=>{let P=t[b.address.toLowerCase()]?.price??0;if(!P||P===0)return c.push(0),null;let k=P*Number.parseFloat(b.amount);return c.push(k),p+=k,P});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===pe.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===pe.ComposableStable){let b=p/d;c.forEach(P=>{A+=Math.abs(b-P)})}else i===pe.Weighted&&c.forEach((b,P)=>{let k=Number(s[P])/1e18,T=p*k;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===pe.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:i===pe.ComposableStable}):m({title:null,message:null})},[e,t,r,o,s,a,i,n,l]),u};import{formatEther as Co,isAddressEqual as ja}from"viem";import La from"swr";import{isAddress as Ro,zeroAddress as Ua}from"viem";import{useBeraWallet as Na,usePublicClient as Ha}from"@berachain/wagmi/hooks";import va from"swr/immutable";import{isAddress as Ba,zeroAddress as Da}from"viem";import{usePublicClient as Oa}from"@berachain/wagmi/hooks";var ht=({tokenAddress:e},{isEnabled:t=!0}={})=>{let r=Oa(),o=r&&e&&Ba(e)&&t?["useRewardVaultFromToken",e]:null,s=va(o,async([,a])=>{if(!a)throw new Error("useRewardVaultFromToken needs a valid token address");g(r);let{config:i}=C({chainId:r.chain.id}),n=await r.readContract({address:i.pol.factory,abi:vt,functionName:"getVault",args:[a]});return n===Da?void 0:n});return{...s,refresh:()=>s.mutate()}};var wo=({stakingToken:e,rewardVaultAddress:t},r)=>{let{address:o}=Na(),s=Ha(),a=r?.opts?.isEnabled??!0,{data:i=t,error:n,mutate:l,isLoading:u}=ht({tokenAddress:e},{isEnabled:!t&&a}),m=La(i&&o&&s&&Ro(i)&&Ro(o)&&a?["useVaultBalanceFromStakingToken",i,o]:null,async([,p,c])=>{if(g(s),p===Ua)return{address:p,balance:0n};let d=await s.readContract({address:p,abi:ce,functionName:"balanceOf",args:[c]});return{address:p,balance:d}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import Ya from"swr";import{erc20Abi as Ga,formatEther as Fa,formatUnits as Ka,isAddress as Po,zeroAddress as qa}from"viem";import{defaultChainId as $a}from"@berachain/config/internal";import{useBeraWallet as za,usePublicClient as Za}from"@berachain/wagmi/hooks";import Va from"swr/immutable";import{isAddress as Wa,zeroAddress as Ma}from"viem";import{defaultChainId as _a}from"@berachain/config/internal";import{usePublicClient as Qa}from"@berachain/wagmi/hooks";function ko(e,t){let r=Qa({chainId:e.chainId}),o=e?.address&&r&&Wa(e.address)?["useTokenInformation",e.address,e.chainId]:null,s=Va(o,async([a,i,n=_a])=>h(i,"BERA")?{address:Ma,decimals:U.decimals,name:U.name,symbol:U.symbol,chainId:n}:(g(r),await q({address:i,publicClient:r,chainId:n})),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}}function xe({address:e,owner:t,chainId:r=$a},o){let s=e;h(s,"ETH")&&(s=qa);let a=Za({chainId:r}),{address:i}=za(),n=t??i,l=(o?.opts?.isEnabled??!0)&&a&&n&&Po(n)&&s&&Po(s)?["usePollBalance",n,s,r]:null,{data:u,isLoading:m}=ko({address:s,chainId:r}),p=h(s,"BERA"),{isLoading:c,data:d,error:f,...y}=Ya(l,async([,w,b])=>(g(a),h(b,"BERA")?await a.getBalance({address:w}):await a.readContract({address:b,abi:Ga,functionName:"balanceOf",args:[w]})),{refreshInterval:1e4}),A=!f&&d?h(s,"BERA")?Fa(d):u&&!m?Ka(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?U.decimals:u?.decimals??0,symbol:p?U.symbol:u?.symbol??"",name:p?U.name:u?.name??""};return{...y,refresh:()=>{y.mutate()},isLoading:c||p?m:!1,error:f||!p?f:void 0,data:R}}var hg=({pool:e,vaultAddress:t},r)=>{let{data:o,...s}=xe({address:e?.address}),{data:a,refresh:i}=wo({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=>ja(y.address,p.address))?.ratio??0,d=c?E(o?.balance.formatted??"0").times(c):E(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:Co(a.balance)},usdValue:Number(Co(a.balance))*u}:void 0},...s,refresh:()=>{s.refresh?.(),i()}}};import{useMemo as Io}from"react";import{parseUnits as tn,zeroAddress as rn}from"viem";import Ja from"swr";import{useBeraWallet as Xa,useConfig as en}from"@berachain/wagmi/hooks";function To(e,t){let r=en(),{address:o}=Xa(),s=r&&o&&e?.items?["usePollAllowances",o,e?.items]:null,a=Ja(s,async([,i,n])=>Cr({items:n,account:i,config:r}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a?.mutate?.()}}function on({amount:e,decimals:t,slippage:r}){let o=tn((r??0).toString(),t);return e+e*o/BigInt(100*10**t)}function sn(e,t){let{slippage:r}=t??{},o=Io(()=>e.filter(l=>l.token.address!==rn).filter(l=>E(l.amount.formatted).gt(0)),[e]),{data:s,refresh:a,isLoading:i}=To({items:o});return{needsApproval:Io(()=>s?.map(l=>{let u=o.find(p=>h(p.token.address,l.token));if(!u)throw new v({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,items:o}});let m=on({decimals:u.token.decimals,amount:BigInt(u.amount.raw),slippage:r});if(E(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 fn}from"react";import gn from"swr/immutable";import{formatUnits as yn,isAddress as An}from"viem";import{usePublicClient as bn}from"@berachain/wagmi/hooks";import an from"swr/immutable";import{isAddress as nn}from"viem";import{defaultChainId as ln}from"@berachain/config/internal";import{usePublicClient as un}from"@berachain/wagmi/hooks";function So(e,t){let r=un(),o=r&&e.addresses?["useMultipleTokenInformation",e.addresses,e.chainId??ln]:null,s=an(o,async([,a,i])=>(g(r),Promise.all(a.map(async n=>{if(!n||!nn(n,{strict:!1}))throw new Error("Invalid address");let l=await q({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 ve}from"react";import mn from"swr";import{isAddress as dn,zeroAddress as cn}from"viem";import{defaultChainId as te}from"@berachain/config/internal";import{useContext as pn}from"react";function ee(){let e=pn(Kr);if(!e)throw new v({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=ve(()=>{let p=[];return e&&p.push(...e.filter(c=>dn(c))),p.map(c=>c.toLowerCase())},[r]),i=ve(()=>{let p=new Set(r?.map(c=>c.address.toLowerCase()));return r.some(c=>h(c,"WBERA"))&&p.add(cn),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=mn(n,async([,p])=>Pr({addressIn:p}),t.opts),u=ve(()=>{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=ve(()=>({...u,...l.data}),[u,l.data]);return{...l,data:m}}function hn(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return An(t)&&t?["useOnChainPoolData",t]:null}function Eo(e){let t=bn(),r=e?.slice(0,42),o=hn({poolId:e}),{data:s,error:a,isLoading:i,mutate:n}=gn(t?o:null,async([,d])=>Ht({poolId:d,publicClient:t})),{data:l,isLoading:u}=So({addresses:s?.poolTokens[0]}),{data:m,isLoading:p}=re({addressIn:s?.poolTokens[0]});return{data:fn(()=>{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:yn(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 Rn from"swr";import{useBeraWallet as wn,usePublicClient as kn}from"@berachain/wagmi/hooks";var Pn=e=>{let{address:t}=wn(),r=kn(),o=t&&r?["usePollPoolCreationRelayerApproval",t,r.chain.id]:null,s=Rn(o,async([,i])=>{g(r);let{config:n}=C({chainId:r.chain.id});return await r.readContract({address:n.bex.vault,abi:le,functionName:"hasApprovedRelayer",args:[i,n.bex.poolCreationHelper]})},{...e?.opts});return{...s,refreshPoolCreationApproval:()=>{s.mutate()}}};import{useMemo as Cn}from"react";import Tn from"swr";function In({poolId:e}){return e?["usePool-subgraph",e]:null}var yy=({poolId:e})=>{let t=Tn(In({poolId:e}),async([,n])=>Mt({poolId:n}),{refreshInterval:1e5}),r=fo({poolId:e}),{data:o,isLoading:s,refresh:a}=Eo(e);return{data:[Cn(()=>{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 Sn from"swr/immutable";var Ry=({poolId:e,typeInArray:t})=>Sn(e?["usePoolEvents",e,t]:null,async([,r,o])=>Vt({poolId:r,typeInArray:o}),{refreshInterval:18e4});import En from"swr";var Ty=({poolId:e,...t},r)=>{let{config:o}=C(t),a=En(e?["usePoolHistoricalData",e]:null,async([,i])=>await Wt({poolId:i,chain:o.bex.chainName}),r?.opts);return{...a,refresh:()=>void a.mutate()}};import{useMemo as xo}from"react";import xn from"swr";import{useBeraWallet as vn}from"@berachain/wagmi/hooks";var Bn=({query:e}={})=>["useAllPools",e],Dy=(e,t)=>{let{address:r}=vn(),{data:o,isLoading:s,mutate:a}=co({userAddress:r,chain:e.chain}),{data:i,isLoading:n,mutate:l}=xn(Bn({query:e}),async([p,c])=>Ae(c),{refreshInterval:18e4,...t?.opts}),u=xo(()=>{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=xo(()=>({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 On}from"react";import{useCallback as Dn,useMemo as vo}from"react";import{defaultChainId as oe}from"@berachain/config/internal";function $({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=vo(()=>{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=vo(()=>{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=Dn(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 Be({tokenIn:e,tokenOut:t,formattedAmountIn:r,formattedAmountOut:o}){let{getTokenPrice:s,isLoading:a}=$({tokens:e&&t?[e,t]:void 0});return{data:On(()=>{if(!e||!t||!r||!o)return;let n=s(e),l=s(t);return!n||!l?null:qr(n.toString(),l.toString(),r,o)},[e,t,r,o]),isLoading:a}}import Ln from"swr";import{formatEther as Un,parseUnits as Nn,zeroAddress as Do}from"viem";import{defaultChainId as Hn}from"@berachain/config/internal";import{useBeraWallet as Vn,usePublicClient as Wn}from"@berachain/wagmi/hooks";import{ethAddress as Bo,zeroAddress as Rt}from"viem";var wt=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=Rt,aggregatorsFeeBps:i,proxyAggregatorsThroughVercel:n=!1,rewardVault:l,underlyingToken:u}){this.assertChainSupport({tokenIn:t,tokenOut:r}),F(a,"account");let m=fe({useProxy:!n});t.address===Rt&&(t.address=Bo),r.address===Rt&&(r.address=Bo);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)})}}},De=new wt;function aA({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s,slippage:a},i){let{getTokenPrice:n}=$({tokens:e&&t?[e,t]:void 0}),l=Mn({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s?Nn(s,e?.decimals??18).toString():void 0,slippage:a},i),{data:u}=$r({sharesAmount:BigInt(l.data?.amountOut??0),vaultAddress:r.address}),{data:m}=Be({tokenIn:e,tokenOut:t,formattedAmountIn:s,formattedAmountOut:u?.formatted??"0"}),p=e?.chainId&&e.chainId!==Hn,{data:c,isLoading:d}=xe({address:Do,chainId:p?e?.chainId:void 0},{opts:{isEnabled:!!p}}),f=l.data?.getCalldata?.({account:Do})?.value??0n,y=c?.balance??{raw:"0",formatted:"0"},A=p&&f>0n&&!d&&f>BigInt(y.raw),R=p&&f>0n?Un(f):void 0;return{...l,zapSupplyAmount:u,priceImpact:m,hasInsufficientNativeBalance:A,isCrossChain:p,nativeFee:R,refresh:()=>{l.mutate()}}}function Mn({tokenIn:e,loanToken:t,bendVault:r,rewardVault:o,amount:s,slippage:a},i){let{address:n}=Vn(),l=!!e&&!!t&&!!r&&!!s&&!!n&&!h(t.address,e.address)&&e.chainId&&Number(s)>0&&!!a,u=Wn();return Ln(l?["useBendZapSupply",e,t,r,o,s,a]:null,async([,p,c,d,f,y,A])=>(g(u),F(n,"fromAddress"),F(p?.address,"tokenInAddress"),J(p?.chainId,"tokenInChainId"),await De.getQuote({tokenIn:p,tokenOut:d,underlyingToken:c,amount:y,slippage:A,account:n,rewardVault:f})),{...i?.opts,refreshInterval:1e5})}import{getPublicClient as Zn}from"@wagmi/core";import jn from"swr";import{parseUnits as Jn}from"viem";import{defaultChainId as Xn}from"@berachain/config/internal";import{useBeraWallet as ei,useConfig as ti}from"@berachain/wagmi/hooks";import{ethAddress as Yn,zeroAddress as Gn}from"viem";import{erc20Abi as _n,ethAddress as Qn}from"viem";var Oo=async({fromAddress:e,amountIn:t,tokenIn:r,chainId:o,ensoClient:s,bundle:a,publicClient:i})=>{let n=[];if(r!==Qn){let l=await s.getApprovalData({fromAddress:e,tokenAddress:r,chainId:o,amount:t}),u=!0;i&&(u=await i.readContract({address:r,abi:_n,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 Lo({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===Gn&&(o=Yn);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 Oo({fromAddress:e,amountIn:t,tokenIn:r,chainId:s,ensoClient:a,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{useMemo as Fn}from"react";import Kn from"swr";import{useBeraWallet as qn,useConfig as $n,usePublicClient as zn}from"@berachain/wagmi/hooks";function Oe(e,t){let r=zn(),o=$n(),{address:s}=qn(),{tokenList:a,refresh:i}=ee(),n=e?.walletAddress??s,l=Fn(()=>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=Kn(u,async([,p,c])=>Ce({account:p,tokenList:c,wagmiConfig:o}),{refreshInterval:1e5,...t?.opts});return{...m,refresh:()=>{m?.mutate?.(),i()}}}function EA({tokenIn:e,tokenOut:t,amount:r,slippage:o}){let{address:s}=ei(),a=ti(),i=fe(),{refresh:n}=Oe(),l=!!e&&!!t&&!!r&&Number(r)>0&&!!o&&!!s&&!!e.chainId,m=jn(l?["useEnsoSwapBundle",e,t,r,o]:null,async([,p,c,d,f])=>{F(s,"fromAddress"),F(p?.address,"tokenInAddress"),J(p?.chainId,"tokenInChainId"),F(c?.address,"tokenOutAddress"),Ge(d,"amount"),Ge(f,"slippage");let y=Zn(a,{chainId:p.chainId});g(y);let A=Jn(d,p.decimals).toString();return Lo({fromAddress:s,amountIn:A,tokenIn:p.address,tokenOut:c.address,chainId:p.chainId,ensoClient:i,destinationChainId:Xn,slippage:f,publicClient:y})},{refreshInterval:1e5,isEnabled:l});return{...m,refresh:()=>{m.mutate(),n()}}}import ri from"swr";import{formatUnits as oi,parseUnits as si}from"viem";import{chainConfigs as ai,defaultChainId as ni}from"@berachain/config/internal";import{useBeraWallet as ii}from"@berachain/wagmi/hooks";function NA({inputToken:e,amount:t,underlyingToken:r,slippage:o,tokenOut:s},a){let{address:i}=ii(),n=i??ai[ni].bex.aggregatorsRouterExecutor,u=!!e&&!!t&&Number(t)>0&&!!e.chainId&&!!r&&!!o?["useZapStakeBera",e,t,n,o,r,s]:null,m=ri(u,async([,c,d,f,y,A,R])=>{let w=si(d,c.decimals).toString();return De.getQuote({account:f,amount:w,tokenIn:c,underlyingToken:A,tokenOut:R,slippage:y})},{...a?.opts,refreshInterval:1e5}),{data:p}=Be({tokenIn:e,tokenOut:s,formattedAmountIn:t,formattedAmountOut:oi(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 kt,useEffect as di,useState as ci}from"react";import li from"gray-matter";import{encodeFunctionData as Ue,erc20Abi as ui,parseAbiItem as pi,toHex as mi}from"viem";function Le(e){return Object.values(e).some(t=>Array.isArray(t)?t.some(r=>typeof r=="object"&&r!==null?Le(r):!!r):typeof t=="object"&&t!==null?Le(t):!!t)}var Uo=({proposal:e,currentTopic:t,onError:r})=>{let o=Qt(e,t),s=[];if(o.actions=e.actions.map((n,l)=>{let u={};if(u.target=H({fieldOrType:"address",value:n.target}),n.type==="custom-action")if(n.input==="ABI")if(u.ABI=H({fieldOrType:"abi",value:n.ABI}),!n.functionSignature)u.functionSignature="Required";else try{let p=pi(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?H({fieldOrType:c.type,value:n.args?.[d],components:c.components}):H({fieldOrType:c.type,value:n.args?.[d]})}catch{return null}}),u.args.some(c=>c)||(s[l]=Ue({abi:[p],args:n.args})))}catch{u.functionSignature="Invalid ABI"}else if(n.input==="rawCalldata")u.rawCalldata=H({fieldOrType:"hex",value:n.rawCalldata}),s[l]=n.rawCalldata;else if(n.input==="message")u.message=H({fieldOrType:"string",value:n.message}),s[l]=mi(n.message);else throw new Error("Invalid input type");else if(n.type==="whitelist-reward-vault"||n.type==="blacklist-reward-vault"){if(u.vault=H({fieldOrType:"address",value:n.vault}),!u.vault){let p=n.type==="whitelist-reward-vault";s[l]=Ue({abi:K,functionName:"setVaultWhitelistedStatus",args:[n.vault,p,""]})}}else n.type==="whitelist-reward-vault-incentive"?(u.token=H({fieldOrType:"address",value:n.token}),u.minIncentiveRate=H({fieldOrType:"uint256",value:n.minIncentiveRate}),u.managerAddress=H({fieldOrType:"address",value:n.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(s[l]=Ue({abi:ce,functionName:"whitelistIncentiveToken",args:[n.token,BigInt(n.minIncentiveRate),n.managerAddress]}))):n.type==="erc20-transfer"&&(u.amount=H({fieldOrType:"uint256",value:n.amount}),u.to=H({fieldOrType:"address",value:n.to}),!u.amount&&!u.to&&(s[l]=Ue({abi:ui,functionName:"transfer",args:[n.to,BigInt(n.amount)]})));return Le(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=li.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 No={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},fi=({initialData:e={},currentTopic:t,onError:r})=>{let[o,s]=ci({title:"",description:"",forumLink:"",actions:[No],...e,topic:new Set});di(()=>{s(l=>({...l,topic:new Set([t.id])}))},[t]);let a=kt(()=>{s(l=>({...l,actions:[...l.actions,No]}))},[]),i=kt(l=>{s(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[s]),n=kt(()=>o?Uo({proposal:o,currentTopic:t,onError:r}):void 0,[o,t]);return{proposal:o,setProposal:s,addProposalAction:a,removeProposalAction:i,computeParamsAndErrors:n}};import Ai from"swr/immutable";import{formatUnits as bi}from"viem";import{useBeraWallet as hi,usePublicClient as Ri}from"@berachain/wagmi/hooks";import gi from"swr/immutable";import{usePublicClient as yi}from"@berachain/wagmi/hooks";var Ho=({proposalId:e})=>{let t=yi();return gi(t&&e?["useProposalSnapshot",e]:null,async([,o])=>{g(t);let{config:s}=C({chainId:t.chain.id});return(await t.readContract({abi:Y,address:s.governance.governor,functionName:"proposalSnapshot",args:[BigInt(o)]})).toString()})};var ub=e=>{let{address:t}=hi(),r=Ri(),o=e.wallet||t,{data:s}=Ho({proposalId:e.proposalId}),a=e.timepoint||s;return Ai(a&&r&&o?["useGetPastVotes",a,o]:null,async([,n,l])=>{g(r);let{config:u}=C({chainId:r.chain.id});if(Number(n)>Date.now()/1e3)throw new Error("timepoint is in the future");let m=await r.readContract({abi:G,address:u.tokens.bgt,functionName:"getPastVotes",args:[l,BigInt(n)]});return bi(m,18)})};import wi from"swr";import{isAddress as ki}from"viem";import{useBeraWallet as Pi,usePublicClient as Ci}from"@berachain/wagmi/hooks";var Ab=({proposalId:e,wallet:t})=>{let{address:r}=Pi(),o=Ci(),s=t||r;return wi(o&&s&&ki(s)?["useHasVoted",e,s]:null,([,a,i])=>{g(o);let{config:n}=C({chainId:o.chain.id});return o.readContract({address:n.governance.governor,abi:Y,functionName:"hasVoted",args:[BigInt(a),i]})})};import Ti from"swr";import{usePublicClient as Ii}from"@berachain/wagmi/hooks";var Vo="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var Ib=({account:e,...t})=>{let r=Ii(),{config:o}=C(t);return Ti(e&&r?["useCancellerRole",e]:null,async([,a])=>(g(r),await r.readContract({abi:de,address:o.governance.timelock,functionName:"hasRole",args:[Vo,a]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as Wo,useMemo as Si,useState as Ei}from"react";import xi from"swr/infinite";import{Proposal_OrderBy as vi,ProposalStatus as _}from"@berachain/graphql/governance";var Mo=10,Bi=e=>{switch(e){case _.QuorumNotReached:return[_.Active,_.Pending];case _.PendingQueue:case _.Defeated:return[_.Active];case _.PendingExecution:return[_.InQueue];default:return[e]}};function Di(e,t={}){let r=2*(t.perPage??Mo);return(o,s)=>{if(o!==0&&s&&s.length<r)return null;let a=t.status_in?.flatMap(Bi).filter((i,n,l)=>l.indexOf(i)===n);return["usePollAllProposals",o,e,t.where,a,t.orderBy,t.orderDirection,r,t.text]}}function Db(e,t){let r=t?.autoRefresh??!1,o=e.perPage??Mo,s=2*o,a=Di(e.topic,e);async function i(d){if(!d)return[];let[,f,y,A,R,w,b,P,k]=d;return(await _t({where:{topics_contains:[y],status_in:R?.length?R:void 0,...A},orderBy:w,orderDirection:b,text:k,perPage:P,offset:f*P})??[]).filter(Boolean)}let n=xi(a,i,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=Si(()=>{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===vi.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]=Ei(Date.now()/1e3);return Wo(()=>{if(!r)return;let d=setInterval(()=>{c(Date.now()/1e3)},1e4);return()=>clearInterval(d)},[r]),Wo(()=>{if(!n.data)return;let d=!1;for(let f of n.data.flat()){switch(f.status){case _.Pending:p>=Number(f.voteStartAt)&&(d=!0);break;case _.Active:p>=Number(f.voteEndAt)&&(d=!0);break;case _.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 _o,useState as Oi}from"react";import Li from"swr";import{ProposalStatus as Pt}from"@berachain/graphql/governance";import{usePublicClient as Ui}from"@berachain/wagmi/hooks";var Mb=(e,t)=>{let r=t?.autoRefresh??!1,o=Ui(),a=Li(e&&o?["usePollProposal",e]:null,([,l])=>(g(o),Yt({proposalId:l,client:o})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[i,n]=Oi(Date.now());return _o(()=>{if(!r)return;let l=setInterval(()=>{n(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),_o(()=>{if(a.data!==void 0)switch(a.data.status){case Pt.Pending:i>=Number(a.data.voteStartAt)&&a.mutate();break;case Pt.Active:i>=Number(a.data.voteEndAt)&&a.mutate();break;case Pt.InQueue:Date.now()/1e3+1>=Number(a.data.queueEnd)&&a.mutate();break}},[a.data?.status,i]),{...a,refresh:()=>a?.mutate?.()}};import Ni from"swr";import{formatEther as Hi}from"viem";import{usePublicClient as Vi}from"@berachain/wagmi/hooks";var qb=e=>{let t=Vi(),o=Ni(t?["usePollProposalThreshold",e]:null,async([,s])=>{g(t);let a=await t.readContract({address:s,abi:Y,functionName:"proposalThreshold"});return{votesThreshold:Hi(a)}},{refreshInterval:18e4});return{...o,refresh:o.mutate}};import Wi from"swr/infinite";var Ne=1e3,jb=(e,t)=>Wi(Mi(e,t),async([r,o])=>Ft({variables:{...e,limit:Ne,offset:Ne*o}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),Mi=({...e},t)=>r=>r>Math.floor(t/Ne)?null:["usePollProposalVotes",r,Ne,e.proposalId,e.orderBy,e.orderDirection];import _i from"swr";import{formatEther as Qi}from"viem";import{useBeraWallet as Yi,usePublicClient as Gi}from"@berachain/wagmi/hooks";var ah=e=>{let{address:t}=Yi(),r=Gi(),s=_i(t?["usePollUserDelegates",t]:null,async([,a])=>{g(r);let{config:i}=C({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:G,functionName:"delegates",args:[a]}),r.readContract({address:i.tokens.bgt,abi:G,functionName:"getVotes",args:[a]})]);return{delegate:n,currentVotes:Qi(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...s,refresh:()=>s?.mutate?.()}};import Fi from"swr";import{usePublicClient as Ki,useTransactionReceipt as qi}from"@berachain/wagmi/hooks";var ph=e=>{let{data:t}=qi({hash:e}),r=Ki();return Fi(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 Gt({tx:t,publicClient:r})})};import $i from"swr/immutable";import{usePublicClient as zi}from"@berachain/wagmi/hooks";var Zi={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},yh=({proposalId:e,governorAddress:t})=>{let r=zi();return $i(t&&r&&e?["useProposalState",e]:null,async([,s])=>{g(r);let a=await r.readContract({abi:Y,address:t,functionName:"state",args:[BigInt(s)]});return Zi[a]})};import ji from"swr";import{usePublicClient as Ji}from"@berachain/wagmi/hooks";var Xi={0:"unset",1:"waiting",2:"ready",3:"done"},kh=({proposalTimelockId:e,timelockAddress:t})=>{let r=Ji();return ji(t&&r&&e?["useProposalTimelockState",e,t]:null,async([,s,a])=>{g(r);let i=await r.readContract({abi:de,address:a,functionName:"getOperationState",args:[s]});return Xi[i]},{refreshInterval:18e4})};import tl from"swr";import{usePublicClient as rl}from"@berachain/wagmi/hooks";import{formatEther as el}from"viem";async function Ct({at:e,publicClient:t,...r}){let{config:o}=C(r);g(t);let s=await t.readContract({address:o.governance.governor,abi:Y,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return el(s)}function Dh({at:e},{isEnabled:t=!0}){let r=Math.floor(Date.now()/1e3),o=rl(),s=t&&o?["useQuorum",Number(e)>r?"now":e]:null,a=tl(s,async([,i])=>i==="now"?Ct({publicClient:o}):Ct({at:i,publicClient:o}));return{...a,data:a.data?Number(a.data):void 0}}import sl from"swr";import{usePublicClient as al}from"@berachain/wagmi/hooks";import ol from"swr";function se({priceFeedMap:e},t){let r=e?Object.values(e):null,o=(t?.opts?.isEnabled??!0)&&r?["usePythLatestPrices",r]:null;return ol(o,async([a,i])=>await Jt({priceFeedId:i}))}var Qo=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},s)=>{let a=al(),{priceFeedMap:i,flags:n}=B(),{data:l}=se({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=sl(u,async([p,c,d,f,y,A])=>A?!1:(g(a),await zt({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 nl from"swr";import{usePublicClient as il}from"@berachain/wagmi/hooks";var Yo=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},s)=>{let a=il(),{collateralList:i,referenceCollateral:n}=B(),u=nl(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=>Ke({client:a,asset:R.address,amount:y,isMint:r,referenceCollateral:f})))).some(R=>R)}return await Ke({client:a,asset:p,amount:c,isMint:r,referenceCollateral:f})},{refreshInterval:0,...s?.opts});return{...u,refresh:()=>void u.mutate()}};import ll from"swr";import{usePublicClient as ul}from"@berachain/wagmi/hooks";var eR=({collateralList:e},t)=>{let r=ul(),s=ll(r&&e?["useCollateralWeights",e]:void 0,async([a,i])=>(g(r),await qt({client:r,collateralList:i})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>void s.mutate()}};import{useMemo as Tt}from"react";import pl from"swr";import{useBeraWallet as ml,useConfig as dl,usePublicClient as cl}from"@berachain/wagmi/hooks";var Go=()=>{let e=cl(),{address:t}=ml(),{collateralList:r}=B(),o=dl(),a=pl(t&&r&&e?["useHoneyBalances",t,r]:null,async([i,n,l])=>{g(e);let u=[...l??[],ye({})];return(await Ce({account:n,tokenList:u,wagmiConfig:o}))?.reduce((c,d)=>(c[d.address]=d,c),{})},{refreshInterval:1e4});return{...a,refresh:()=>a.mutate()}};import fl from"swr";import{usePublicClient as gl}from"@berachain/wagmi/hooks";var Fo=e=>{let t=gl(),{collateralList:r}=B(),s=fl(r&&t?["useHoneyVaultsBalance",r]:null,async([a,i])=>(g(t),await be({client:t,collateralList:i})),{...e?.opts,refreshInterval:1e5});return{...s,refresh:()=>void s.mutate()}};import yl from"swr";import{usePublicClient as Al}from"@berachain/wagmi/hooks";var Ko=({collateral:e},t)=>{let r=Al(),{priceFeedMap:o,flags:s}=B(),{data:a}=se({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=yl(i,async([l,u,m,p])=>(g(r),await $t({client:r,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};var qo=({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 E(a?.balance.formatted??"0").lte(e),n=o.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new E(u?.balance.formatted??"0").lte(e)});return{isLow:i,isLiquidityLowCollaterals:n}}return{isLow:!1,isLiquidityLowCollaterals:[]}},bl=({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 E(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 hl({state:e,honeyBalances:t,...r}){let{config:o}=C(r),s=e.actionType==="mint";return!s&&t?new E(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 E(t[a.address]?.balance.formatted).lt(n)}):new E(t[e.collaterals[0].address]?.balance.formatted).lt(e.fromAmount[0]):!1}var DR=({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}=Ko({collateral:t[0]}),{collateralList:l}=B(),{isBlacklisted:u,isDepegged:m}=n??{isBlacklisted:!1,isDepegged:!1},{data:p}=Qo({asset:t[0],amount:i?r[0]:o[0],isMint:i,isBasketModeEnabled:s}),{data:c}=Yo({asset:t[0]?.address,amount:i?r[0]:o[0],isMint:i,isBasketModeEnabled:s}),{data:d}=Go(),{data:f}=Fo(),y=t[0]?.address,A=f?.find(T=>T.address.toLowerCase()===y.toLowerCase()),[R,w]=Tt(()=>{let T=qo({lowerThan:1,vaultsBalances:f,state:a,collateralList:l}),S=qo({lowerThan:1e3,vaultsBalances:f,state:a,collateralList:l});return[T,S]},[f,a]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:P}=Tt(()=>bl({vaultsBalances:f,redeemedVaultBalance:A,state:a,collateralList:l}),[f,A,a,l]),k=Tt(()=>hl({state:a,honeyBalances:d}),[a,d]);return{isLiquidityDepleted:R.isLow,isLiquidityDepletedCollaterals:R.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:b,isRedeemMoreThanLiquidityCollaterals:P,isLowLiquidity:w.isLow,isLiquidityLowCollaterals:w.isLiquidityLowCollaterals,isBlacklisted:a.isBasketModeEnabled?!1:u,isDepegged:a.isBasketModeEnabled?!1:m,isCappedGlobally:p,isCappedRelatively:c,isExceedingBalance:k}};import Rl from"swr";function NR({days:e}){let t=Rl(["useHoneyChartData",e],async([r,o])=>await Kt({days:o}));return{...t,refresh:()=>t.mutate()}}import wl from"swr";function _R(){let e=wl(["useHoneyGlobalData"],()=>Zt()),t=e.data?.honeySnapshots.reduce((r,o)=>new E(o.totalVolume).plus(r),new E(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as Cl,useReducer as Tl}from"react";import{formatUnits as zo}from"viem";import{defaultChainId as Il}from"@berachain/config/internal";import kl from"swr";import{usePublicClient as Pl}from"@berachain/wagmi/hooks";function $o({state:e},t){let r=Pl(),{priceFeedMap:o,flags:s,collateralList:a}=B(),{data:i}=se({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=kl(l,async([m,p,c,d,f])=>(g(r),await he({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 Sl={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function Zo(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return Zo({...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]?zo(r.collaterals[i.address],i.decimals):e.isBasketModeEnabled?"0":""),a=h(t.changedAsset,"HONEY",{chainId:Il})?o?e.toAmount[0]:e.fromAmount[0]:r.honey?zo(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 rw=()=>{let{collateralList:e}=B(),[t,r]=Tl(Zo,Sl,s=>({...s,collaterals:e})),{data:o}=$o({state:t});return Cl(()=>{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 El from"swr/immutable";import{usePublicClient as xl}from"@berachain/wagmi/hooks";var uw=({pythPriceFeedCalldata:e,tokenListLength:t},r)=>{let o=xl(),s=(r?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:a=Xt(t),isLoading:i}=El(s,async([n,l])=>(g(o),await er({client:o,priceFeedId:l})));return{QUERY_KEY:s,data:a,isLoading:i}};import{useMemo as vl}from"react";function cw(e){return vl(()=>{if(e)return ar(e)},[e])}import Bl from"swr";import{formatEther as Dl}from"viem";import{useBeraWallet as Ol,usePublicClient as Ll}from"@berachain/wagmi/hooks";var Ul=e=>{let{address:t}=Ol(),r=Ll(),s=Bl(t&&r?["useBgtUnstakedBalance",t]:null,async([,a])=>{g(r);let{config:i}=C({chainId:r.chain.id}),n=await r.readContract({address:i.tokens.bgt,abi:G,functionName:"unboostedBalanceOf",args:[a]});return Dl(n)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import Nl from"swr";import{formatUnits as Hl}from"viem";import{useBeraWallet as Vl,usePublicClient as Wl}from"@berachain/wagmi/hooks";var Ml=()=>{let{address:e}=Vl(),t=Wl(),o=Nl(e&&t?["useClaimableFees",e]:null,async([,s])=>{g(t);let{config:a}=C({chainId:t.chain.id}),i=await br({account:s,vaultAddress:a.pol.staker,publicClient:t});return Hl(i,18)},{refreshInterval:18e4*2});return{...o,refresh:()=>o?.mutate?.()}};import{GqlRewardVaultOrderBy as Gl,GqlRewardVaultOrderDirection as Fl}from"@berachain/graphql/pol/api";import _l from"swr";import{usePublicClient as Ql}from"@berachain/wagmi/hooks";var Yl=(e,t=!1)=>["useRewardVaults",e,t],It=(e,t)=>{let r=Yl(e.filter,e.onChainIncentives),o=Ql(),s=_l(t?.opts?.isEnabled??!0?r:null,async([,a,i])=>await ir({filter:a,publicClient:i?o:void 0}),{...t?.opts});return{...s,refresh:s.mutate}};var Uw=(e={},{isEnabled:t=!0}={})=>{let r=It({filter:{orderBy:Gl.Apr,orderDirection:Fl.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 Kl from"swr";import{usePublicClient as ql}from"@berachain/wagmi/hooks";var jo=e=>{let t=ql(),r=Kl(t?"usePollGlobalData":null,async()=>(g(t),lr(t)),{revalidateOnFocus:!1,...e?.opts});return{...r,refresh:r.mutate}};import $l from"swr/immutable";var zl=()=>"usePollMarkets",Gw=e=>{let t=zl(),r=$l(t,async()=>await ur(),{...e?.opts});return{...r,refresh:()=>r.mutate()}};import Zl from"swr/immutable";import{isAddress as jl}from"viem";import{usePublicClient as Jl}from"@berachain/wagmi/hooks";function jw({receiptTokenAddresses:e,account:t,version:r},o){let s=Jl(),a=e&&t&&s&&jl(t)&&r?["useQueuedBeraUnlock",e,t,r]:null,i=Zl(a,async([,n,l,u])=>(g(s),await Promise.all(n.map(async m=>await gr({contractAddress:m,accountAddress:l,publicClient:s,version:u}))).then(m=>m.flat())),{refreshInterval:1e4,...o?.opts});return{...i,refresh:()=>i.mutate()}}import Xl from"swr";import{isAddress as eu}from"viem";import{defaultChainId as tu}from"@berachain/config/internal";import{usePublicClient as ru}from"@berachain/wagmi/hooks";var nk=({address:e},t)=>{let r=e?["useRewardTokenToBeraRate",e]:null,o=ru({chainId:tu});return Xl(r,async([s,a])=>{if(!a||!eu(a))throw new D({property:"address",value:a,expected:"Address"});return g(o),ue({address:a,publicClient:o})},{...t?.opts})};import pu from"swr";import su from"swr";import{erc20Abi as au,formatUnits as nu,isAddress as iu}from"viem";import{usePublicClient as lu}from"@berachain/wagmi/hooks";import{erc20Abi as He,formatUnits as ou}from"viem";async function Ve({address:e,publicClient:t}){g(t);let[r,o,s,a]=await t.multicall({contracts:[{address:e,abi:He,functionName:"decimals"},{address:e,abi:He,functionName:"name"},{address:e,abi:He,functionName:"symbol"},{address:e,abi:He,functionName:"totalSupply"}],allowFailure:!0});return{address:e,decimals:r.result,name:o.result,symbol:s.result,totalSupply:a.result!==void 0?r.status==="success"?ou(a.result,r.result):a.result.toString():void 0}}var uu=e=>e&&iu(e)?["onChainRewardVault",e.toLowerCase()]:null,Jo=({address:e},t)=>{let r=lu(),o=t.opts?.isEnabled??!0,s=uu(e);return su(o&&r?s:null,async([,a])=>{g(r);let{config:i}=C({chainId:r.chain.id}),n=await Pe({address:a,publicClient:r}),[l,u,m]=await Promise.all([ke({address:a,stakingToken:n,publicClient:r}),r.readContract({address:i.pol.beraChef,abi:K,functionName:"isWhitelistedVault",args:[a]}),r.readContract({address:n,abi:au,functionName:"balanceOf",args:[a]})]),[p,c]=await Promise.all([Ve({address:n,publicClient:r}),Promise.all(l.map(d=>q({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:nu(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 mu=e=>e?["useRewardVault",e.toLowerCase()]:null,Tk=(e,t)=>{let r=mu(e),o=pu(r,async([i,n])=>mr({address:n}),{...t?.opts}),s=t?.opts?.isEnabled??((!!o.error||!o.isLoading)&&!o.data),a=Jo({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 du from"swr";import{usePublicClient as cu}from"@berachain/wagmi/hooks";function Bk({address:e,stakingToken:t}){let r=cu(),s=du(r&&e&&t?["useRewardVaultIncentives",e,t]:null,async([,a,i])=>(g(r),await ke({address:a,stakingToken:i,publicClient:r})));return{...s,refresh:()=>s?.mutate?.()}}import fu from"swr";import{usePublicClient as gu}from"@berachain/wagmi/hooks";var yu=(e,t)=>{let r=gu(),s=fu(r&&e?["useRewardVaultRewards",e]:null,async([,a])=>(g(r),await sr(a,r)),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};import Au from"swr";var We=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 Qk({range:e}){let r=Au(e?["useStakedAPR",e]:null,async([,o])=>{let s=await cr({range:o});return We(s.sort((i,n)=>i.timestamp-n.timestamp)).map(i=>({_timestamp:i.timestamp,apr:i.apr}))});return{...r,refresh:()=>r.mutate()}}import{useMemo as Me}from"react";import St from"swr";import{useBeraWallet as bu,usePublicClient as hu}from"@berachain/wagmi/hooks";var tP=e=>{let t=V("swberaAprWindow"),r=hu(),{address:o}=bu(),s=Me(()=>e.map(b=>b.receiptToken),[e]),a=Me(()=>e.map(b=>b.inputTokens[0]),[e]),i=t?["useStakedData:apr",t]:null,{data:n}=St(i,async([,b])=>dr({window:b}),{refreshInterval:1e5}),{data:l,isLoading:u}=Oe({tokens:s}),{getTokenPrice:m}=$({tokens:a}),p=r&&s.length>0?["useStakedData:exchangeRates",s]:null,{data:c}=St(p,async([,b])=>(g(r),Promise.all(b.map(P=>ue({address:P.address,publicClient:r})))),{refreshInterval:1e5}),d=Me(()=>{if(!(!l||!c))return e.map((b,P)=>{let k=b.inputTokens[0],T=l.find(ae=>ae.address===b.receiptToken.address)?.balance.raw??"0",S=c[P]??0,x=m(k)??0,Q=new E(T).multipliedBy(S).dividedBy(10**k.decimals),O=Q.multipliedBy(x);return{token:k,apr:n??0,stakedAmount:Q.toNumber(),stakedAmountUsd:O.toNumber(),earnedAmount:0,earnedAmountUsd:0,isLoadingEarnings:!0}})},[l,c,e,n,m]),f=o&&r&&e.length>0?["useStakedData:positions",o,e]:null,{data:y,isLoading:A,isValidating:R}=St(f,async([,b,P])=>(g(r),Promise.all(P.map(async k=>{let T=k.receiptToken,[S,x]=await Promise.all([nr({address:T.address,account:b}),ue({address:T.address,publicClient:r})]);return{earnings:S,exchangeRate:x}}))),{refreshInterval:1e4}),w=Me(()=>{if(!(!y||!l))return e.map((b,P)=>{let k=b.inputTokens[0],T=b.receiptToken,{earnings:S,exchangeRate:x}=y[P],N=m(k)??0,Q=l.find(cs=>cs.address===T.address)?.balance.raw??"0",O=x??0,ae=new E(S.earningsTotal).minus(S.earningsRealized),ne=new E(Q).multipliedBy(O).minus(ae).dividedBy(10**k.decimals),me=ae.dividedBy(10**k.decimals),M=ne.multipliedBy(N),ie=me.multipliedBy(N);return{token:k,apr:n??0,stakedAmount:ne.toNumber(),earnedAmount:me.toNumber(),stakedAmountUsd:M.toNumber(),earnedAmountUsd:ie.toNumber()}})},[y,l,e,n,m]);return{balances:d,data:w,isLoading:u&&A,isLoadingBalances:u,isLoadingPositions:A,isValidatingPositions:R}};import Ru from"swr";async function Xo({address:e,range:t}){let r=new Date,o=new Date(r.getTime()-Number(t)*24*60*60*1e3),{config:s}=C({}),a=`${s.bonder}/vaults/${e}/total-assets-by-day?start=${o.toISOString().split("T")[0]}`;return ge({url:a,type:"rest"})}function uP({range:e,addresses:t}){let o=Ru(e?["useStakedSnapshots",e,t]:null,async([,s,a])=>{let[...i]=await Promise.all([...a.map(async n=>{let l=await Xo({address:n,range:s}),u=We(l.sort((m,p)=>m._timestamp-p._timestamp));return{[n]:u}})]);return i.reduce((n,l)=>({...n,...l}),{})});return{...o,refresh:()=>o.mutate()}}import wu from"swr";import{usePublicClient as ku}from"@berachain/wagmi/hooks";var yP=e=>{let t=ku(),r=X();return wu(e&&t&&r?["useStakingVaultMetadata",e,t,r]:null,async([,s,a,i])=>(g(a),fr({address:s,publicClient:a,blockTime:i})),{refreshInterval:1e4})};import Pu from"swr";import{usePublicClient as Cu}from"@berachain/wagmi/hooks";function wP({vaultAddresses:e}){let t=Cu(),r=Pu(e&&t?["useTotalStakedAmount",e]:null,([,o])=>yr({vaultAddresses:o,publicClient:t}));return{...r,refresh:()=>r.mutate()}}import Tu from"swr";import{useBeraWallet as Iu,usePublicClient as Su}from"@berachain/wagmi/hooks";var Eu=(e,t)=>{let{address:r}=Iu(),o=Su(),s=r&&o&&e.vaultAddress?["useUserVaultInfo",r,e.vaultAddress]:null,a=Tu(s,async([,i,n])=>(g(o),hr({account:i,vaultAddress:n,publicClient:o})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...a,refresh:()=>a.mutate()}};import xu from"swr";import{useBeraWallet as vu,usePublicClient as Bu}from"@berachain/wagmi/hooks";var Du=e=>{let{address:t}=vu(),r=Bu(),s=xu(t&&r?["useUserVaults",t]:null,async([,a])=>(g(r),await Rr({account:a,publicClient:r})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Ou from"swr";import{usePublicClient as Lu}from"@berachain/wagmi/hooks";var HP=e=>{let t=Lu();return Ou(e&&t?["useVaultAddress",e]:null,async([,o])=>{g(t);let[s]=await Promise.all([Pe({address:o,publicClient:t})]);return{stakeToken:s,address:o}})};import Uu from"swr";var _P=({vault:e,range:t,resolution:r})=>{let s=Uu(e?["useVaultHistory",e,t,r]:null,([,a,i,n])=>wr({vault:a,range:i,resolution:n}));return{...s,refresh:()=>s.mutate()}};import Nu from"swr";var Hu=(e,t)=>{let o=Nu(e?["useVaultValidators",e]:null,async([,s])=>await kr({address:s}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{zeroAddress as Vu}from"viem";function es({address:e},t){let r=re({addressIn:e?[e]:void 0},t);return{...r,data:e?r.data?.[e.toLowerCase()]:void 0}}function ZP(e){return es({address:Vu},e)}import Wu from"swr/immutable";import{isAddress as Mu,zeroAddress as _u}from"viem";import{usePublicClient as Qu}from"@berachain/wagmi/hooks";var oC=(e,t)=>{let r=Qu(),o=e?.address&&r&&Mu(e.address)?["useStakingTokenInformation",e.address]:null,s=Wu(o,async([a,i])=>h(i,"BERA")?{address:_u,decimals:U.decimals,name:U.name,symbol:U.symbol}:await Ve({address:i,publicClient:r}),{...t?.opts});return{...s,refresh:()=>s?.mutate?.()}};function nC({token:e},t){let{isLoading:r,priceMap:o}=$({tokens:e?[e]:void 0},t);return{data:e?o[e.chainId]?.[e.address.toLowerCase()]:void 0,isLoading:r}}import Yu from"swr";import{erc20Abi as Gu}from"viem";import{usePublicClient as Fu}from"@berachain/wagmi/hooks";function dC({address:e}){let t=Fu();return Yu(e&&t?["useTotalSupply",e]:null,([,r])=>(g(t),t.readContract({address:r,abi:Gu,functionName:"totalSupply",args:[]})))}import Ku from"swr/immutable";import{useBlockNumber as qu,usePublicClient as $u}from"@berachain/wagmi/hooks";function wC(e){let t=$u(),{config:r}=C({chainId:t?.chain.id}),{data:o,isLoading:s}=qu({cacheTime:Re(r.averageBlockTime)}),{data:a}=Ku(o&&t&&Number(e)>0?["useBlockToTimestamp",e,o]:null,async([,n,l])=>(g(t),or({block:n,currentBlock:l,blockTime:i,publicClient:t}))),i=X();if(a)return Number(a.timestamp);if(!(s||!o))return Math.floor(rr(Date.now())+i*(Number(e)-Number(o)))}import{useCallback as rs,useReducer as zu}from"react";import{useBeraWagmi as Zu,useConfig as ju}from"@berachain/wagmi/hooks";var Et={confirmState:"idle",txnHash:"",message:""},ts=(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{...Et};default:return e}};function Ju({onlyPermissionless:e,onSuccess:t,onError:r,onLoading:o,onWarning:s,onSubmission:a}={}){let[i,n]=zu(ts,Et),{account:l,onSmartAccountRejection:u}=Zu(),m=ju(),p=l?.wallet?.isContract?6e4*10:12e4,c=rs(()=>{n({type:"confirm_reset"})},[]),d=V("enableSimulateCalls"),f=rs(y=>{if(e&&!y.permissionless){let A=new Tr({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 Ir({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 Xu=Ju;import ep from"swr/immutable";import{isAddress as tp,zeroAddress as rp}from"viem";import{chainId as op}from"@berachain/config/internal";async function sp(e){let t=await ge({url:`https://api.routescan.io/v2/network/testnet/evm/${op}/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 WC=e=>ep(e&&tp(e)&&e!==rp?["useGetVerifiedAbi",e]:null,()=>e?sp(e):Promise.resolve(""),{});import{useCallback as os,useEffect as ap,useState as np}from"react";function QC({key:e,defaultValue:t}){let r=os(()=>{if(typeof window>"u")return t;let i=window.history.state?.[e];return i!==void 0?i:t},[e,t]),[o,s]=np(r()),a=os(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 ap(()=>{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 ip,useRef as lp}from"react";function FC(e){let t=lp(void 0);return ip(()=>{t.current=e}),t.current}import up from"swr";var pp=({variables:e}={})=>["useAllValidators",e],ZC=(e,t)=>{let{config:r}=C(e),o=up(pp({variables:e}),async([,s])=>await Sr({variables:{chain:r.bex.chainName,...s}}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>o.mutate()}};import mp from"swr";function eT({allocation:e}){return mp(e?["useApiEnrichedAllocation",e]:null,([,t])=>Er({allocation:t}))}import dp from"swr";import{isHex as cp}from"viem";var fp=e=>e?["useApiValidator",e]:null,ss=(e,t)=>{let r=fp(e),o=t?.opts?.isEnabled??!0,s=dp(o&&e?r:null,async([,a])=>{if(!a||!cp(a))throw new Error(`Invalid validator ID: ${a}`);return xr({id:a})},{...t?.opts});return{...s,refresh:()=>s.mutate()}};import gp from"swr";import{usePublicClient as yp}from"@berachain/wagmi/hooks";var as=[{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 ns({publicClient:e,...t}){let{config:r}=C(t),o=await e.readContract({abi:as,address:r.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),s=o.startBlock!==0n?await e.getBlock({blockNumber:o.startBlock}):{timestamp:0};return Br(o,Number(s.timestamp))}function gT(){let e=yp();return gp(e?["baselineRewardAllocation"]:null,()=>(g(e),ns({publicClient:e})))}import Ap from"swr";var bp=({pubKey:e,first:t=1})=>{let o=Ap(e?["useDailyValidatorBlockStats",e,t]:null,async([,s,a])=>await vr({pubKey:s,first:a}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}};import hp from"swr";import{usePublicClient as Rp}from"@berachain/wagmi/hooks";function wp(e){let t=Rp(),o=hp(t?["useDefaultRewardAllocation"]:null,async()=>(g(t),await Or({client:t})),{...e?.opts});return{...o,refresh:()=>o.mutate()}}import kp from"swr/immutable";var Pp=({account:e},t)=>{let o=kp(e?["useManagedValidatorByAccount",e]:null,async([,s])=>await Lr({account:s}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{useMemo as ls}from"react";import Tp from"swr";import{useBeraWallet as Ip,usePublicClient as Sp}from"@berachain/wagmi/hooks";import{zeroAddress as Cp}from"viem";async function is({client:e,pubKey:t,...r}){let{config:o}=C(r);try{let s=await e.readContract({address:o.pol.beraChef,abi:K,functionName:"valRewardAllocator",args:[t]});return s===Cp?null:s}catch(s){throw console.log("getValidatorRewardAllocatorAddress:",s),s}}function us(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function Ep(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():us(e,t)}function xp({pubKey:e,account:t},r){let o=Sp(),s=V("mockValidatorOperator"),a=V("mockValidatorRewardAllocator"),i=o&&e?["useManagedValidatorRole",e]:null,{address:n}=Ip(),l=t??n,u=Tp(i,async([,c])=>{g(o);let[d,f]=await Promise.all([Qr({client:o,pubKey:c}),is({client:o,pubKey:c})]);return{operator:d??null,rewardAllocator:f}},{...r?.opts}),m=ls(()=>s||us(l,u.data),[l,s,u.data]),p=ls(()=>a||Ep(l,u.data),[l,a,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import vp from"swr";import{keccak256 as Bp}from"viem";import{usePublicClient as Dp}from"@berachain/wagmi/hooks";var ps=({pubkey:e},t)=>{let r=Dp(),o=e?["useOnChainValidator",e]:null,s=t.opts?.isEnabled??!0,a=vp(s&&r?o:null,async([,i])=>{g(r);let{config:n}=C({chainId:r.chain.id}),[l,u,m]=await Promise.all([r.readContract({address:n.depositContract,abi:xt,functionName:"getOperator",args:[i]}),r?.readContract({address:n.tokens.bgt,abi:G,functionName:"boostees",args:[i]}),r.readContract({address:n.pol.beraChef,abi:K,functionName:"getActiveRewardAllocation",args:[i]})]);return{id:Bp(i),pubkey:i,operator:l,votingPower:Number(u)}});return{...a,refresh:()=>{a.mutate()}}};import Op from"swr";import{usePublicClient as Lp}from"@berachain/wagmi/hooks";var XT=({valPubKey:e,options:t})=>{let r=Lp(),s=(t?.opts?.isEnabled??!0)&&r&&e?["useStakingPoolBatch",e]:null,a=Op(s,async([,i])=>(g(r),await Ur({client:r,valPubKey:i})),{refreshInterval:1e4,...t?.opts});return{...a,refresh:()=>a.mutate()}};import Up from"swr";import{GetUserValidatorInformation as Np}from"@berachain/graphql/pol/subgraph";import{useBeraWallet as Hp}from"@berachain/wagmi/hooks";var Vp=({account:e}={})=>{let{address:t}=Hp(),r=e??t;return Up(r?["useSubgraphUserValidators",r]:null,async([,s])=>{let a=j("pol.subgraph",{}),{data:i}=await a.query({query:Np,variables:{address:s}});return i.userValidatorInformations})};import Wp from"swr";import{useBeraWallet as Mp,usePublicClient as _p}from"@berachain/wagmi/hooks";var Qp=e=>{let{address:t}=Mp(),r=_p(),s=Wp(r&&t?["useUserActiveValidators",t]:null,async([,a])=>await Hr({account:a,publicClient:r}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...s,refresh:()=>s?.mutate?.()}};import Yp from"swr";import{useBeraWallet as Gp,usePublicClient as Fp}from"@berachain/wagmi/hooks";var Kp=({pubkey:e,...t})=>{let{address:r}=Gp(),o=Fp(),s=t.account??r,i=Yp(s&&e?["useUserBoostsOnValidator",e,s]:null,async([,n,l])=>await Nr({account:l,pubkey:n,publicClient:o}),{refreshInterval:1e5});return{...i,refresh:()=>i.mutate()}};import{useCallback as qp,useMemo as $p}from"react";import ds from"swr";import{useBeraWallet as zp}from"@berachain/wagmi/hooks";var ms=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}=zp(),r=ds(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new v({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await Ar({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),o=r?.data,s=$p(()=>{if(o){if(!Array.isArray(o)){we.captureException(new v({message:"Incorrect aggregated incentives data receieved.",level:"error",extra:{allRewards:o,account:e}}));return}return ms(o)}},[o,e]),i=ds(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 pr({account:l,validator:c,page:1,perPage:1e4}),validator:c})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),n=qp(()=>{r?.mutate(),i?.mutate()},[r,i]);return{...i,isLoading:r?.isLoading||i?.isLoading,tokenMap:s,refresh:n}};import jp from"swr/immutable";var SI=({account:e,validatorAddress:t})=>{let o=jp(e?["useUserStakingPositions",e,t]:null,async([s,a,i])=>{let n=await Vr(a);return i?n.filter(l=>l.validatorAddress.toLowerCase()===i.toLowerCase()):n});return{...o,refresh:()=>{o.mutate()}}};import{keccak256 as Jp}from"viem";function DI({pubkey:e},t){let{data:{validator:r,uptime:o}={},isLoading:s,error:a}=ss(Jp(e),t),{data:i,isLoading:n,error:l}=ps({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 Xp from"swr";function em({pubkey:e,dayRange:t}){let o=Xp(e&&t?["useValidatorAnalytics",e,t]:null,async([,s,a])=>await Wr({pubkey:s,dayRange:a}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}}import tm from"swr";import{usePublicClient as rm}from"@berachain/wagmi/hooks";var om=(e,t)=>{let r=rm(),s=tm(r&&e?["useValidatorCommission",e]:null,async([,a])=>await Mr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};var sm=e=>{let{data:t,isLoading:r}=jo(),o=X();return{data:t?_r(e,Number(t?.totalStakedBeraAmount),o):void 0,isLoading:r}};import am from"swr";import{usePublicClient as nm}from"@berachain/wagmi/hooks";function im(e,t){let r=nm(),s=am(r&&e?["useValidatorQueuedCommission",e]:null,async([,a])=>(g(r),await Yr({client:r,pubKey:a})),{...t?.opts});return{...s,refresh:()=>s.mutate()}}import lm from"swr";import{usePublicClient as um}from"@berachain/wagmi/hooks";var pm=(e,t)=>{let r=um(),s=lm(r&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,a])=>await Gr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import mm from"swr";import{usePublicClient as dm}from"@berachain/wagmi/hooks";var cm=(e,t)=>{let r=dm(),s=mm(r&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,a])=>await Fr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}};import fm from"swr";import{usePublicClient as gm}from"@berachain/wagmi/hooks";function ym(e,t){let r=gm(),s=fm(r&&e?["useValidatorRewardAllocation",e]:null,async([,a])=>await Dr({client:r,pubKey:a}),{...t?.opts});return{...s,refresh:()=>s.mutate()}}export{ga as OracleMode,mo as USE_AGGREGATORS_QUOTES_QUERY_KEY,Zo as reducer,Kc as useAggregatorsQuotes,Ie as useAggregatorsRouterFeeBps,co as useAllUserPools,aa as useAllUserPoolsQueryKey,ZC as useAllValidators,pp as useAllValidatorsQueryKey,eT as useApiEnrichedAllocation,fo as useApiPool,la as useApiPoolQueryKey,ss as useApiValidator,fp as useApiValidatorQueryKey,gT as useBaselineRewardAllocation,aA as useBendZapSupply,Mn as useBendZapSupplyHelper,Xu as useBeraContractWrite,ZP as useBeraCurrentPrice,qe as useBexStatus,cw as useBgtAprSimulation,Ul as useBgtUnstakedBalance,wC as useBlockToTimestamp,Qo as useCappedGlobally,Yo as useCappedRelatively,Ml as useClaimableFees,eR as useCollateralWeights,bf as useCreatePool,fi as useCreateProposal,bp as useDailyValidatorBlockStats,wp as useDefaultRewardAllocation,EA as useEnsoSwapBundle,xf as useExploitedTokens,Ca as useExploitedTokensQueryKey,$r as useGetConvertToAssets,ub as useGetPastVotes,WC as useGetVerifiedAbi,Ia as useGlobalLiquidityAndSwapVolume,Ab as useHasVoted,Uw as useHighestVaultsAPR,QC as useHistoryState,DR as useHoneyAlerts,Go as useHoneyBalances,NR as useHoneyChartData,_R as useHoneyGlobalData,rw as useHoneySwapState,Fo as useHoneyVaultsBalance,Ko as useIsBadCollateralAsset,$o as useIsBasketModeEnabled,Ib as useIsCanceller,Hf as useLiquidityMismatch,hg as useLpPosition,Pp as useManagedValidatorByAccount,xp as useManagedValidatorRole,sn as useMultipleTokenApprovalsWithSlippage,So as useMultipleTokenInformation,Eo as useOnChainPoolData,hn as useOnChainPoolDataQueryKey,ps as useOnChainValidator,Db as usePollAllProposals,Di as usePollAllProposalsQueryKey,To as usePollAllowances,xe as usePollBalance,jo as usePollGlobalData,Gw as usePollMarkets,zl as usePollMarketsQueryKey,Pn as usePollPoolCreationRelayerApproval,Mb as usePollProposal,qb as usePollProposalThreshold,jb as usePollProposalVotes,Mi as usePollProposalVotesQueryKey,ah as usePollUserDelegates,Oe as usePollWalletBalances,yy as usePool,Ry as usePoolEvents,Ty as usePoolHistoricalData,Dy as usePools,Bn as usePoolsQueryKey,FC as usePrevious,Be as usePriceImpact,ph as useProposalFromTx,Ho as useProposalSnapshot,yh as useProposalState,kh as useProposalTimelockState,se as usePythLatestPrices,uw as usePythUpdateFee,jw as useQueuedBeraUnlock,Dh as useQuorum,nk as useRewardTokenToBeraRate,Tk as useRewardVault,wo as useRewardVaultBalanceFromStakingToken,ht as useRewardVaultFromToken,Bk as useRewardVaultIncentives,mu as useRewardVaultQueryKey,yu as useRewardVaultRewards,It as useRewardVaults,Yl as useRewardVaultsQueryKey,yP as useSWBeraVaultMetadata,js as useSingleAggregatorQuote,Qk as useStakedAPR,tP as useStakedData,uP as useStakedSnapshots,XT as useStakingPoolBatch,oC as useStakingTokenInformation,In as useSubgraphPoolQueryKey,Vp as useSubgraphUserValidators,es as useTokenCurrentPrice,re as useTokenCurrentPrices,ko as useTokenInformation,nC as useTokenPrice,$ as useTokenPrices,ee as useTokens,wP as useTotalStakedAmount,dC as useTotalSupply,Qp as useUserActiveValidators,Kp as useUserBoostsOnValidator,Zp as useUserClaimableIncentives,SI as useUserStakingPositions,Eu as useUserVaultInfo,Du as useUserVaults,DI as useValidator,em as useValidatorAnalytics,om as useValidatorCommission,sm as useValidatorEstimatedBgtPerYear,im as useValidatorQueuedCommission,pm as useValidatorQueuedOperatorAddress,cm as useValidatorQueuedRewardAllocation,ym as useValidatorRewardAllocation,HP as useVaultAddress,_P as useVaultHistory,Hu as useVaultValidators,NA as useZapStakeBera};
4
4
  //# sourceMappingURL=exports.mjs.map