@berachain/berajs 0.1.0-alpha.5 → 0.1.0-alpha.6
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.
- package/dist/actions/index.cjs +1 -1
- package/dist/actions/index.mjs +1 -1
- package/dist/chunk-BI76GRHX.mjs +3 -0
- package/dist/chunk-FVT7BKWY.cjs +3 -0
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-D375ZI2L.cjs +0 -3
- package/dist/chunk-FAF7V4O6.mjs +0 -3
package/dist/hooks/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{f as L,h as Ge,i as le,n as Fe}from"../chunk-4IBBLGNS.mjs";import{c as q,e as Ke,g as _p,h as Qp,i as Yp,j as Mp,k as Gp,l as Fp,m as pe,n as me,s as B,t as Pt}from"../chunk-5N57PBAR.mjs";import{$ as er,A as _t,B as Qt,Ba as Ar,C as X,Ca as br,Da as hr,E as Yt,Ea as Rr,F as Mt,Fa as kr,H as Gt,Ha as wr,Ja as Pr,K as Ft,Ka as Tr,La as Ir,Ma as Cr,N as Ae,Na as Er,O as Kt,Oa as Sr,P as ze,Pa as xr,Q as qt,Qa as vr,R as $t,Ra as Br,S as be,Sa as Or,T as Zt,Ta as Dr,Ua as Lr,V as zt,Va as Nr,W as jt,Y as Jt,Z as Xt,a as ce,aa as tr,ba as rr,c as $,ca as or,e as S,f as It,fa as he,g as fe,ga as Re,h as Ct,i as Et,ia as nr,k as St,l as xt,la as sr,m as vt,ma as ar,na as lr,o as Bt,oa as ur,pa as pr,q as N,qa as mr,ra as dr,sa as cr,t as Ot,u as Dt,ua as fr,w as Ht,wa as gr,xa as ke,y as Vt,z as Wt,za as yr}from"../chunk-FAF7V4O6.mjs";import{b as oe,c as _,k as kt,l as K,m as G,n as ue,o as wt}from"../chunk-AHAZC5K3.mjs";import"../chunk-MTBICGRP.mjs";import{a as qe,b as ne,c as y,d as j,e as Ze,g as ir}from"../chunk-YKNKCICU.mjs";import"../chunk-K4NZIO2Z.mjs";import{B as Ut,C as ge,Q as ye,c as Tt,i as $e,j as Lt,z as Nt}from"../chunk-7SDDMT3W.mjs";import{b as P,c as H,e as de,f as k}from"../chunk-HOCEXCQJ.mjs";import{a as J}from"../chunk-5UFI7X4U.mjs";import{f as x,g as E}from"../chunk-5GPS724E.mjs";import pn from"swr";import{usePublicClient as mn}from"@berachain/wagmi/hooks";var zp=({sharesAmount:e,vaultAddress:t,vaultChainId:r},o)=>{let n=mn({chainId:r}),s=pn(n&&e&&t?["useGetConvertToAssets",e,t,r]:null,async([a,i,l])=>(y(n),ce({sharesAmount:i,vaultAddress:l,publicClient:n})),{...o?.opts});return{...s,refresh:()=>{s.mutate()}}};import{useMemo as $r}from"react";import Q from"swr";import{parseUnits as vn,zeroAddress as Bn}from"viem";import{defaultChainId as pt}from"@berachain/config/internal";import{useBeraWallet as On,usePublicClient as Dn}from"@berachain/wagmi/hooks";import{Slippage as dn,Swap as cn,SwapKind as fn,Token as Ur,TokenAmount as gn}from"@berachain-foundation/berancer-sdk";import{captureException as yn}from"@sentry/nextjs";import{decodeFunctionData as An,formatEther as Hr,zeroAddress as Vr}from"viem";import{getUriFromLink as bn}from"@berachain/config";import{ChainId as Wr}from"@berachain/config/internal";var hn=300,Rn=.05,je=fn.GivenIn,Je=class extends S{name="Hub Pools";supportedChains=[Wr.MAINNET,Wr.BEPOLIA];url=bn(this.config.api);type="graphql";convertZeroToWrapped(t){return k(t,"BERA")?this.config.tokens.wbera:t}calculatePriceImpact(t){return t.error?(console.error("Swap price impact error",t),0):Number(t.priceImpact)}checkStalePrices(t,r,o,n){let s=Number.parseFloat(Hr(t.scale18))/Number.parseFloat(o);if(Math.abs(1-s)>Rn){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:s});let a=new x({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%"});yn(a,{level:"warning",extra:{deltaFromSorAmount:s,pools:r.map(i=>i.pools),onChainAmount:Hr(t.scale18),sorAmount:o,queryData:n},fingerprint:["SOR_STALE_PRICES"]})}}async getQuote(t){let r=new It(this.url,this.chainId),{tokenIn:o,tokenOut:n,tokenInDecimals:s,tokenOutDecimals:a,amount:i,slippage:l,account:u=Vr,publicClient:m}=t;if(this.checkChainSupport(),y(m),!s)throw new E({property:"tokenInDecimals",value:s,expected:"number",chainId:this.chainId});if(!a)throw new E({property:"tokenOutDecimals",value:a,expected:"number",chainId:this.chainId});let p=k(o,"BERA")||k(n,"BERA"),d=new Ur(this.chainId,this.convertZeroToWrapped(o),s),c=new Ur(this.chainId,this.convertZeroToWrapped(n),a),f=gn.fromRawAmount(d,i),{paths:g,priceImpact:A,returnAmount:R}=await r.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:d.address,tokenOut:c.address,swapKind:je,swapAmount:f});if(!g?.length)throw new J({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:S.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:d.address,tokenOut:c.address,swapKind:je,swapAmount:f},message:"No swap paths returned from Balancer API"});let h=new cn({chainId:this.chainId,paths:g,swapKind:je,userData:"0x"}),b=await h.query(m.transport.url);if(!("expectedAmountOut"in b))throw new Error("No Bex paths found");this.checkStalePrices(b.expectedAmountOut,g,R,t);let T={amountOut:b.expectedAmountOut.amount.toString(),amountIn:i,spender:b.to,name:this.name,priceImpactPercentage:this.calculatePriceImpact(A),swapFeeBps:0};if(u===Vr)return T;let w=h.buildCall({slippage:dn.fromPercentage(l.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+hn),queryOutput:b,sender:u,recipient:u,wethIsEth:p}),{args:I,functionName:C}=An({abi:oe,data:w.callData});return{...T,calldata:{params:I,functionName:C,abi:oe,address:w.to,value:w.value||BigInt(0)}}}},we=new Je;import{ChainId as _r}from"@berachain/config/internal";var Xe=class extends S{name="RedeemBgt";supportedChains=[_r.MAINNET,_r.BEPOLIA];type="rpc";async getQuote({tokenIn:t,amount:r}){if(this.checkChainSupport(),!k(t,"BGT",{config:this.config}))throw new E({property:"tokenIn",value:t,expected:"BGT",level:"warning"});return{amountOut:r,amountIn:r,spender:void 0,name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},Pe=new Xe;import{zeroAddress as Qr}from"viem";import{ChainId as Yr}from"@berachain/config/internal";var et=class extends S{name="Enso";supportedChains=[Yr.MAINNET];type="rest";notFoundMessages=["Could not build shortcuts for route","Swap not found for a required underlying of defi route,"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:n,account:s=Qr,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:l}){this.checkChainSupport();let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:d}=this.parseAddresses(t,r),c=this.getAmountAfterFees(o,a);this.url=i?"/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",c),f.searchParams.set("tokenIn",u),f.searchParams.set("tokenOut",m),f.searchParams.set("chainId",Yr.MAINNET.toString()),f.searchParams.set("slippage",(Number(n)*100).toString()),f.searchParams.set("refundReceiver",s);let A=await(await this.fetch(f)).json(),R=this.getInputData({tokenIn:u,amountIn:o,isNative:p}),h={tokenOut:m,receiver:s,minAmountOut:this.getMinAmountOut(A.amountOut.toString(),n),isNative:d},b={aggregator:A.tx?.to,data:A.tx?.data};return{amountOut:A.amountOut.toString(),amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:a,calldata:{params:[R,h,b,{rewardVault:l??Qr,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter}}}},Te=new et;import{zeroAddress as Ie}from"viem";import{ChainId as kn}from"@berachain/config/internal";var Mr="https://api.magpiefi.xyz/aggregator",tt=class extends S{name="Fly";supportedChains=[kn.MAINNET];type="rest";notFoundMessages=["Couldn't recognize to token","There is not enough liquidity. Amount is too high.","Routes were not found"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:n,account:s=Ie,aggregatorsFeeBps:a,rewardVault:i}){this.checkChainSupport();let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t,r),d=this.getAmountAfterFees(o,a),c=new URL(`${Mr}/quote`);this.url=c.toString();let f=new URLSearchParams({fromTokenAddress:l,toTokenAddress:u,sellAmount:d,slippage:(n/100).toString(),gasless:"false",network:"berachain"});s!==Ie&&(f.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),f.set("toAddress",this.config.bex.aggregatorsRouterExecutor)),c.search=f.toString();let A=await(await this.fetch(c)).json(),R={amountOut:A.amountOut,amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:a??0};if(s===Ie)return R;let h=new URL(`${Mr}/transaction`);this.url=h.toString();let b=new URLSearchParams({quoteId:A.id,estimateGas:"false"});h.search=b.toString();let w=await(await this.fetch(h)).json(),I=this.getInputData({tokenIn:l,amountIn:o,isNative:m}),C={tokenOut:u,receiver:s,minAmountOut:this.getMinAmountOut(A.amountOut,n),isNative:p},v={aggregator:w.to,data:w.data};return{...R,calldata:{params:[I,C,v,{rewardVault:i??Ie,isSwapAndStake:!!i}],functionName:"swap",abi:L,value:k(t,"BERA")?BigInt(o):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}},Ce=new tt;import{formatUnits as wn,parseUnits as Pn,zeroAddress as rt}from"viem";import{ChainId as Tn}from"@berachain/config/internal";var ot=class extends S{name="Haiku";supportedChains=[Tn.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:n,account:s=rt,tokenInDecimals:a,tokenOutDecimals:i,aggregatorsFeeBps:l,proxyAggregatorsThroughVercel:u=!1,referrer:m,rewardVault:p}){if(a===void 0||i===void 0)throw new x({message:"Missing required params",level:"error"});this.checkChainSupport();let{tokenInAddress:d,tokenOutAddress:c,isTokenInNative:f,isTokenOutNative:g}=this.parseAddresses(t,r),A=this.getAmountAfterFees(o,l),R={intent:{allowancesMode:"approve",slippage:n/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${d}`]:wn(BigInt(A),a)},target_weights:{[`bera:${c}`]:1}}},h=m==="ZAP"?"zap-haiku":"haiku";this.url=u?"/api/aggregators?aggregator=haikuQuote":`${this.config.bex.aggregatorsProxyUrl}/${h}/v1/quoteIntent`;let T=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(R)})).json(),w={amountOut:Pn(T.balances[0].amount,i).toString(),amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:l};if(s===rt)return w;this.url=u?"/api/aggregators?aggregator=haikuSolve":`${this.config.bex.aggregatorsProxyUrl}/${h}/v1/solveIntent`;let C=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({quoteId:T.quoteId})})).json(),v=this.getInputData({tokenIn:d,amountIn:o,isNative:f,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),M={tokenOut:c,receiver:s,minAmountOut:this.getMinAmountOut(w.amountOut,n),isNative:g},W={aggregator:C.to,data:C.data};return{...w,calldata:{params:[v,M,W,{rewardVault:p??rt,isSwapAndStake:!!p}],functionName:"swap",abi:L,value:BigInt(f?o:"0"),address:this.config.bex.aggregatorsRouter}}}},Ee=new ot;import{BigNumber as In}from"bignumber.js";import{formatUnits as Gr}from"viem";import{ChainId as Cn}from"@berachain/config/internal";function En(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var se=class e extends S{name="Honey";supportedChains=[Cn.MAINNET];type="rpc";honeyToken=de(this);static isHoneyNativeSwap({tokenIn:t,tokenOut:r,honeyNativeState:o,...n}){if(!o?.collateralList)return!1;let s=k(r,"HONEY",n),a=k(t,"HONEY",n);return!s&&!a?!1:o.collateralList.some(i=>k(i.address,s?t:r))}async getQuote({tokenIn:t,tokenOut:r,amount:o,publicClient:n,account:s,honeyNativeState:a}){let{collateralList:i}=a??{};if(!i)throw new E({message:"Invalid Honey Context state",property:"collaterals",value:i,expected:"TokenWithOrder[]"});y(n),this.checkChainSupport();let l=k(r,this.honeyToken);if(!e.isHoneyNativeSwap({tokenIn:t,tokenOut:r,honeyNativeState:a}))throw new x({message:"Honey Aggregator only supports minting or redeeming Honey"});let u=i,m=i.find(I=>k(I.address,l?t:r));if(!m)throw new x({message:"This collateral is not part of the Honey protocol"});let[p,d]=await Promise.all([Ae({client:n,collateralList:[m]}),be({client:n,isMint:l,collateralList:i,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new x({message:"Failed to fetch the Honey vault balances"});if(d)return;let c=p[0],f=m.order;u.length>1&&f!==0&&(u.splice(f,1),u.unshift(m));let g=Gr(BigInt(o),l?m.decimals:this.honeyToken.decimals),A={client:n,collateral:m,collateralList:i,amount:g,method:En(l),latestPrices:void 0,isPythWrapperEnabled:!1},R=await Ft(A);if(!R)throw new x({message:"Failed to fetch the Honey preview"});let{honey:h,collaterals:b}=R;if(!(l?!0:new In(c?.formattedBalance??"0").gte(Gr(b[m.address],m.decimals))))return;let w=s?await $t({state:{actionType:l?"mint":"redeem",fromAmount:[g],collaterals:u,isBasketModeEnabled:!1},account:s,collateralList:u,publicClient:n,priceFeedMap:void 0,isPythWrapperEnabled:!1}):void 0;if(!w&&s)throw new x({message:"Failed to fetch the Honey swap payload"});return{amountIn:o,amountOut:l?h.toString():b[m.address].toString(),spender:this.config.honey.factory,name:"Honey",swapFeeBps:0,calldata:w}}},Se=new se;import{zeroAddress as nt}from"viem";import{ChainId as Sn}from"@berachain/config/internal";var st=class extends S{name="KyberSwap";supportedChains=[Sn.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:n,account:s=nt,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:l}){this.checkChainSupport();let{isTokenInNative:u,isTokenOutNative:m,tokenInAddress:p,tokenOutAddress:d}=this.parseAddresses(t,r),c=this.getAmountAfterFees(o,a);this.url=i?"/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",d),f.searchParams.set("amountIn",c),f.searchParams.set("slippageTolerance",(n/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,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:a};if(s===nt)return R;let h={routeSummary:A.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:n*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},b=f.searchParams.entries(),T=new URL(i?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[W,O]of b)T.searchParams.set(W,O);let I=await(await this.fetch(T,{method:"POST",body:JSON.stringify(h)})).json(),C=this.getInputData({tokenIn:p,amountIn:o,isNative:u}),v={tokenOut:d,receiver:s,minAmountOut:this.getMinAmountOut(R.amountOut,n),isNative:m},M={aggregator:I.data.routerAddress,data:I.data.data};return{...R,calldata:{params:[C,v,M,{rewardVault:l??nt,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(u?o:"0"),address:this.config.bex.aggregatorsRouter}}}},xe=new st;import{zeroAddress as at}from"viem";import{ChainId as xn}from"@berachain/config/internal";var it=class extends S{name="Oogabooga";supportedChains=[xn.MAINNET];type="rest";async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:n,account:s=at,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:l}){this.checkChainSupport();let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:d}=this.parseAddresses(t,r),c=this.getAmountAfterFees(o,a),f=new URLSearchParams({tokenIn:u,tokenOut:m,amount:c,slippage:(n/100).toString(),to:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter});this.url=i?`/api/aggregators?aggregator=oogabooga&${f.toString()}`:`${this.config.bex.aggregatorsProxyUrl}/oogabooga/v1/swap?${f.toString()}`;let A=await(await this.fetch(this.url)).json(),R={amountOut:A.assumedAmountOut,amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,priceImpactPercentage:A.priceImpact,swapFeeBps:a};if(s===at)return R;let h=this.getInputData({tokenIn:u,amountIn:o,isNative:p}),b={tokenOut:m,receiver:s,minAmountOut:this.getMinAmountOut(R.amountOut,n),isNative:d},T={aggregator:A.tx?.to,data:A.tx?.data};return{...R,calldata:{params:[h,b,T,{rewardVault:l??at,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter}}}},ve=new it;import{zeroAddress as Fr}from"viem";import{ChainId as Kr}from"@berachain/config/internal";var lt=class extends S{name="OpenOcean";supportedChains=[Kr.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:n,account:s=Fr,aggregatorsFeeBps:a,tokenInDecimals:i,publicClient:l,rewardVault:u}){if(y(l),!i)throw new E({property:"tokenInDecimals",value:i,expected:"number",chainId:this.chainId});this.checkChainSupport();let m=this.getAmountAfterFees(o,a),{tokenInAddress:p,tokenOutAddress:d,isTokenInNative:c,isTokenOutNative:f}=this.parseAddresses(t,r),g=(await l.getGasPrice()).toString(),A=new URLSearchParams({chain:Kr.MAINNET.toString(),inTokenAddress:p,outTokenAddress:d,amountDecimals:m,slippage:n<.01?"0.01":n.toString(),account:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter,gasPrice:g}),R=await this.fetch(`${this.url}?${A.toString()}`),h=await R.json();if(h.code!==200||!h.data){let C=this.notFoundMessages.some(v=>h.error.includes(v));throw new J({response:R,endpoint:{url:this.url,name:this.name,type:this.type},cause:h,reason:C?S.PATH_NOT_FOUND_REASON:h.error})}let b={amountOut:h.data.outAmount,amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:a},T=this.getInputData({tokenIn:p,amountIn:o,isNative:c}),w={tokenOut:d,receiver:s,minAmountOut:this.getMinAmountOut(b.amountOut,n),isNative:f},I={aggregator:h.data.to,data:h.data.data};return{...b,calldata:{params:[T,w,I,{rewardVault:u??Fr,isSwapAndStake:!!u}],functionName:"swap",abi:L,value:BigInt(c?o:"0"),address:this.config.bex.aggregatorsRouter}}}},Be=new lt;import{ChainId as qr}from"@berachain/config/internal";var ut=class extends S{name="Wrap";supportedChains=[qr.MAINNET,qr.BEPOLIA];type="rpc";async getQuote({tokenIn:t,tokenOut:r,amount:o}){if(this.checkChainSupport(),!k(t,"BERA")&&!k(t,"WBERA")||!k(r,"WBERA")&&!k(r,"BERA"))throw new x({message:"Invalid token pair",level:"error"});let n=k(t,"BERA")&&k(r,"WBERA");return{amountOut:o,amountIn:o,spender:void 0,name:n?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,calldata:n?{abi:Fe,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(o)}:{abi:Fe,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(o)],value:BigInt(0)}}}},Oe=new ut;var Ln=[ve,Ce,xe,Be,Ee,Te,we,Se],Nn="useAggregatorsQuotes";function Y({name:e,account:t,args:r,feeBps:o,options:n,activeAggregators:s,honeyNativeState:a}){if(e!==Pe.name&&(k(r.tokenIn,"BGT",{chainId:pt})||k(r.tokenOut,"BGT",{chainId:pt})))return null;let{tokenIn:i,tokenOut:l,tokenInDecimals:u,tokenOutDecimals:m,amount:p,slippage:d,referrer:c,rewardVault:f}=r,g=vn(p,u).toString(),A=!s||s.includes(e.toLowerCase().replaceAll(" ",""));return n?.opts?.isEnabled&&Number(p)&&o!==void 0&&A?[Nn,e,i,l,g,d,t,o,u,m,c,f,a?.collateralList]:null}function Z({aggregator:e,publicClient:t,proxyAggregatorsThroughVercel:r}){return async([,,o,n,s,a,i,l,u,m,p,d,c])=>e.getQuote({tokenIn:o,tokenOut:n,amount:s,slippage:a,account:i,aggregatorsFeeBps:l,tokenInDecimals:u,tokenOutDecimals:m,publicClient:t,proxyAggregatorsThroughVercel:r,referrer:p,rewardVault:d,honeyNativeState:{collateralList:c??[]}})}var Md=(e,t)=>{let{address:r}=On(),o=q("proxyAggregatorsThroughVercel"),n=q("aggregators"),s=Dn(),{data:a}=Zr(),{collateralList:i,protocol:l}=e.honeyNativeState??{},u=(k(e.tokenIn,"BERA")||k(e.tokenIn,"WBERA"))&&(k(e.tokenOut,"BERA")||k(e.tokenOut,"WBERA")),m=k(e.tokenIn,"BGT",{chainId:pt}),p=$r(()=>se.isHoneyNativeSwap(e),[e.tokenOut,e.tokenIn,i]),d=u||m,{config:c}=P(e),f=c.bex.aggregatorsRouter!==Bn,g={refreshInterval:1e4,errorRetryCount:3,onErrorRetry(D,F,z,re,U){if(!(D instanceof x&&D.reason===S.PATH_NOT_FOUND_REASON)){if(D instanceof J&&D.statusCode===403){console.warn(F[1],"returned error 403, stopping retries");return}U.retryCount>(z.errorRetryCount??3)||setTimeout(()=>{re()},z.errorRetryInterval??ge(10))}}},A=Q(d||!f?null:Y({name:ve.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:ve,proxyAggregatorsThroughVercel:o}),g),R=Q(d||!f?null:Y({name:Ce.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:Ce,proxyAggregatorsThroughVercel:o}),g),h=Q(d||!f?null:Y({name:xe.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:xe,proxyAggregatorsThroughVercel:o}),g),b=Q(d||!f?null:Y({name:Be.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:Be,publicClient:s,proxyAggregatorsThroughVercel:o}),g),T=Q(d||!f?null:Y({name:Ee.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:Ee,publicClient:s,proxyAggregatorsThroughVercel:o}),g),w=Q(d||!f?null:Y({name:Te.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:Te,proxyAggregatorsThroughVercel:o}),g),{protocol:I}=Ke(),C=Q(d||I.isPaused===!0||e.rewardVault?null:Y({name:we.name,account:r,args:e,feeBps:0,options:t,activeAggregators:n}),Z({aggregator:we,publicClient:s}),g),v=Q(u?Y({name:Oe.name,account:r,args:e,feeBps:0,options:t,activeAggregators:void 0}):null,async([,,D,F,z,,re])=>Oe.getQuote({tokenIn:D,tokenOut:F,amount:z,account:re}),g),M=Q(m?Y({name:Pe.name,account:r,args:e,feeBps:0,options:t,activeAggregators:void 0}):null,async([,,D,,F])=>Pe.getQuote({tokenIn:D,amount:F}),g),W=Q(!p||d||l?.isPaused===!0||!i?null:Y({name:Se.name,account:r,args:e,feeBps:0,options:t,activeAggregators:void 0,honeyNativeState:{collateralList:i}}),Z({aggregator:Se,publicClient:s,proxyAggregatorsThroughVercel:o}),g),O=u?[v]:m?[M]:[A,R,h,b,T,w,W,I.isPaused===!1?C:null].filter(D=>D!==null);return{...$r(()=>{let D=O.reduce((U,Me)=>U||Me.error,void 0),F=O.map((U,Me)=>U.isLoading?d?Oe.name:Ln[Me].name:null).filter(Boolean),z=O.filter(U=>U!==void 0&&!U.isLoading&&!U.error&&U.data?.amountOut).map(({data:U})=>U),re=z.length===0&&F.length>0;return{quotes:z,loadingAggregatorsNames:F,isLoading:re,error:D}},[O]),refresh:()=>O.map(D=>D.mutate())}};import Un from"swr/immutable";import{zeroAddress as Hn}from"viem";import{usePublicClient as Vn}from"@berachain/wagmi/hooks";var Zr=()=>{let e=Vn(),{config:t}=P({chainId:e.chain?.id}),r=Un(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==Hn?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,o])=>{let n=await e.readContract({address:o,abi:L,functionName:"SWAP_FEE_RATE"});return Number(n)});return{...r,refresh:r.mutate}};import Wn from"swr";var _n=({query:e}={})=>["useAllUserPools",e],zr=(e,t)=>{let r=Wn(_n({query:e}),async([o,n])=>fe({...n,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>{r.mutate()}}};import Qn from"swr";import{isAddress as Yn}from"viem";var Mn=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function jr({poolId:e,account:t}){let r=Qn(Mn({poolId:e,account:t}),async([,o,n])=>{if(n&&!Yn(n))throw new E({property:"account",value:n,expected:"Address"});return Ct({poolId:o,account:n})},{refreshInterval:1e5});return{...r,refresh:()=>{r.mutate()}}}import{useMemo as to}from"react";import{PoolType as De}from"@berachain-foundation/berancer-sdk";import Fn from"swr/immutable";import{formatUnits as Kn,keccak256 as qn,parseUnits as Le,zeroAddress as dt}from"viem";import{GetDedupedSubgraphPools as $n}from"@berachain/graphql/dex/subgraph";import{PoolType as Jr}from"@berachain-foundation/berancer-sdk";import{formatUnits as Gn}from"viem";var mt=e=>[...e].sort((t,r)=>t.address.toLowerCase().localeCompare(r.address.toLowerCase())),Xr=e=>e.length===0?"":mt(e).map(t=>t.symbol).join(" | "),eo=(e,t,r)=>{let o;switch(r){case Jr.ComposableStable:o="STABLE";break;default:o=r.toString().toUpperCase();break}return r===Jr.Weighted?t.length===0?"":`${mt(e).map((n,s)=>{let a=t[s];return`${(Number.parseFloat(Gn(a,18))*100).toFixed(0)}${n.symbol}`}).join("-")}-${o}`:`${mt(e).map(n=>n.symbol).join("-")}-${o}`};var Zn=.005,zn=(r=>(r.None="None",r.Custom="Custom",r))(zn||{}),jn=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,swapFeePercentage:o,salt:n,poolName:s,poolSymbol:a,owner:i,amplification:l,oracles:u,message:m,actionType:p,gasLimit:d=$e})=>{let c=t.map(w=>w.address.toLowerCase()).sort((w,I)=>w<I?-1:1),f=c.map(w=>{let I=r.find(O=>O.address.toLowerCase()===w||k(w,"WBERA")&&k(O.address,"BERA")),C=I?Le(I.amount,I.decimals):0n,v=u.find(O=>O.tokenAddress.toLowerCase()===w.toLowerCase()),M=v?v.address:dt,W=BigInt(v?v.cacheDuration:100);return{amountIn:C,rateProvider:M,cacheDuration:W}}),g=f.map(w=>w.amountIn),A=f.map(w=>w.rateProvider),R=f.map(w=>w.cacheDuration),h=r.findIndex(w=>k(w.address,"BERA")),b=h!==-1?Le(r[h].amount,r[h].decimals):0n,T=b>0n;return{address:e,abi:Ge,functionName:"createAndJoinStablePool",params:[s,a,c,BigInt(l),A,R,!1,o,g,i,n,T],message:m,actionType:p,value:b,gasLimit:d,track:{eventName:"hub_pool_create",eventData:{poolName:s,poolSymbol:a}}}},Jn=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,normalizedWeights:o,swapFeePercentage:n,salt:s,poolName:a,poolSymbol:i,owner:l,message:u,actionType:m,gasLimit:p=$e})=>{let d=[],c=[],f=[],g=[];t.map((h,b)=>({createToken:h.address,joinToken:r[b].address,weight:o[b],amountIn:Le(r[b].amount,r[b].decimals)})).sort((h,b)=>h.createToken.toLowerCase()<b.createToken.toLowerCase()?-1:1).forEach(h=>{d.push(h.createToken),c.push(h.joinToken),f.push(h.weight),g.push(h.amountIn)});let A=c.indexOf(dt),R=A!==-1?g[A]:0n;return{address:e,abi:Ge,functionName:"createAndJoinWeightedPool",params:[a,i,d,c,f,Array(d.length).fill(dt),n,g,l,s],message:u,actionType:m,value:R,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:i}}}},Rc=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,poolType:o,poolName:n,poolSymbol:s,swapFee:a,owner:i,amplification:l,oracles:u,weightsDuplicationThreshold:m=Zn,...p})=>{let{data:d,error:c,isLoading:f}=Fn(["useCreatePool__deduped_pool",e,o,r],async()=>{if(e.length===0||!o)return null;let h=$("bex.subgraph",{});try{let b=ye(e).map(I=>I.address.toLowerCase()).sort((I,C)=>I.toLowerCase()<C.toLowerCase()?-1:1);return(await h.query({query:$n,variables:{tokens:b,type:o}})).data.pools.filter(I=>I.tokens?.every(C=>o===De.Weighted?b.includes(C.address)&&Math.abs(Number(C.weight)-Number(Kn(r[b.indexOf(C.address)],18)))<m:b.includes(C.address)||C.address===I.address))?.at(0)??null}catch{return null}}),{generatedPoolName:g,generatedPoolSymbol:A}=to(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let h=Xr(e),b=eo(e,r,o);return{generatedPoolName:h,generatedPoolSymbol:b}},[e,r,o]),R=to(()=>{if(!i||n===""||s===""||e.length!==t.length||e.length===0)return null;let h=Le(a.toString(),16),b=qn(Buffer.from(`${n}-${i}`)),{config:T}=P(p);return o===De.Weighted?Jn({poolCreationHelper:T.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,swapFeePercentage:h,salt:b,poolName:n,poolSymbol:s,owner:i,message:`Create pool ${n}`,actionType:"Create Pool"}):o===De.ComposableStable||o===De.MetaStable?jn({poolCreationHelper:T.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,swapFeePercentage:h,salt:b,poolName:n,poolSymbol:s,owner:i,amplification:l,oracles:u,message:`Create pool ${n}`,actionType:"Create Pool"}):null},[e,t,r,o,a,n,s,i,l,u]);return{generatedPoolName:g,generatedPoolSymbol:A,isDupePool:!!d,dupePool:d,createPoolArgs:R,isLoadingPools:f,errorLoadingPools:c}};import ns from"swr";import{usePublicClient as ss}from"@berachain/wagmi/hooks";import Xn from"bignumber.js";import{erc20Abi as es,formatUnits as ts}from"viem";import{GetExploitedTokens as rs}from"@berachain/graphql/dex/subgraph";var os=1e-4;async function ro({token:e,publicClient:t,...r}){let o=$("bex.subgraph",r),n=await t.readContract({address:e.address,abi:es,functionName:"totalSupply"}),s=Xn(ts(n,e.decimals)).multipliedBy(os),{data:a}=await o.query({query:rs,variables:{token:e.address,balance:s.toFixed()}});return a.userInternalBalances.length>0}var as=e=>{let t=e?.filter(r=>r.address);return!t||t.length===0?null:["useExploitedTokens",t]},Bc=({tokens:e})=>{let t=as(e),r=ss(),o=ns(r?t:null,async([,n])=>(y(r),(await Promise.all(n.map(a=>ro({token:a,publicClient:r})))).reduce((a,i,l)=>(i!==void 0&&(a[n[l].address]=i),a),{})));return{...o,refresh:()=>o.mutate()}};import is from"swr";var ls=()=>{let e=is("useGlobalLiquidityAndSwapVolume",async()=>Et());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as us,useState as ps}from"react";import{PoolType as ae}from"@berachain-foundation/berancer-sdk";var ms=.05,Wc=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:r,tokens:o,weights:n,weightsError:s,poolType:a,liquidityMismatchTolerancePercent:i=ms,oracles:l})=>{let[u,m]=ps({title:null,message:null});return us(()=>{if(!t||r||!o||!n||s||o.some(b=>!b.address)||l.some(b=>b.mode==="Custom")){m({title:null,message:null});return}let p=0,d=[],c=o.length,g=ye(o).map(b=>{let T=t[b.address.toLowerCase()]?.price??0;if(!T||T===0)return d.push(0),null;let w=T*Number.parseFloat(b.amount);return d.push(w),p+=w,T});if(g.some(b=>b===null)||g.length!==c){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
|
|
1
|
+
import{f as L,h as Ge,i as le,n as Fe}from"../chunk-4IBBLGNS.mjs";import{c as q,e as Ke,g as _p,h as Qp,i as Yp,j as Mp,k as Gp,l as Fp,m as pe,n as me,s as B,t as wt}from"../chunk-5N57PBAR.mjs";import"../chunk-MTBICGRP.mjs";import{$ as Xt,A as Wt,B as _t,Ba as yr,C as X,Ca as Ar,Da as br,E as Qt,Ea as hr,F as Yt,Fa as Rr,H as Mt,Ha as kr,Ja as wr,K as Gt,Ka as Pr,La as Tr,Ma as Ir,N as Ae,Na as Cr,O as Ft,Oa as Er,P as ze,Pa as Sr,Q as Kt,Qa as xr,R as qt,Ra as vr,S as be,Sa as Br,T as $t,Ta as Or,Ua as Dr,V as Zt,Va as Lr,W as zt,Y as jt,Z as Jt,a as ce,aa as er,ba as tr,c as $,ca as rr,e as S,f as Tt,fa as he,g as fe,ga as Re,h as It,i as Ct,ia as or,k as Et,l as St,la as nr,m as xt,ma as sr,na as ir,o as vt,oa as lr,pa as ur,q as N,qa as pr,ra as mr,sa as dr,t as Bt,u as Ot,ua as cr,w as Ut,wa as fr,xa as ke,y as Ht,z as Vt,za as gr}from"../chunk-BI76GRHX.mjs";import{b as oe,c as _,k as Rt,l as K,m as G,n as ue,o as kt}from"../chunk-AHAZC5K3.mjs";import{a as qe,b as ne,c as y,d as j,e as Ze,g as ar}from"../chunk-YKNKCICU.mjs";import"../chunk-K4NZIO2Z.mjs";import{B as Nt,C as ge,Q as ye,c as Pt,i as $e,j as Dt,z as Lt}from"../chunk-7SDDMT3W.mjs";import{b as P,c as H,e as de,f as k}from"../chunk-HOCEXCQJ.mjs";import{a as J}from"../chunk-5UFI7X4U.mjs";import{f as x,g as E}from"../chunk-5GPS724E.mjs";import mn from"swr";import{usePublicClient as dn}from"@berachain/wagmi/hooks";var zp=({sharesAmount:e,vaultAddress:t,vaultChainId:r},o)=>{let n=dn({chainId:r}),s=mn(n&&e&&t?["useGetConvertToAssets",e,t,r]:null,async([a,i,l])=>(y(n),ce({sharesAmount:i,vaultAddress:l,publicClient:n})),{...o?.opts});return{...s,refresh:()=>{s.mutate()}}};import{useMemo as qr}from"react";import Q from"swr";import{parseUnits as Bn,zeroAddress as On}from"viem";import{defaultChainId as pt}from"@berachain/config/internal";import{useBeraWallet as Dn,usePublicClient as Ln}from"@berachain/wagmi/hooks";import{Slippage as cn,Swap as fn,SwapKind as gn,Token as Nr,TokenAmount as yn}from"@berachain-foundation/berancer-sdk";import{captureException as An}from"@sentry/nextjs";import{decodeFunctionData as bn,formatEther as Ur,zeroAddress as Hr}from"viem";import{getUriFromLink as hn}from"@berachain/config";import{ChainId as Vr}from"@berachain/config/internal";var Rn=300,kn=.05,je=gn.GivenIn,Je=class extends S{name="Hub Pools";supportedChains=[Vr.MAINNET,Vr.BEPOLIA];url=hn(this.config.api);type="graphql";convertZeroToWrapped(t){return k(t,"BERA")?this.config.tokens.wbera:t}calculatePriceImpact(t){return t.error?(console.error("Swap price impact error",t),0):Number(t.priceImpact)}checkStalePrices(t,r,o,n){let s=Number.parseFloat(Ur(t.scale18))/Number.parseFloat(o);if(Math.abs(1-s)>kn){console.warn("SOR returned stale prices. Delta from return amount is more than 5%",{deltaFromSorAmount:s});let a=new x({reason:"SOR_STALE_PRICES",level:"warning",message:"SOR returned stale prices. Delta from return amount is more than 5%"});An(a,{level:"warning",extra:{deltaFromSorAmount:s,pools:r.map(i=>i.pools),onChainAmount:Ur(t.scale18),sorAmount:o,queryData:n},fingerprint:["SOR_STALE_PRICES"]})}}async getQuote(t){let r=new Tt(this.url,this.chainId),{tokenIn:o,tokenOut:n,tokenInDecimals:s,tokenOutDecimals:a,amount:i,slippage:l,account:u=Hr,publicClient:m}=t;if(this.checkChainSupport(),y(m),!s)throw new E({property:"tokenInDecimals",value:s,expected:"number",chainId:this.chainId});if(!a)throw new E({property:"tokenOutDecimals",value:a,expected:"number",chainId:this.chainId});let p=k(o,"BERA")||k(n,"BERA"),d=new Nr(this.chainId,this.convertZeroToWrapped(o),s),c=new Nr(this.chainId,this.convertZeroToWrapped(n),a),f=yn.fromRawAmount(d,i),{paths:g,priceImpact:A,returnAmount:R}=await r.sorSwapPaths.fetchSorSwapPaths({chainId:this.chainId,tokenIn:d.address,tokenOut:c.address,swapKind:je,swapAmount:f});if(!g?.length)throw new J({response:void 0,endpoint:{url:this.url,name:this.name,type:this.type},reason:S.PATH_NOT_FOUND_REASON,chainId:this.chainId,payload:{tokenIn:d.address,tokenOut:c.address,swapKind:je,swapAmount:f},message:"No swap paths returned from Balancer API"});let h=new fn({chainId:this.chainId,paths:g,swapKind:je,userData:"0x"}),b=await h.query(m.transport.url);if(!("expectedAmountOut"in b))throw new Error("No Bex paths found");this.checkStalePrices(b.expectedAmountOut,g,R,t);let T={amountOut:b.expectedAmountOut.amount.toString(),amountIn:i,spender:b.to,name:this.name,priceImpactPercentage:this.calculatePriceImpact(A),swapFeeBps:0};if(u===Hr)return T;let w=h.buildCall({slippage:cn.fromPercentage(l.toString()),deadline:BigInt(Math.round(Date.now()/1e3)+Rn),queryOutput:b,sender:u,recipient:u,wethIsEth:p}),{args:I,functionName:C}=bn({abi:oe,data:w.callData});return{...T,calldata:{params:I,functionName:C,abi:oe,address:w.to,value:w.value||BigInt(0)}}}},we=new Je;import{ChainId as Wr}from"@berachain/config/internal";var Xe=class extends S{name="RedeemBgt";supportedChains=[Wr.MAINNET,Wr.BEPOLIA];type="rpc";async getQuote({tokenIn:t,amount:r}){if(this.checkChainSupport(),!k(t,"BGT",{config:this.config}))throw new E({property:"tokenIn",value:t,expected:"BGT",level:"warning"});return{amountOut:r,amountIn:r,spender:void 0,name:"RedeemBgt",isNativeSwap:!0,swapFeeBps:0}}},Pe=new Xe;import{zeroAddress as _r}from"viem";import{ChainId as Qr}from"@berachain/config/internal";var et=class extends S{name="Enso";supportedChains=[Qr.MAINNET];type="rest";notFoundMessages=["Could not build shortcuts for route","Swap not found for a required underlying of defi route,"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:n,account:s=_r,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:l}){this.checkChainSupport();let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:d}=this.parseAddresses(t,r),c=this.getAmountAfterFees(o,a);this.url=i?"/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",c),f.searchParams.set("tokenIn",u),f.searchParams.set("tokenOut",m),f.searchParams.set("chainId",Qr.MAINNET.toString()),f.searchParams.set("slippage",(Number(n)*100).toString()),f.searchParams.set("refundReceiver",s);let A=await(await this.fetch(f)).json(),R=this.getInputData({tokenIn:u,amountIn:o,isNative:p}),h={tokenOut:m,receiver:s,minAmountOut:this.getMinAmountOut(A.amountOut.toString(),n),isNative:d},b={aggregator:A.tx?.to,data:A.tx?.data};return{amountOut:A.amountOut.toString(),amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:a,calldata:{params:[R,h,b,{rewardVault:l??_r,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter}}}},Te=new et;import{zeroAddress as Ie}from"viem";import{ChainId as wn}from"@berachain/config/internal";var Yr="https://api.magpiefi.xyz/aggregator",tt=class extends S{name="Fly";supportedChains=[wn.MAINNET];type="rest";notFoundMessages=["Couldn't recognize to token","There is not enough liquidity. Amount is too high.","Routes were not found"];async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:n,account:s=Ie,aggregatorsFeeBps:a,rewardVault:i}){this.checkChainSupport();let{tokenInAddress:l,tokenOutAddress:u,isTokenInNative:m,isTokenOutNative:p}=this.parseAddresses(t,r),d=this.getAmountAfterFees(o,a),c=new URL(`${Yr}/quote`);this.url=c.toString();let f=new URLSearchParams({fromTokenAddress:l,toTokenAddress:u,sellAmount:d,slippage:(n/100).toString(),gasless:"false",network:"berachain"});s!==Ie&&(f.set("fromAddress",this.config.bex.aggregatorsRouterExecutor),f.set("toAddress",this.config.bex.aggregatorsRouterExecutor)),c.search=f.toString();let A=await(await this.fetch(c)).json(),R={amountOut:A.amountOut,amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:a??0};if(s===Ie)return R;let h=new URL(`${Yr}/transaction`);this.url=h.toString();let b=new URLSearchParams({quoteId:A.id,estimateGas:"false"});h.search=b.toString();let w=await(await this.fetch(h)).json(),I=this.getInputData({tokenIn:l,amountIn:o,isNative:m}),C={tokenOut:u,receiver:s,minAmountOut:this.getMinAmountOut(A.amountOut,n),isNative:p},v={aggregator:w.to,data:w.data};return{...R,calldata:{params:[I,C,v,{rewardVault:i??Ie,isSwapAndStake:!!i}],functionName:"swap",abi:L,value:k(t,"BERA")?BigInt(o):BigInt("0"),address:this.config.bex.aggregatorsRouter}}}},Ce=new tt;import{formatUnits as Pn,parseUnits as Tn,zeroAddress as rt}from"viem";import{ChainId as In}from"@berachain/config/internal";var ot=class extends S{name="Haiku";supportedChains=[In.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:n,account:s=rt,tokenInDecimals:a,tokenOutDecimals:i,aggregatorsFeeBps:l,proxyAggregatorsThroughVercel:u=!1,referrer:m,rewardVault:p}){if(a===void 0||i===void 0)throw new x({message:"Missing required params",level:"error"});this.checkChainSupport();let{tokenInAddress:d,tokenOutAddress:c,isTokenInNative:f,isTokenOutNative:g}=this.parseAddresses(t,r),A=this.getAmountAfterFees(o,l),R={intent:{allowancesMode:"approve",slippage:n/100,receiver:this.config.bex.aggregatorsRouterExecutor,input_positions:{[`bera:${d}`]:Pn(BigInt(A),a)},target_weights:{[`bera:${c}`]:1}}},h=m==="ZAP"?"zap-haiku":"haiku";this.url=u?"/api/aggregators?aggregator=haikuQuote":`${this.config.bex.aggregatorsProxyUrl}/${h}/v1/quoteIntent`;let T=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(R)})).json(),w={amountOut:Tn(T.balances[0].amount,i).toString(),amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:l};if(s===rt)return w;this.url=u?"/api/aggregators?aggregator=haikuSolve":`${this.config.bex.aggregatorsProxyUrl}/${h}/v1/solveIntent`;let C=await(await this.fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({quoteId:T.quoteId})})).json(),v=this.getInputData({tokenIn:d,amountIn:o,isNative:f,isPermit2Approval:!0,permit2SpenderAddress:this.config.bex.haikuAgentAddress}),M={tokenOut:c,receiver:s,minAmountOut:this.getMinAmountOut(w.amountOut,n),isNative:g},W={aggregator:C.to,data:C.data};return{...w,calldata:{params:[v,M,W,{rewardVault:p??rt,isSwapAndStake:!!p}],functionName:"swap",abi:L,value:BigInt(f?o:"0"),address:this.config.bex.aggregatorsRouter}}}},Ee=new ot;import{BigNumber as Cn}from"bignumber.js";import{formatUnits as Mr}from"viem";import{ChainId as En}from"@berachain/config/internal";function Sn(e){return e?"previewMintHoney":"previewRedeemCollaterals"}var se=class e extends S{name="Honey";supportedChains=[En.MAINNET];type="rpc";honeyToken=de(this);static isHoneyNativeSwap({tokenIn:t,tokenOut:r,honeyNativeState:o,...n}){if(!o?.collateralList)return!1;let s=k(r,"HONEY",n),a=k(t,"HONEY",n);return!s&&!a?!1:o.collateralList.some(i=>k(i.address,s?t:r))}async getQuote({tokenIn:t,tokenOut:r,amount:o,publicClient:n,account:s,honeyNativeState:a}){let{collateralList:i}=a??{};if(!i)throw new E({message:"Invalid Honey Context state",property:"collaterals",value:i,expected:"TokenWithOrder[]"});y(n),this.checkChainSupport();let l=k(r,this.honeyToken);if(!e.isHoneyNativeSwap({tokenIn:t,tokenOut:r,honeyNativeState:a}))throw new x({message:"Honey Aggregator only supports minting or redeeming Honey"});let u=i,m=i.find(I=>k(I.address,l?t:r));if(!m)throw new x({message:"This collateral is not part of the Honey protocol"});let[p,d]=await Promise.all([Ae({client:n,collateralList:[m]}),be({client:n,isMint:l,collateralList:i,latestPrices:void 0,isPythWrapperEnabled:!1})]);if(!p)throw new x({message:"Failed to fetch the Honey vault balances"});if(d)return;let c=p[0],f=m.order;u.length>1&&f!==0&&(u.splice(f,1),u.unshift(m));let g=Mr(BigInt(o),l?m.decimals:this.honeyToken.decimals),A={client:n,collateral:m,collateralList:i,amount:g,method:Sn(l),latestPrices:void 0,isPythWrapperEnabled:!1},R=await Gt(A);if(!R)throw new x({message:"Failed to fetch the Honey preview"});let{honey:h,collaterals:b}=R;if(!(l?!0:new Cn(c?.formattedBalance??"0").gte(Mr(b[m.address],m.decimals))))return;let w=s?await qt({state:{actionType:l?"mint":"redeem",fromAmount:[g],collaterals:u,isBasketModeEnabled:!1},account:s,collateralList:u,publicClient:n,priceFeedMap:void 0,isPythWrapperEnabled:!1}):void 0;if(!w&&s)throw new x({message:"Failed to fetch the Honey swap payload"});return{amountIn:o,amountOut:l?h.toString():b[m.address].toString(),spender:this.config.honey.factory,name:"Honey",swapFeeBps:0,calldata:w}}},Se=new se;import{zeroAddress as nt}from"viem";import{ChainId as xn}from"@berachain/config/internal";var st=class extends S{name="KyberSwap";supportedChains=[xn.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:n,account:s=nt,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:l}){this.checkChainSupport();let{isTokenInNative:u,isTokenOutNative:m,tokenInAddress:p,tokenOutAddress:d}=this.parseAddresses(t,r),c=this.getAmountAfterFees(o,a);this.url=i?"/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",d),f.searchParams.set("amountIn",c),f.searchParams.set("slippageTolerance",(n/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,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:a};if(s===nt)return R;let h={routeSummary:A.data.routeSummary,sender:this.config.bex.aggregatorsRouterExecutor,recipient:this.config.bex.aggregatorsRouterExecutor,slippageTolerance:n*100,deadline:Math.floor(Date.now()/1e3)+300,source:"berachain"},b=f.searchParams.entries(),T=new URL(i?"/api/aggregators?aggregator=kyberswapBuild":`${this.config.bex.aggregatorsProxyUrl}/kyberswap/berachain/api/v1/route/build`);for(let[W,O]of b)T.searchParams.set(W,O);let I=await(await this.fetch(T,{method:"POST",body:JSON.stringify(h)})).json(),C=this.getInputData({tokenIn:p,amountIn:o,isNative:u}),v={tokenOut:d,receiver:s,minAmountOut:this.getMinAmountOut(R.amountOut,n),isNative:m},M={aggregator:I.data.routerAddress,data:I.data.data};return{...R,calldata:{params:[C,v,M,{rewardVault:l??nt,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(u?o:"0"),address:this.config.bex.aggregatorsRouter}}}},xe=new st;import{zeroAddress as at}from"viem";import{ChainId as vn}from"@berachain/config/internal";var it=class extends S{name="Oogabooga";supportedChains=[vn.MAINNET];type="rest";async getQuote({tokenIn:t,tokenOut:r,amount:o,slippage:n,account:s=at,aggregatorsFeeBps:a,proxyAggregatorsThroughVercel:i=!1,rewardVault:l}){this.checkChainSupport();let{tokenInAddress:u,tokenOutAddress:m,isTokenInNative:p,isTokenOutNative:d}=this.parseAddresses(t,r),c=this.getAmountAfterFees(o,a),f=new URLSearchParams({tokenIn:u,tokenOut:m,amount:c,slippage:(n/100).toString(),to:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter});this.url=i?`/api/aggregators?aggregator=oogabooga&${f.toString()}`:`${this.config.bex.aggregatorsProxyUrl}/oogabooga/v1/swap?${f.toString()}`;let A=await(await this.fetch(this.url)).json(),R={amountOut:A.assumedAmountOut,amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,priceImpactPercentage:A.priceImpact,swapFeeBps:a};if(s===at)return R;let h=this.getInputData({tokenIn:u,amountIn:o,isNative:p}),b={tokenOut:m,receiver:s,minAmountOut:this.getMinAmountOut(R.amountOut,n),isNative:d},T={aggregator:A.tx?.to,data:A.tx?.data};return{...R,calldata:{params:[h,b,T,{rewardVault:l??at,isSwapAndStake:!!l}],functionName:"swap",abi:L,value:BigInt(p?o:"0"),address:this.config.bex.aggregatorsRouter}}}},ve=new it;import{zeroAddress as Gr}from"viem";import{ChainId as Fr}from"@berachain/config/internal";var lt=class extends S{name="OpenOcean";supportedChains=[Fr.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:n,account:s=Gr,aggregatorsFeeBps:a,tokenInDecimals:i,publicClient:l,rewardVault:u}){if(y(l),!i)throw new E({property:"tokenInDecimals",value:i,expected:"number",chainId:this.chainId});this.checkChainSupport();let m=this.getAmountAfterFees(o,a),{tokenInAddress:p,tokenOutAddress:d,isTokenInNative:c,isTokenOutNative:f}=this.parseAddresses(t,r),g=(await l.getGasPrice()).toString(),A=new URLSearchParams({chain:Fr.MAINNET.toString(),inTokenAddress:p,outTokenAddress:d,amountDecimals:m,slippage:n<.01?"0.01":n.toString(),account:this.config.bex.aggregatorsRouterExecutor,referrer:this.config.bex.aggregatorsRouter,gasPrice:g}),R=await this.fetch(`${this.url}?${A.toString()}`),h=await R.json();if(h.code!==200||!h.data){let C=this.notFoundMessages.some(v=>h.error.includes(v));throw new J({response:R,endpoint:{url:this.url,name:this.name,type:this.type},cause:h,reason:C?S.PATH_NOT_FOUND_REASON:h.error})}let b={amountOut:h.data.outAmount,amountIn:o,spender:this.config.bex.aggregatorsRouter,name:this.name,swapFeeBps:a},T=this.getInputData({tokenIn:p,amountIn:o,isNative:c}),w={tokenOut:d,receiver:s,minAmountOut:this.getMinAmountOut(b.amountOut,n),isNative:f},I={aggregator:h.data.to,data:h.data.data};return{...b,calldata:{params:[T,w,I,{rewardVault:u??Gr,isSwapAndStake:!!u}],functionName:"swap",abi:L,value:BigInt(c?o:"0"),address:this.config.bex.aggregatorsRouter}}}},Be=new lt;import{ChainId as Kr}from"@berachain/config/internal";var ut=class extends S{name="Wrap";supportedChains=[Kr.MAINNET,Kr.BEPOLIA];type="rpc";async getQuote({tokenIn:t,tokenOut:r,amount:o}){if(this.checkChainSupport(),!k(t,"BERA")&&!k(t,"WBERA")||!k(r,"WBERA")&&!k(r,"BERA"))throw new x({message:"Invalid token pair",level:"error"});let n=k(t,"BERA")&&k(r,"WBERA");return{amountOut:o,amountIn:o,spender:void 0,name:n?"Wrap":"Unwrap",isNativeSwap:!0,swapFeeBps:0,calldata:n?{abi:Fe,address:this.config.tokens.wbera,functionName:"deposit",params:[],value:BigInt(o)}:{abi:Fe,address:this.config.tokens.wbera,functionName:"withdraw",params:[BigInt(o)],value:BigInt(0)}}}},Oe=new ut;var Nn=[ve,Ce,xe,Be,Ee,Te,we,Se],Un="useAggregatorsQuotes";function Y({name:e,account:t,args:r,feeBps:o,options:n,activeAggregators:s,honeyNativeState:a}){if(e!==Pe.name&&(k(r.tokenIn,"BGT",{chainId:pt})||k(r.tokenOut,"BGT",{chainId:pt})))return null;let{tokenIn:i,tokenOut:l,tokenInDecimals:u,tokenOutDecimals:m,amount:p,slippage:d,referrer:c,rewardVault:f}=r,g=Bn(p,u).toString(),A=!s||s.includes(e.toLowerCase().replaceAll(" ",""));return n?.opts?.isEnabled&&Number(p)&&o!==void 0&&A?[Un,e,i,l,g,d,t,o,u,m,c,f,a?.collateralList]:null}function Z({aggregator:e,publicClient:t,proxyAggregatorsThroughVercel:r}){return async([,,o,n,s,a,i,l,u,m,p,d,c])=>e.getQuote({tokenIn:o,tokenOut:n,amount:s,slippage:a,account:i,aggregatorsFeeBps:l,tokenInDecimals:u,tokenOutDecimals:m,publicClient:t,proxyAggregatorsThroughVercel:r,referrer:p,rewardVault:d,honeyNativeState:{collateralList:c??[]}})}var Md=(e,t)=>{let{address:r}=Dn(),o=q("proxyAggregatorsThroughVercel"),n=q("aggregators"),s=Ln(),{data:a}=$r(),{collateralList:i,protocol:l}=e.honeyNativeState??{},u=(k(e.tokenIn,"BERA")||k(e.tokenIn,"WBERA"))&&(k(e.tokenOut,"BERA")||k(e.tokenOut,"WBERA")),m=k(e.tokenIn,"BGT",{chainId:pt}),p=qr(()=>se.isHoneyNativeSwap(e),[e.tokenOut,e.tokenIn,i]),d=u||m,{config:c}=P(e),f=c.bex.aggregatorsRouter!==On,g={refreshInterval:1e4,errorRetryCount:3,onErrorRetry(D,F,z,re,U){if(!(D instanceof x&&D.reason===S.PATH_NOT_FOUND_REASON)){if(D instanceof J&&D.statusCode===403){console.warn(F[1],"returned error 403, stopping retries");return}U.retryCount>(z.errorRetryCount??3)||setTimeout(()=>{re()},z.errorRetryInterval??ge(10))}}},A=Q(d||!f?null:Y({name:ve.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:ve,proxyAggregatorsThroughVercel:o}),g),R=Q(d||!f?null:Y({name:Ce.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:Ce,proxyAggregatorsThroughVercel:o}),g),h=Q(d||!f?null:Y({name:xe.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:xe,proxyAggregatorsThroughVercel:o}),g),b=Q(d||!f?null:Y({name:Be.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:Be,publicClient:s,proxyAggregatorsThroughVercel:o}),g),T=Q(d||!f?null:Y({name:Ee.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:Ee,publicClient:s,proxyAggregatorsThroughVercel:o}),g),w=Q(d||!f?null:Y({name:Te.name,account:r,args:e,feeBps:a,options:t,activeAggregators:n}),Z({aggregator:Te,proxyAggregatorsThroughVercel:o}),g),{protocol:I}=Ke(),C=Q(d||I.isPaused===!0||e.rewardVault?null:Y({name:we.name,account:r,args:e,feeBps:0,options:t,activeAggregators:n}),Z({aggregator:we,publicClient:s}),g),v=Q(u?Y({name:Oe.name,account:r,args:e,feeBps:0,options:t,activeAggregators:void 0}):null,async([,,D,F,z,,re])=>Oe.getQuote({tokenIn:D,tokenOut:F,amount:z,account:re}),g),M=Q(m?Y({name:Pe.name,account:r,args:e,feeBps:0,options:t,activeAggregators:void 0}):null,async([,,D,,F])=>Pe.getQuote({tokenIn:D,amount:F}),g),W=Q(!p||d||l?.isPaused===!0||!i?null:Y({name:Se.name,account:r,args:e,feeBps:0,options:t,activeAggregators:void 0,honeyNativeState:{collateralList:i}}),Z({aggregator:Se,publicClient:s,proxyAggregatorsThroughVercel:o}),g),O=u?[v]:m?[M]:[A,R,h,b,T,w,W,I.isPaused===!1?C:null].filter(D=>D!==null);return{...qr(()=>{let D=O.reduce((U,Me)=>U||Me.error,void 0),F=O.map((U,Me)=>U.isLoading?d?Oe.name:Nn[Me].name:null).filter(Boolean),z=O.filter(U=>U!==void 0&&!U.isLoading&&!U.error&&U.data?.amountOut).map(({data:U})=>U),re=z.length===0&&F.length>0;return{quotes:z,loadingAggregatorsNames:F,isLoading:re,error:D}},[O]),refresh:()=>O.map(D=>D.mutate())}};import Hn from"swr/immutable";import{zeroAddress as Vn}from"viem";import{usePublicClient as Wn}from"@berachain/wagmi/hooks";var $r=()=>{let e=Wn(),{config:t}=P({chainId:e.chain?.id}),r=Hn(e&&t.bex.aggregatorsRouter&&t.bex.aggregatorsRouter!==Vn?["useAggregatorsRouterFeeBps",t.bex.aggregatorsRouter]:null,async([,o])=>{let n=await e.readContract({address:o,abi:L,functionName:"SWAP_FEE_RATE"});return Number(n)});return{...r,refresh:r.mutate}};import _n from"swr";var Qn=({query:e}={})=>["useAllUserPools",e],Zr=(e,t)=>{let r=_n(Qn({query:e}),async([o,n])=>fe({...n,fetchPolicy:"no-cache"}),{refreshInterval:18e4,...t?.opts});return{...r,refresh:()=>{r.mutate()}}};import Yn from"swr";import{isAddress as Mn}from"viem";var Gn=({poolId:e,account:t})=>e?["usePool-api",e,t]:null;function zr({poolId:e,account:t}){let r=Yn(Gn({poolId:e,account:t}),async([,o,n])=>{if(n&&!Mn(n))throw new E({property:"account",value:n,expected:"Address"});return It({poolId:o,account:n})},{refreshInterval:1e5});return{...r,refresh:()=>{r.mutate()}}}import{useMemo as eo}from"react";import{PoolType as De}from"@berachain-foundation/berancer-sdk";import Kn from"swr/immutable";import{formatUnits as qn,keccak256 as $n,parseUnits as Le,zeroAddress as dt}from"viem";import{GetDedupedSubgraphPools as Zn}from"@berachain/graphql/dex/subgraph";import{PoolType as jr}from"@berachain-foundation/berancer-sdk";import{formatUnits as Fn}from"viem";var mt=e=>[...e].sort((t,r)=>t.address.toLowerCase().localeCompare(r.address.toLowerCase())),Jr=e=>e.length===0?"":mt(e).map(t=>t.symbol).join(" | "),Xr=(e,t,r)=>{let o;switch(r){case jr.ComposableStable:o="STABLE";break;default:o=r.toString().toUpperCase();break}return r===jr.Weighted?t.length===0?"":`${mt(e).map((n,s)=>{let a=t[s];return`${(Number.parseFloat(Fn(a,18))*100).toFixed(0)}${n.symbol}`}).join("-")}-${o}`:`${mt(e).map(n=>n.symbol).join("-")}-${o}`};var zn=.005,jn=(r=>(r.None="None",r.Custom="Custom",r))(jn||{}),Jn=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,swapFeePercentage:o,salt:n,poolName:s,poolSymbol:a,owner:i,amplification:l,oracles:u,message:m,actionType:p,gasLimit:d=$e})=>{let c=t.map(w=>w.address.toLowerCase()).sort((w,I)=>w<I?-1:1),f=c.map(w=>{let I=r.find(O=>O.address.toLowerCase()===w||k(w,"WBERA")&&k(O.address,"BERA")),C=I?Le(I.amount,I.decimals):0n,v=u.find(O=>O.tokenAddress.toLowerCase()===w.toLowerCase()),M=v?v.address:dt,W=BigInt(v?v.cacheDuration:100);return{amountIn:C,rateProvider:M,cacheDuration:W}}),g=f.map(w=>w.amountIn),A=f.map(w=>w.rateProvider),R=f.map(w=>w.cacheDuration),h=r.findIndex(w=>k(w.address,"BERA")),b=h!==-1?Le(r[h].amount,r[h].decimals):0n,T=b>0n;return{address:e,abi:Ge,functionName:"createAndJoinStablePool",params:[s,a,c,BigInt(l),A,R,!1,o,g,i,n,T],message:m,actionType:p,value:b,gasLimit:d,track:{eventName:"hub_pool_create",eventData:{poolName:s,poolSymbol:a}}}},Xn=({poolCreationHelper:e,poolCreateTokens:t,initialLiquidityTokens:r,normalizedWeights:o,swapFeePercentage:n,salt:s,poolName:a,poolSymbol:i,owner:l,message:u,actionType:m,gasLimit:p=$e})=>{let d=[],c=[],f=[],g=[];t.map((h,b)=>({createToken:h.address,joinToken:r[b].address,weight:o[b],amountIn:Le(r[b].amount,r[b].decimals)})).sort((h,b)=>h.createToken.toLowerCase()<b.createToken.toLowerCase()?-1:1).forEach(h=>{d.push(h.createToken),c.push(h.joinToken),f.push(h.weight),g.push(h.amountIn)});let A=c.indexOf(dt),R=A!==-1?g[A]:0n;return{address:e,abi:Ge,functionName:"createAndJoinWeightedPool",params:[a,i,d,c,f,Array(d.length).fill(dt),n,g,l,s],message:u,actionType:m,value:R,gasLimit:p,track:{eventName:"hub_pool_create",eventData:{poolName:a,poolSymbol:i}}}},Rc=({poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,poolType:o,poolName:n,poolSymbol:s,swapFee:a,owner:i,amplification:l,oracles:u,weightsDuplicationThreshold:m=zn,...p})=>{let{data:d,error:c,isLoading:f}=Kn(["useCreatePool__deduped_pool",e,o,r],async()=>{if(e.length===0||!o)return null;let h=$("bex.subgraph",{});try{let b=ye(e).map(I=>I.address.toLowerCase()).sort((I,C)=>I.toLowerCase()<C.toLowerCase()?-1:1);return(await h.query({query:Zn,variables:{tokens:b,type:o}})).data.pools.filter(I=>I.tokens?.every(C=>o===De.Weighted?b.includes(C.address)&&Math.abs(Number(C.weight)-Number(qn(r[b.indexOf(C.address)],18)))<m:b.includes(C.address)||C.address===I.address))?.at(0)??null}catch{return null}}),{generatedPoolName:g,generatedPoolSymbol:A}=eo(()=>{if(!e)return{generatedPoolName:"",generatedPoolSymbol:""};let h=Jr(e),b=Xr(e,r,o);return{generatedPoolName:h,generatedPoolSymbol:b}},[e,r,o]),R=eo(()=>{if(!i||n===""||s===""||e.length!==t.length||e.length===0)return null;let h=Le(a.toString(),16),b=$n(Buffer.from(`${n}-${i}`)),{config:T}=P(p);return o===De.Weighted?Xn({poolCreationHelper:T.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,normalizedWeights:r,swapFeePercentage:h,salt:b,poolName:n,poolSymbol:s,owner:i,message:`Create pool ${n}`,actionType:"Create Pool"}):o===De.ComposableStable||o===De.MetaStable?Jn({poolCreationHelper:T.bex.poolCreationHelper,poolCreateTokens:e,initialLiquidityTokens:t,swapFeePercentage:h,salt:b,poolName:n,poolSymbol:s,owner:i,amplification:l,oracles:u,message:`Create pool ${n}`,actionType:"Create Pool"}):null},[e,t,r,o,a,n,s,i,l,u]);return{generatedPoolName:g,generatedPoolSymbol:A,isDupePool:!!d,dupePool:d,createPoolArgs:R,isLoadingPools:f,errorLoadingPools:c}};import ss from"swr";import{usePublicClient as as}from"@berachain/wagmi/hooks";import es from"bignumber.js";import{erc20Abi as ts,formatUnits as rs}from"viem";import{GetExploitedTokens as os}from"@berachain/graphql/dex/subgraph";var ns=1e-4;async function to({token:e,publicClient:t,...r}){let o=$("bex.subgraph",r),n=await t.readContract({address:e.address,abi:ts,functionName:"totalSupply"}),s=es(rs(n,e.decimals)).multipliedBy(ns),{data:a}=await o.query({query:os,variables:{token:e.address,balance:s.toFixed()}});return a.userInternalBalances.length>0}var is=e=>{let t=e?.filter(r=>r.address);return!t||t.length===0?null:["useExploitedTokens",t]},Bc=({tokens:e})=>{let t=is(e),r=as(),o=ss(r?t:null,async([,n])=>(y(r),(await Promise.all(n.map(a=>to({token:a,publicClient:r})))).reduce((a,i,l)=>(i!==void 0&&(a[n[l].address]=i),a),{})));return{...o,refresh:()=>o.mutate()}};import ls from"swr";var us=()=>{let e=ls("useGlobalLiquidityAndSwapVolume",async()=>Ct());return{...e,data:{totalLiquidity:Number(e.data?.protocolMetricsAggregated.totalLiquidity),swapVolume24h:Number(e.data?.protocolMetricsAggregated.swapVolume24h)},refresh:()=>e.mutate()}};import{useEffect as ps,useState as ms}from"react";import{PoolType as ae}from"@berachain-foundation/berancer-sdk";var ds=.05,Wc=({currentStep:e,tokenPrices:t,isLoadingTokenPrices:r,tokens:o,weights:n,weightsError:s,poolType:a,liquidityMismatchTolerancePercent:i=ds,oracles:l})=>{let[u,m]=ms({title:null,message:null});return ps(()=>{if(!t||r||!o||!n||s||o.some(b=>!b.address)||l.some(b=>b.mode==="Custom")){m({title:null,message:null});return}let p=0,d=[],c=o.length,g=ye(o).map(b=>{let T=t[b.address.toLowerCase()]?.price??0;if(!T||T===0)return d.push(0),null;let w=T*Number.parseFloat(b.amount);return d.push(w),p+=w,T});if(g.some(b=>b===null)||g.length!==c){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
2
|
weightings and your initial liquidity amounts.`});return}if(e==="Select Tokens"&&a===ae.ComposableStable){let b=g.map(w=>w/g[0]);Math.max(...b)-Math.min(...b)>i?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||d.some(b=>b===0)){m({title:null,message:null});return}let A=0;if(a===ae.ComposableStable){let b=p/c;d.forEach(T=>{A+=Math.abs(b-T)})}else a===ae.Weighted&&d.forEach((b,T)=>{let w=Number(n[T])/1e18,I=p*w;A+=Math.abs(I-b)});let R=A>=p*.9;A=Math.min(A,p);let h=A/p;h>i?m({title:R?"You could lose all of your initial liquidity":`You could lose $${A.toFixed(2)} (~${(h*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. ${a===ae.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:a===ae.ComposableStable}):m({title:null,message:null})},[e,t,r,o,n,s,a,i,l]),u};import lo from"bignumber.js";import{formatEther as uo,isAddressEqual as Os}from"viem";import ys from"swr";import{isAddress as oo,zeroAddress as As}from"viem";import{useBeraWallet as bs,usePublicClient as hs}from"@berachain/wagmi/hooks";import ds from"swr/immutable";import{isAddress as cs,zeroAddress as fs}from"viem";import{usePublicClient as gs}from"@berachain/wagmi/hooks";var ct=({tokenAddress:e},{isEnabled:t=!0}={})=>{let r=gs(),o=r&&e&&cs(e)&&t?["useRewardVaultFromToken",e]:null,n=ds(o,async([,s])=>{if(!s)throw new Error("useRewardVaultFromToken needs a valid token address");y(r);let{config:a}=P({chainId:r.chain.id}),i=await r.readContract({address:a.pol.factory,abi:wt,functionName:"getVault",args:[s]});return i===fs?void 0:i});return{...n,refresh:()=>n.mutate()}};var no=({stakingToken:e,rewardVaultAddress:t},r)=>{let{address:o}=bs(),n=hs(),s=r?.opts?.isEnabled??!0,{data:a=t,error:i,mutate:l,isLoading:u}=ct({tokenAddress:e},{isEnabled:!t&&s}),m=ys(a&&o&&n&&oo(a)&&oo(o)&&s?["useVaultBalanceFromStakingToken",a,o]:null,async([,p,d])=>{if(y(n),p===As)return{address:p,balance:0n};let c=await n.readContract({address:p,abi:ue,functionName:"balanceOf",args:[d]});return{address:p,balance:c}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import Ts from"swr";import{erc20Abi as Is,formatEther as Cs,formatUnits as Es,isAddress as ao,zeroAddress as Ss}from"viem";import{defaultChainId as xs}from"@berachain/config/internal";import{useBeraWallet as vs,usePublicClient as Bs}from"@berachain/wagmi/hooks";import Rs from"swr/immutable";import{isAddress as ks,zeroAddress as ws}from"viem";import{usePublicClient as Ps}from"@berachain/wagmi/hooks";var so=(e,t)=>{let r=Ps({chainId:e.chainId}),o=e?.address&&r&&ks(e.address)?["useTokenInformation",e.address,e.chainId]:null,n=Rs(o,async([s,a])=>k(a,"BERA")?{address:ws,decimals:H.decimals,name:H.name,symbol:H.symbol}:(y(r),await X({address:a,publicClient:r})),{...t?.opts});return{...n,refresh:()=>n?.mutate?.()}};function io({address:e,owner:t,chainId:r=xs},o){let n=e;k(n,"ETH")&&(n=Ss);let s=Bs({chainId:r}),{address:a}=vs(),i=t??a,l=(o?.opts?.isEnabled??!0)&&s&&i&&ao(i)&&n&&ao(n)?["usePollBalance",i,n,r]:null,{data:u,isLoading:m}=so({address:n,chainId:r}),p=k(n,"BERA"),{isLoading:d,data:c,error:f,...g}=Ts(l,async([,h,b])=>(y(s),k(b,"BERA")?await s.getBalance({address:h}):await s.readContract({address:b,abi:Is,functionName:"balanceOf",args:[h]})),{refreshInterval:1e4}),A=!f&&c?k(n,"BERA")?Cs(c):u&&!m?Es(c,u.decimals):void 0:void 0,R={balance:c??0n,formattedBalance:A??"0",address:n,decimals:p?H.decimals:u?.decimals??0,symbol:p?H.symbol:u?.symbol??"",name:p?H.name:u?.name??""};return{...g,refresh:()=>{g.mutate()},isLoading:d||p?m:!1,error:f||!p?f:void 0,data:R}}var kf=({pool:e,vaultAddress:t},r)=>{let{data:o,...n}=io({address:e?.address}),{data:s,refresh:a}=no({stakingToken:e?.address,rewardVaultAddress:t??e?.rewardVault?.vaultAddress},r),i=e?Number.parseFloat(e?.dynamicData?.totalShares??"0"):0,l=e?.dynamicData?.totalLiquidity?Number(e?.dynamicData?.totalLiquidity??0):null,u=i&&l?l/Number(i):0,m=e?.tokens?.map(p=>({address:p.address,ratio:i?Number(p.balance)/Number(i):0}));return{data:{lpTokenPrice:u,lpBalance:o?{...o,usdValue:o?Number(o.formattedBalance)*u:void 0}:void 0,tokenBalances:e?.tokens?.map(p=>{let d=m?.find(g=>Os(g.address,p.address))?.ratio??0,c=d?lo(o?.formattedBalance??"0").times(d):lo(0),f=Number(p.balanceUSD)/Number(p.balance);return{balance:c?.isGreaterThan(0)?BigInt(c.times(10**p.decimals).toFixed(0).toString()):0n,formattedBalance:c.toString(),address:p.address,usdValue:Number.isNaN(f)||!c?void 0:Number.parseFloat(c.toString())*f}}),stakedBalance:s?.address?{address:s.address,balance:s.balance,formattedBalance:uo(s.balance),usdValue:Number(uo(s.balance))*u}:void 0},...n,refresh:()=>{n.refresh?.(),a()}}};import{useMemo as mo}from"react";import{ZERO_ADDRESS as Us}from"@berachain-foundation/berancer-sdk";import Hs from"bignumber.js";import{isAddressEqual as Vs,parseUnits as co}from"viem";import Ds from"swr";import{useBeraWallet as Ls,usePublicClient as Ns}from"@berachain/wagmi/hooks";var po=(e,t)=>{let r=Ns(),{address:o}=Ls(),n=r&&o&&e?.tokens&&e?.spender?["usePollAllowances",o,e?.tokens,e?.spender]:null,s=Ds(n,async([,a,i,l])=>fr({tokens:i,account:a,spender:l,publicClient:r}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s?.mutate?.()}};function Ws({amount:e,decimals:t,slippage:r}){let o=co(e,t),n=co((r??0).toString(),t);return o+o*n/BigInt(100*10**t)}var _s=(e,t,r)=>{let o=mo(()=>e.filter(l=>l.address!==Us).filter(l=>l!==void 0).filter(l=>Hs(l.amount).gt(0)),[e]),{data:n,refresh:s,isLoading:a}=po({spender:t,tokens:o});return{needsApproval:mo(()=>n?.map(l=>{let u=o.find(p=>Vs(p.address,l.address));if(!u)throw new x({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,tokens:o}});let m=Ws({...u,slippage:r});if(l.allowance===0n||l.allowance<m)return{...l,maxAmountIn:m}}).filter(l=>l!==void 0)??[],[n,r,o]),refresh:s,isLoading:a}};import{useMemo as Ks}from"react";import qs from"swr/immutable";import{formatUnits as $s,isAddress as Zs}from"viem";import{usePublicClient as zs}from"@berachain/wagmi/hooks";import Qs from"swr/immutable";import{isAddress as Ys}from"viem";import{usePublicClient as Ms}from"@berachain/wagmi/hooks";var fo=(e,t)=>{let r=Ms(),o=r&&e.addresses?["useMultipleTokenInformation",e.addresses]:null,n=Qs(o,async([,s])=>(y(r),Promise.all(s.map(async a=>{if(!a||!Ys(a,{strict:!1}))throw new Error("Invalid address");let i=await X({address:a,publicClient:r});if(!i)throw new Error(`Token ${a} not found`);return i}))),{...t?.opts});return{...n,refresh:()=>n?.mutate?.()}};import Fs from"swr";import{useContext as Gs}from"react";function Ne(){let e=Gs(Pt);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 Ue({addressIn:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:r}=Ne(),o=e?.some(a=>r?.findIndex(i=>k(i,a))===-1)?e:r?.map(a=>a.address),n=o&&(t.opts?.isEnabled??!0)?["useTokenCurrentPrices",o.map(a=>a.toLowerCase())]:null,s=Fs(n,async([,a])=>cr({addressIn:a}),t.opts);return{...s,refresh:()=>void s.mutate()}}function js(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return Zs(t)&&t?["useOnChainPoolData",t]:null}function go(e){let t=zs(),r=e?.slice(0,42),o=js({poolId:e}),{data:n,error:s,isLoading:a,mutate:i}=qs(t?o:null,async([,c])=>St({poolId:c,publicClient:t})),{data:l,isLoading:u}=fo({addresses:n?.poolTokens[0]}),{data:m,isLoading:p}=Ue({addressIn:n?.poolTokens[0]});return{data:Ks(()=>{if(!n||!l)return;let c={address:r.toLowerCase(),id:e.toLowerCase(),type:n.type,factory:n.factory,totalShares:n.totalSupply,totalLiquidity:"0",swapFee:n.swapFee,createTime:0,name:n.name,tokens:l.map((g,A)=>({address:g.address.toLowerCase(),name:g.name,decimals:g.decimals,symbol:g.symbol,index:A,weight:n.weights?.[A]??void 0,balance:$s(BigInt(n.poolTokens[1][A]),g.decimals),token:{__typename:"Token",token:g,latestUSDPrice:m?.[g.address]}})),amplificationParameter:n?.amplificationParameter&&{currentFormattedValue:Number(n.amplificationParameter[0])/Number(n.amplificationParameter[2])}},f=c.tokens?.reduce((g,A)=>{let R=Number(m?.[A.address.toLowerCase()]?.price??0);return R?g+R*Number(A.balance):g},0);return c.totalLiquidity=f?.toString()??"",c},[n,l,m,r,e]),error:s,isLoading:a||u||p,mutate:i,refresh:()=>i()}}import Js from"swr";import{useBeraWallet as Xs,usePublicClient as ea}from"@berachain/wagmi/hooks";var ta=e=>{let{address:t}=Xs(),r=ea(),o=t&&r?["usePollPoolCreationRelayerApproval",t,r.chain.id]:null,n=Js(o,async([,a])=>{y(r);let{config:i}=P({chainId:r.chain.id});return await r.readContract({address:i.bex.vault,abi:oe,functionName:"hasApprovedRelayer",args:[a,i.bex.poolCreationHelper]})},{...e?.opts});return{...n,refreshPoolCreationApproval:()=>{n.mutate()}}};import{useMemo as ra}from"react";import oa from"swr";function na({poolId:e}){return e?["usePool-subgraph",e]:null}var fg=({poolId:e})=>{let t=oa(na({poolId:e}),async([,i])=>Bt({poolId:i}),{refreshInterval:1e5}),r=jr({poolId:e}),{data:o,isLoading:n,refresh:s}=go(e);return{data:[ra(()=>{if(!t.data)return o;let i={...t.data};return o&&(i.swapFee=o.swapFee,i.totalShares=o.totalShares,i.createTime=o.createTime??i.createTime),i},[o,t]),r.data,o],isLoading:r.isLoading||t.isLoading||n,isError:r.error||t.error,refresh:()=>{r.refresh(),t.mutate(),s()}}};import sa from"swr/immutable";var bg=({poolId:e,typeInArray:t})=>sa(e?["usePoolEvents",e,t]:null,async([,r,o])=>xt({poolId:r,typeInArray:o}),{refreshInterval:18e4});import aa from"swr";var Pg=({poolId:e,...t},r)=>{let{config:o}=P(t),s=aa(e?["usePoolHistoricalData",e]:null,async([,a])=>await vt({poolId:a,chain:o.bex.chainName}),r?.opts);return{...s,refresh:()=>void s.mutate()}};import{useMemo as yo}from"react";import ia from"swr";import{useBeraWallet as la}from"@berachain/wagmi/hooks";var ua=({query:e}={})=>["useAllPools",e],vg=(e,t)=>{let{address:r}=la(),{data:o,isLoading:n,mutate:s}=zr({userAddress:r,chain:e.chain}),{data:a,isLoading:i,mutate:l}=ia(ua({query:e}),async([p,d])=>fe(d),{refreshInterval:18e4,...t?.opts}),u=yo(()=>{if(!a||!o?.pools?.length)return a?.pools??[];let p=Object.fromEntries(o.pools.map(d=>[d.id.toLowerCase(),d]));return a.pools.map(d=>({...d,...p[d.id.toLowerCase()]||{}})).filter(Boolean)},[a,o]),m=yo(()=>({page:Math.ceil((e?.skip??0)/(e?.first??10)),pageSize:e?.first,count:Math.ceil((a?.count??0)/(e?.first??10))}),[a,e.skip,e.first]);return{pools:u??[],walletPools:a?.pools??[],isLoading:i||n,refresh:()=>{l(),s()},pagination:m}};import Ta from"swr";import{useBeraWallet as Ia,usePublicClient as So}from"@berachain/wagmi/hooks";import{useCallback as wo}from"react";import{getPublicClient as Po}from"@wagmi/core";import ka from"swr";import{isAddress as wa,parseUnits as To}from"viem";import{defaultChainId as Io}from"@berachain/config/internal";import{useBeraWallet as Co,useConfig as Eo}from"@berachain/wagmi/hooks";import{ethAddress as da,zeroAddress as ca}from"viem";import{erc20Abi as pa,ethAddress as ma}from"viem";var He=async({fromAddress:e,amountIn:t,tokenIn:r,chainId:o,ensoClient:n,bundle:s,publicClient:a})=>{let i=[];if(r!==ma){let l=await n.getApprovalData({fromAddress:e,tokenAddress:r,chainId:o,amount:t}),u=!0;a&&(u=await a.readContract({address:r,abi:pa,functionName:"allowance",args:[e,l.spender]})<BigInt(t)),u&&i.push({to:l.tx.to,data:l.tx.data,value:l.tx.value,gasLimit:BigInt(l.gas)})}return i.push({to:s.tx.to,data:s.tx.data,value:s.tx.value,gasLimit:BigInt(s.gas)}),i};async function Ao({fromAddress:e,amountIn:t,tokenIn:r,loanToken:o,bendVault:n,rewardVault:s,chainId:a,ensoClient:i,destinationChainId:l,slippage:u,publicClient:m}){if(!e)throw new E({property:"fromAddress",value:e,expected:"string"});o===ca&&(o=da);let p=[{protocol:"enso",action:"route",args:{tokenIn:r,tokenOut:o,amountIn:t,slippage:u*100}}];l&&l!==a&&(p[0].args={...p[0].args,destinationChainId:l,refundReceiver:e}),p.push({protocol:"erc4626",action:"deposit",args:{amountIn:{useOutputOfCallAt:0},tokenIn:o,primaryAddress:n,tokenOut:n}}),s&&p.push({protocol:"enso",action:"balance",args:{token:n}},{protocol:"erc20",action:"approve",args:{amount:{useOutputOfCallAt:2},spender:s,token:n}},{protocol:"enso",action:"call",args:{address:s,args:[e,{useOutputOfCallAt:2}],method:"stakeOnBehalf",abi:"function stakeOnBehalf(address account, uint256 amount) external"}},{protocol:"enso",action:"balance",args:{token:s}});let d=await i.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:a,routingStrategy:"router"},p),c=await He({fromAddress:e,amountIn:t,tokenIn:r,chainId:a,ensoClient:i,bundle:d,publicClient:m});return{bundle:d,transactions:c}}import{ethAddress as fa,zeroAddress as ga}from"viem";async function bo({fromAddress:e,amountIn:t,tokenIn:r,tokenOut:o,chainId:n,ensoClient:s,destinationChainId:a,slippage:i,publicClient:l}){if(!e)throw new E({property:"fromAddress",value:e,expected:"address"});o===ga&&(o=fa);let u={protocol:"enso",action:"route",args:{tokenIn:r,tokenOut:o,amountIn:t,slippage:i*100}};a&&a!==n&&(u.args={...u.args,destinationChainId:a,refundReceiver:e});let m=await s.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:n,routingStrategy:"router"},[u]),p=await He({fromAddress:e,amountIn:t,tokenIn:r,chainId:n,ensoClient:s,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{EnsoClient as ya}from"@ensofinance/sdk";import{appConfig as Aa}from"@berachain/config/internal";var ba=process.env.NODE_ENV!=="development"&&process.env.NODE_ENV!=="test";function ho({useProxy:e=ba,...t}={}){let{config:r}=P(t);return new ya({baseURL:e?`${r.bex.aggregatorsProxyUrl}/enso/api/v1/`:void 0,apiKey:e?"":Aa.apiKeys.public.enso})}import{captureException as ft}from"@sentry/nextjs";import{getChains as ha,multicall as Ra}from"@wagmi/core";import{formatUnits as Ro}from"viem";async function ko({account:e,wagmiConfig:t,chainId:r,ensoClient:o}){let s=(await o.getBalances({useEoa:!0,chainId:r??"all",eoaAddress:e})).map(u=>({name:u.name,symbol:u.symbol,decimals:u.decimals,address:u.token,logoURI:u.logoUri,balance:BigInt(u.amount),formattedBalance:Ro(BigInt(u.amount),u.decimals),chainId:Number(u.chainId),price:Number(u.price)})),a=Object.groupBy(s,u=>u.chainId??0),i=await Promise.allSettled(Object.entries(a).map(async([u,m])=>{if(!m)return;let p=ha(t).find(A=>A.id===Number(u));if(!p)return;let c=p.contracts?.multicall3?.address;if(!c)return ft(new E({property:"multicallAddress",value:c,expected:"Address",chainId:Number(u)})),m;let f=await Ra(t,{chainId:Number(u),contracts:m.map(A=>gr({token:A,account:e,multicallAddress:c})),allowFailure:!0}),g=[];for(let A=0;A<m.length;A++){let R=m[A];f[A].status==="success"?g.push({...R,balance:f[A].result,formattedBalance:Ro(f[A].result,R.decimals)}):(console.error("error getting balance",f[A].error),ft(qe({cause:f[A].error})),g.push(R))}return g})),l=[];for(let u of i)u.status==="fulfilled"?l.push(...u.value??[]):ft(qe({cause:u.reason}));return l.sort((u,m)=>{let p=Number(u.formattedBalance)*(u.price??0);return Number(m.formattedBalance)*(m.price??0)-p})}function Pa({ensoClient:e,chainId:t},r){let{address:o}=Co(),n=Eo(),s=!!o&&wa(o),i=ka(s&&n?["useEnsoBalances",o,t]:null,async([,l,u])=>ko({account:l,wagmiConfig:n,chainId:u??"all",ensoClient:e}),{refreshInterval:1e4,isEnabled:s,...r?.opts});return{...i,refresh:()=>i.mutate()}}function ie({chainId:e}){let{address:t}=Co(),r=Eo(),o=ho(),{data:n,refresh:s}=Pa({ensoClient:o,chainId:e}),a=wo(async({tokenIn:l,tokenOut:u,amount:m,slippage:p})=>{j(t,"fromAddress"),j(l?.address,"tokenInAddress"),ne(l?.chainId,"tokenInChainId");let d=Po(r,{chainId:l.chainId});y(d);let c=To(m,l.decimals).toString();return bo({fromAddress:t,amountIn:c,tokenIn:l?.address,tokenOut:u,chainId:l.chainId,ensoClient:o,destinationChainId:Io,slippage:p,publicClient:d})},[t,o,r]),i=wo(async({tokenIn:l,amount:u,loanToken:m,bendVault:p,rewardVault:d,slippage:c})=>{j(t,"fromAddress"),j(l?.address,"tokenInAddress"),ne(l?.chainId,"tokenInChainId");let f=Po(r,{chainId:l.chainId});y(f);let g=To(u,l.decimals).toString();return Ao({fromAddress:t,amountIn:g,tokenIn:l.address,loanToken:m,bendVault:p,rewardVault:d,chainId:l.chainId,ensoClient:o,destinationChainId:Io,slippage:c,publicClient:f})},[t,o,r]);return{tokens:n,getBendTransactionRequests:i,getZapTransactionRequests:a,refreshTokens:s}}function by({tokenIn:e,loanTokenAddress:t,loanTokenPrice:r,bendVault:o,rewardVault:n,amount:s,slippage:a,chainId:i},l){let{tokens:u,refreshTokens:m}=ie({chainId:i}),{data:p,error:d}=xo({tokenIn:e,loanTokenAddress:t,loanTokenPrice:r,bendVault:o,rewardVault:n,amount:e?.formattedBalance,slippage:a,chainId:e?.chainId},l),c=p?.transactions?.reduce((R,h)=>R+BigInt(h.value??0n),0n)??0n,f=u?.find(R=>k(R,"ETH")&&R.chainId===e?.chainId),g=BigInt(c)-BigInt(f?.balance??0n),A=xo({tokenIn:e,loanTokenAddress:t,loanTokenPrice:r,bendVault:o,rewardVault:n,amount:s,slippage:a,chainId:i},l);return{...A,nativeFee:g,error:d||A.error,tokens:u,refresh:()=>{A.mutate(),m()}}}function xo({tokenIn:e,loanTokenAddress:t,loanTokenPrice:r,bendVault:o,rewardVault:n,amount:s,slippage:a,chainId:i},l){let{address:u}=Ia(),{getBendTransactionRequests:m}=ie({chainId:i}),p=!!e&&!!t&&!!o&&!!s&&!!u&&!k(t,e?.address)&&e.chainId&&Number(s)>0&&!!a,d=So({chainId:i}),c=So();return Ta(p?["useBendTransactionRequests",e,t,r,o,n,s,a]:null,async([,g,A,R,h,b,T,w])=>{if(!d||!c)throw new E({property:"publicClient",value:d,expected:"PublicClient"});let I=await m({amount:T,tokenIn:g,loanToken:A,bendVault:h,rewardVault:b,slippage:w}),C=I.bundle.amountsOut,v=b?b.toLowerCase():h.toLowerCase(),M=C[v],W=await ce({sharesAmount:BigInt(M),vaultAddress:h,publicClient:c}),O=g?.price&&R?Lt(g?.price?.toString(),R?.toString(),T,W.formatted):void 0;return{supplyAmount:W,priceImpact:O,...I}},{...l?.opts,refreshInterval:1e5})}import Ca from"swr";var Py=({tokenIn:e,tokenOut:t,amount:r,slippage:o,chainId:n})=>{let{getZapTransactionRequests:s,refreshTokens:a,tokens:i}=ie({chainId:n}),l=!!e&&!!t&&!!r&&Number(r)>0&&!!o,m=Ca(l?["useZapTransactionRequests",e,t,r,o]:null,async([,p,d,c,f])=>(ne(p,"tokenIn"),j(d?.address,"tokenOutAddress"),Ze(c,"amount"),Ze(f,"slippage"),s({amount:c,tokenIn:p,tokenOut:d.address,slippage:f})),{refreshInterval:1e5,isEnabled:l});return{...m,tokens:i,refresh:()=>{m.mutate(),a()}}};import{useCallback as gt,useEffect as Ba,useState as Oa}from"react";import Ea from"gray-matter";import{encodeFunctionData as We,erc20Abi as Sa,parseAbiItem as xa,toHex as va}from"viem";function Ve(e){return Object.values(e).some(t=>Array.isArray(t)?t.some(r=>typeof r=="object"&&r!==null?Ve(r):!!r):typeof t=="object"&&t!==null?Ve(t):!!t)}var vo=({proposal:e,currentTopic:t,onError:r})=>{let o=Dt(e,t),n=[];if(o.actions=e.actions.map((i,l)=>{let u={};if(u.target=N({fieldOrType:"address",value:i.target}),i.type==="custom-action")if(i.input==="ABI")if(u.ABI=N({fieldOrType:"abi",value:i.ABI}),!i.functionSignature)u.functionSignature="Required";else try{let p=xa(i.functionSignature);p.type!=="function"?(console.error("parsedSignatureAbi is not a function",p),u.functionSignature="Invalid ABI"):(u.args=p.inputs.map((d,c)=>{try{return"components"in d?N({fieldOrType:d.type,value:i.args?.[c],components:d.components}):N({fieldOrType:d.type,value:i.args?.[c]})}catch{return null}}),u.args.some(d=>d)||(n[l]=We({abi:[p],args:i.args})))}catch{u.functionSignature="Invalid ABI"}else if(i.input==="rawCalldata")u.rawCalldata=N({fieldOrType:"hex",value:i.rawCalldata}),n[l]=i.rawCalldata;else if(i.input==="message")u.message=N({fieldOrType:"string",value:i.message}),n[l]=va(i.message);else throw new Error("Invalid input type");else if(i.type==="whitelist-reward-vault"||i.type==="blacklist-reward-vault"){if(u.vault=N({fieldOrType:"address",value:i.vault}),!u.vault){let p=i.type==="whitelist-reward-vault";n[l]=We({abi:K,functionName:"setVaultWhitelistedStatus",args:[i.vault,p,""]})}}else i.type==="whitelist-reward-vault-incentive"?(u.token=N({fieldOrType:"address",value:i.token}),u.minIncentiveRate=N({fieldOrType:"uint256",value:i.minIncentiveRate}),u.managerAddress=N({fieldOrType:"address",value:i.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(n[l]=We({abi:ue,functionName:"whitelistIncentiveToken",args:[i.token,BigInt(i.minIncentiveRate),i.managerAddress]}))):i.type==="erc20-transfer"&&(u.amount=N({fieldOrType:"uint256",value:i.amount}),u.to=N({fieldOrType:"address",value:i.to}),!u.amount&&!u.to&&(n[l]=We({abi:Sa,functionName:"transfer",args:[i.to,BigInt(i.amount)]})));return Ve(u)?u:null}),r?.(o),Object.getOwnPropertyNames(o).map(i=>o[i]).some(i=>Array.isArray(i)?i.filter(l=>l).length>0:i===null?!1:!!i)){console.warn("Proposal has errors",o);return}if(n.length===0)throw new Error("No actions submitted in proposal");let s=new URL(e.forumLink),a=Ea.stringify(e.description,{title:e.title,topics:Array.from(e.topic.values()),forumLink:s.toString(),version:"1.0.0","content-encoding":"utf-8","content-type":"text/markdown",actions:e.actions.map(i=>{let l={type:i.type};return i.type==="custom-action"&&(l.inputType=i.input),l})});return[e.actions.map(i=>i.target),e.actions.map(i=>i.value??0n),n,a]};var Bo={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},Da=({initialData:e={},currentTopic:t,onError:r})=>{let[o,n]=Oa({title:"",description:"",forumLink:"",actions:[Bo],...e,topic:new Set});Ba(()=>{n(l=>({...l,topic:new Set([t.id])}))},[t]);let s=gt(()=>{n(l=>({...l,actions:[...l.actions,Bo]}))},[]),a=gt(l=>{n(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[n]),i=gt(()=>o?vo({proposal:o,currentTopic:t,onError:r}):void 0,[o,t]);return{proposal:o,setProposal:n,addProposalAction:s,removeProposalAction:a,computeParamsAndErrors:i}};import Ua from"swr/immutable";import{formatUnits as Ha}from"viem";import{useBeraWallet as Va,usePublicClient as Wa}from"@berachain/wagmi/hooks";import La from"swr/immutable";import{usePublicClient as Na}from"@berachain/wagmi/hooks";var Oo=({proposalId:e})=>{let t=Na();return La(t&&e?["useProposalSnapshot",e]:null,async([,o])=>{y(t);let{config:n}=P({chainId:t.chain.id});return(await t.readContract({abi:_,address:n.governance.governor,functionName:"proposalSnapshot",args:[BigInt(o)]})).toString()})};var zy=e=>{let{address:t}=Va(),r=Wa(),o=e.wallet||t,{data:n}=Oo({proposalId:e.proposalId}),s=e.timepoint||n;return Ua(s&&r&&o?["useGetPastVotes",s,o]:null,async([,i,l])=>{y(r);let{config:u}=P({chainId:r.chain.id});if(Number(i)>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(i)]});return Ha(m,18)})};import _a from"swr";import{isAddress as Qa}from"viem";import{useBeraWallet as Ya,usePublicClient as Ma}from"@berachain/wagmi/hooks";var nA=({proposalId:e,wallet:t})=>{let{address:r}=Ya(),o=Ma(),n=t||r;return _a(o&&n&&Qa(n)?["useHasVoted",e,n]:null,([,s,a])=>{y(o);let{config:i}=P({chainId:o.chain.id});return o.readContract({address:i.governance.governor,abi:_,functionName:"hasVoted",args:[BigInt(s),a]})})};import Ga from"swr";import{usePublicClient as Fa}from"@berachain/wagmi/hooks";var Do="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var cA=({account:e,...t})=>{let r=Fa(),{config:o}=P(t);return Ga(e&&r?["useCancellerRole",e]:null,async([,s])=>(y(r),await r.readContract({abi:le,address:o.governance.timelock,functionName:"hasRole",args:[Do,s]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as Lo,useMemo as Ka,useState as qa}from"react";import $a from"swr/infinite";import{Proposal_OrderBy as Za,ProposalStatus as V}from"@berachain/graphql/governance";var No=10,za=e=>{switch(e){case V.QuorumNotReached:return[V.Active,V.Pending];case V.PendingQueue:case V.Defeated:return[V.Active];case V.PendingExecution:return[V.InQueue];default:return[e]}};function ja(e,t={}){let r=2*(t.perPage??No);return(o,n)=>{if(o!==0&&n&&n.length<r)return null;let s=t.status_in?.flatMap(za).filter((a,i,l)=>l.indexOf(a)===i);return["usePollAllProposals",o,e,t.where,s,t.orderBy,t.orderDirection,r,t.text]}}function hA(e,t){let r=t?.autoRefresh??!1,o=e.perPage??No,n=2*o,s=ja(e.topic,e);async function a(c){if(!c)return[];let[,f,g,A,R,h,b,T,w]=c;return(await Ot({where:{topics_contains:[g],status_in:R?.length?R:void 0,...A},orderBy:h,orderDirection:b,text:w,perPage:T,offset:f*T})??[]).filter(Boolean)}let i=$a(s,a,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=Ka(()=>{if(!i.data)return[];let c=i.data.flat().filter(g=>g?e.status_in?.length?e.status_in.includes(g.status):!0:!1).sort((g,A)=>{if(!e.text)return 0;if(e.orderBy===Za.CreatedAt){let R=Number(A.createdAt)-Number(g.createdAt);return e.orderDirection==="asc"?R:-R}return 0}),f=[];for(let g=0;g<c.length;g+=o)f.push(c.slice(g,g+o));return f},[i.data,e,o]),u=i.data?.[i.data.length-1],m=!!u&&u.length===n,[p,d]=qa(Date.now()/1e3);return Lo(()=>{if(!r)return;let c=setInterval(()=>{d(Date.now()/1e3)},1e4);return()=>clearInterval(c)},[r]),Lo(()=>{if(!i.data)return;let c=!1;for(let f of i.data.flat()){switch(f.status){case V.Pending:p>=Number(f.voteStartAt)&&(c=!0);break;case V.Active:p>=Number(f.voteEndAt)&&(c=!0);break;case V.InQueue:Date.now()/1e3+1>=Number(f.queueEnd)&&(c=!0);break;default:break}if(c)break}c&&i.mutate()},[i.data,p]),{...i,data:l,hasMore:m}}import{useEffect as Uo,useState as Ja}from"react";import Xa from"swr";import{ProposalStatus as yt}from"@berachain/graphql/governance";import{usePublicClient as ei}from"@berachain/wagmi/hooks";var EA=(e,t)=>{let r=t?.autoRefresh??!1,o=ei(),s=Xa(e&&o?["usePollProposal",e]:null,([,l])=>(y(o),Ht({proposalId:l,client:o})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[a,i]=Ja(Date.now());return Uo(()=>{if(!r)return;let l=setInterval(()=>{i(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),Uo(()=>{if(s.data!==void 0)switch(s.data.status){case yt.Pending:a>=Number(s.data.voteStartAt)&&s.mutate();break;case yt.Active:a>=Number(s.data.voteEndAt)&&s.mutate();break;case yt.InQueue:Date.now()/1e3+1>=Number(s.data.queueEnd)&&s.mutate();break}},[s.data?.status,a]),{...s,refresh:()=>s?.mutate?.()}};import ti from"swr";import{formatEther as ri}from"viem";import{usePublicClient as oi}from"@berachain/wagmi/hooks";var LA=e=>{let t=oi(),o=ti(t?["usePollProposalThreshold",e]:null,async([,n])=>{y(t);let s=await t.readContract({address:n,abi:_,functionName:"proposalThreshold"});return{votesThreshold:ri(s)}},{refreshInterval:18e4});return{...o,refresh:o.mutate}};import ni from"swr/infinite";var _e=1e3,VA=(e,t)=>ni(si(e,t),async([r,o])=>Wt({variables:{...e,limit:_e,offset:_e*o}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),si=({...e},t)=>r=>r>Math.floor(t/_e)?null:["usePollProposalVotes",r,_e,e.proposalId,e.orderBy,e.orderDirection];import ai from"swr";import{formatEther as ii}from"viem";import{useBeraWallet as li,usePublicClient as ui}from"@berachain/wagmi/hooks";var KA=e=>{let{address:t}=li(),r=ui(),n=ai(t?["usePollUserDelegates",t]:null,async([,s])=>{y(r);let{config:a}=P({chainId:r.chain.id});if(!r||!s)throw new Error("usePollUserDelegates needs publicClient and account");let[i,l]=await Promise.all([r.readContract({address:a.tokens.bgt,abi:G,functionName:"delegates",args:[s]}),r.readContract({address:a.tokens.bgt,abi:G,functionName:"getVotes",args:[s]})]);return{delegate:i,currentVotes:ii(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...n,refresh:()=>n?.mutate?.()}};import pi from"swr";import{usePublicClient as mi,useTransactionReceipt as di}from"@berachain/wagmi/hooks";var jA=e=>{let{data:t}=di({hash:e}),r=mi();return pi(t&&r?["useProposalFromTx",e]:null,async([,s])=>{if(!t)throw new Error("Transaction not found");if(t.transactionHash!==s)throw new Error("Transaction hash mismatch");return Vt({tx:t,publicClient:r})})};import ci from"swr/immutable";import{usePublicClient as fi}from"@berachain/wagmi/hooks";var gi={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},ob=({proposalId:e,governorAddress:t})=>{let r=fi();return ci(t&&r&&e?["useProposalState",e]:null,async([,n])=>{y(r);let s=await r.readContract({abi:_,address:t,functionName:"state",args:[BigInt(n)]});return gi[s]})};import yi from"swr";import{usePublicClient as Ai}from"@berachain/wagmi/hooks";var bi={0:"unset",1:"waiting",2:"ready",3:"done"},ub=({proposalTimelockId:e,timelockAddress:t})=>{let r=Ai();return yi(t&&r&&e?["useProposalTimelockState",e,t]:null,async([,n,s])=>{y(r);let a=await r.readContract({abi:le,address:s,functionName:"getOperationState",args:[n]});return bi[a]},{refreshInterval:18e4})};import Ri from"swr";import{usePublicClient as ki}from"@berachain/wagmi/hooks";import{formatEther as hi}from"viem";async function At({at:e,publicClient:t,...r}){let{config:o}=P(r);y(t);let n=await t.readContract({address:o.governance.governor,abi:_,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return hi(n)}function hb({at:e},{isEnabled:t=!0}){let r=Math.floor(Date.now()/1e3),o=ki(),n=t&&o?["useQuorum",Number(e)>r?"now":e]:null,s=Ri(n,async([,a])=>a==="now"?At({publicClient:o}):At({at:a,publicClient:o}));return{...s,data:s.data?Number(s.data):void 0}}import Pi from"swr";import{usePublicClient as Ti}from"@berachain/wagmi/hooks";import wi from"swr";function ee({priceFeedMap:e},t){let r=e?Object.values(e):null,o=(t?.opts?.isEnabled??!0)&&r?["usePythLatestPrices",r]:null;return wi(o,async([s,a])=>await Kt({priceFeedId:a}))}var Ho=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},n)=>{let s=Ti(),{priceFeedMap:a,flags:i}=B(),{data:l}=ee({priceFeedMap:e?.address&&a?{[e.address]:a[e.address]}:void 0},{opts:{isEnabled:i.isPythWrapperEnabled&&!!e?.address}}),u=t&&e&&(i.isPythWrapperEnabled&&l?.prices.length||!i.isPythWrapperEnabled)?["useCappedGlobally",t,e,l,i.isPythWrapperEnabled,o]:null,m=Pi(u,async([p,d,c,f,g,A])=>A?!1:(y(s),await Mt({client:s,asset:c,amount:r?d:`-${d}`,isMint:r,latestPrices:f,isPythWrapperEnabled:g})),{...n?.opts,refreshInterval:0});return{...m,refresh:()=>void m.mutate()}};import Ii from"swr";import{usePublicClient as Ci}from"@berachain/wagmi/hooks";var Vo=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},n)=>{let s=Ci(),{collateralList:a,referenceCollateral:i}=B(),u=Ii(e&&t?["useCappedRelatively",e,t,a,i]:null,async([m,p,d,c,f])=>{if(o)return!1;if(y(s),!r){let g=`-${d}`;return f.address!==p?!1:(await Promise.all(c.map(R=>ze({client:s,asset:R.address,amount:g,isMint:r,referenceCollateral:f})))).some(R=>R)}return await ze({client:s,asset:p,amount:d,isMint:r,referenceCollateral:f})},{refreshInterval:0,...n?.opts});return{...u,refresh:()=>void u.mutate()}};import Ei from"swr";import{usePublicClient as Si}from"@berachain/wagmi/hooks";var Qb=({collateralList:e},t)=>{let r=Si(),n=Ei(r&&e?["useCollateralWeights",e]:void 0,async([s,a])=>(y(r),await Qt({client:r,collateralList:a})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};import{useMemo as bt}from"react";import te from"bignumber.js";import xi from"swr";import{useBeraWallet as vi,usePublicClient as Bi}from"@berachain/wagmi/hooks";var Wo=()=>{let e=Bi(),{address:t}=vi(),{collateralList:r}=B(),n=xi(t&&r&&e?["useHoneyBalances",t,r]:null,async([s,a,i])=>{y(e);let l=[...i??[],de({})];return(await ke({account:a,tokenList:l,publicClient:e}))?.reduce((p,d)=>(p[d.address]=d,p),{})},{refreshInterval:1e4});return{...n,refresh:()=>n.mutate()}};import Oi from"swr";import{usePublicClient as Di}from"@berachain/wagmi/hooks";var _o=e=>{let t=Di(),{collateralList:r}=B(),n=Oi(r&&t?["useHoneyVaultsBalance",r]:null,async([s,a])=>(y(t),await Ae({client:t,collateralList:a})),{...e?.opts,refreshInterval:1e5});return{...n,refresh:()=>void n.mutate()}};import Li from"swr";import{usePublicClient as Ni}from"@berachain/wagmi/hooks";var Qo=({collateral:e},t)=>{let r=Ni(),{priceFeedMap:o,flags:n}=B(),{data:s}=ee({priceFeedMap:e?.address?{[e.address]:o[e.address]}:void 0},{opts:{isEnabled:n.isPythWrapperEnabled&&!!e?.address}}),a=r&&e&&(n.isPythWrapperEnabled&&s?.prices.length||!n.isPythWrapperEnabled)?["useIsBadCollateralAsset",e,s,n.isPythWrapperEnabled]:null,i=Li(a,async([l,u,m,p])=>(y(r),await Yt({client:r,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...i,refresh:()=>void i.mutate()}};var Yo=({lowerThan:e,vaultsBalances:t,state:r,collateralList:o})=>{if(!(r.actionType==="mint")&&!r.isBasketModeEnabled){let s=t?.find(l=>l.address.toLowerCase()===r.collaterals[0].address.toLowerCase()),a=new te(s?.formattedBalance??"0").lte(e),i=o.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new te(u?.formattedBalance??"0").lte(e)});return{isLow:a,isLiquidityLowCollaterals:i}}return{isLow:!1,isLiquidityLowCollaterals:[]}},Ui=({vaultsBalances:e,redeemedVaultBalance:t,state:r,collateralList:o})=>{if(!(r.actionType==="mint")&&e&&t){let s=o.filter(a=>{let i=e.find(u=>u.address.toLowerCase()===a.address.toLowerCase()),l=r.toAmount[r.collaterals.indexOf(a)];return new te(i?.formattedBalance??"0").lt(l??"0")});return{isMore:!!s.find(a=>a.address.toLowerCase()===r.collaterals[0].address.toLowerCase()),isRedeemMoreThanLiquidityCollaterals:s}}return{isMore:!1,isRedeemMoreThanLiquidityCollaterals:void 0}};function Hi({state:e,honeyBalances:t,...r}){let{config:o}=P(r),n=e.actionType==="mint";return!n&&t?new te(e.fromAmount[0]).gt(t[o.honey.token]?.formattedBalance??"0"):n&&t&&e.isBasketModeEnabled!==void 0&&e.collaterals.length>0?e.isBasketModeEnabled?e.collaterals.some((s,a)=>{let i=e.fromAmount[a];return new te(t[s.address]?.formattedBalance).lt(i)}):new te(t[e.collaterals[0].address]?.formattedBalance).lt(e.fromAmount[0]):!1}var bh=({actionType:e,collaterals:t,fromAmount:r,toAmount:o,isBasketModeEnabled:n})=>{let s={actionType:e,collaterals:t,fromAmount:r,toAmount:o,isBasketModeEnabled:n},a=e==="mint",{data:i}=Qo({collateral:t[0]}),{collateralList:l}=B(),{isBlacklisted:u,isDepegged:m}=i??{isBlacklisted:!1,isDepegged:!1},{data:p}=Ho({asset:t[0],amount:a?r[0]:o[0],isMint:a,isBasketModeEnabled:n}),{data:d}=Vo({asset:t[0]?.address,amount:a?r[0]:o[0],isMint:a,isBasketModeEnabled:n}),{data:c}=Wo(),{data:f}=_o(),g=t[0]?.address,A=f?.find(I=>I.address.toLowerCase()===g.toLowerCase()),[R,h]=bt(()=>{let I=Yo({lowerThan:1,vaultsBalances:f,state:s,collateralList:l}),C=Yo({lowerThan:1e3,vaultsBalances:f,state:s,collateralList:l});return[I,C]},[f,s]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:T}=bt(()=>Ui({vaultsBalances:f,redeemedVaultBalance:A,state:s,collateralList:l}),[f,A,s,l]),w=bt(()=>Hi({state:s,honeyBalances:c}),[s,c]);return{isLiquidityDepleted:R.isLow,isLiquidityDepletedCollaterals:R.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:b,isRedeemMoreThanLiquidityCollaterals:T,isLowLiquidity:h.isLow,isLiquidityLowCollaterals:h.isLiquidityLowCollaterals,isBlacklisted:s.isBasketModeEnabled?!1:u,isDepegged:s.isBasketModeEnabled?!1:m,isCappedGlobally:p,isCappedRelatively:d,isExceedingBalance:w}};import Vi from"swr";function wh({days:e}){let t=Vi(["useHoneyChartData",e],async([r,o])=>await _t({days:o}));return{...t,refresh:()=>t.mutate()}}import Mo from"bignumber.js";import Wi from"swr";function Eh(){let e=Wi(["useHoneyGlobalData"],()=>Gt()),t=e.data?.honeySnapshots.reduce((r,o)=>new Mo(o.totalVolume).plus(r),new Mo(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as Yi,useReducer as Mi}from"react";import{formatUnits as Fo}from"viem";import{defaultChainId as Gi}from"@berachain/config/internal";import _i from"swr";import{usePublicClient as Qi}from"@berachain/wagmi/hooks";function Go({state:e},t){let r=Qi(),{priceFeedMap:o,flags:n,collateralList:s}=B(),{data:a}=ee({priceFeedMap:o},{opts:{isEnabled:n.isPythWrapperEnabled&&!!s.length}}),i=e.actionType==="mint",l=r&&e&&s.length>0&&(n.isPythWrapperEnabled&&a?.prices.length||!n.isPythWrapperEnabled)?["useIsBasketModeEnabled",i,a,n.isPythWrapperEnabled,s]:null,u=_i(l,async([m,p,d,c,f])=>(y(r),await be({client:r,isMint:p,collateralList:f,latestPrices:d,isPythWrapperEnabled:c})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e4});return{...u,data:u.data,refresh:()=>void u.mutate()}}var Fi={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function Ko(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return Ko({...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",n=e.collaterals.map((a,i)=>t.changedAsset===a.address?o?e.fromAmount[i]:e.toAmount[i]:r.collaterals[a.address]?Fo(r.collaterals[a.address],a.decimals):e.isBasketModeEnabled?"0":""),s=k(t.changedAsset,"HONEY",{chainId:Gi})?o?e.toAmount[0]:e.fromAmount[0]:r.honey?Fo(r.honey,18):e.isBasketModeEnabled?"0":"";return{...e,fromAmount:o?n:[s],toAmount:o?[s]:n}}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 Yh=()=>{let{collateralList:e}=B(),[t,r]=Mi(Ko,Fi,n=>({...n,collaterals:e})),{data:o}=Go({state:t});return Yi(()=>{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 Ki from"swr/immutable";import{usePublicClient as qi}from"@berachain/wagmi/hooks";var Zh=({pythPriceFeedCalldata:e,tokenListLength:t},r)=>{let o=qi(),n=(r?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:s=Nt(t),isLoading:a}=Ki(n,async([i,l])=>(y(o),await qt({client:o,priceFeedId:l})));return{QUERY_KEY:n,data:s,isLoading:a}};import{useMemo as $i}from"react";function Xh(e){return $i(()=>{if(e)return jt(e)},[e])}import Zi from"swr";import{formatEther as zi}from"viem";import{useBeraWallet as ji,usePublicClient as Ji}from"@berachain/wagmi/hooks";var Xi=e=>{let{address:t}=ji(),r=Ji(),n=Zi(t&&r?["useBgtUnstakedBalance",t]:null,async([,s])=>{y(r);let{config:a}=P({chainId:r.chain.id}),i=await r.readContract({address:a.tokens.bgt,abi:G,functionName:"unboostedBalanceOf",args:[s]});return zi(i)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...n,refresh:()=>n.mutate()}};import el from"swr";import{formatUnits as tl}from"viem";import{useBeraWallet as rl,usePublicClient as ol}from"@berachain/wagmi/hooks";var nl=()=>{let{address:e}=rl(),t=ol(),o=el(e&&t?["useClaimableFees",e]:null,async([,n])=>{y(t);let{config:s}=P({chainId:t.chain.id}),a=await lr({account:n,vaultAddress:s.pol.staker,publicClient:t});return tl(a,18)},{refreshInterval:18e4*2});return{...o,refresh:()=>o?.mutate?.()}};import sl from"swr";import{GetStakeBeraVaultEarningsByOwner as al}from"@berachain/graphql/pol/api";import{useBeraWallet as il}from"@berachain/wagmi/hooks";function hR({receiptToken:e},t){let{address:r}=il(),o=e.address&&r?["useEarnedStakedBeraVault",e.address,r]:null,n=sl(o,async([s,,a])=>(await $("api",{}).query({query:al,variables:{owner:a}})).data?.polGetStakeBeraVaultEarningsByOwner?.earnings,{refreshInterval:18e4,...t?.opts});return{...n,refresh:n.mutate}}import{GqlRewardVaultOrderBy as ml,GqlRewardVaultOrderDirection as dl}from"@berachain/graphql/pol/api";import ll from"swr";import{usePublicClient as ul}from"@berachain/wagmi/hooks";var pl=(e,t=!1)=>["useRewardVaults",e,t],ht=(e,t)=>{let r=pl(e.filter,e.onChainIncentives),o=ul(),n=ll(t?.opts?.isEnabled??!0?r:null,async([,s,a])=>await Jt({filter:s,publicClient:a?o:void 0}),{...t?.opts});return{...n,refresh:n.mutate}};var ER=(e={},{isEnabled:t=!0}={})=>{let r=ht({filter:{orderBy:ml.Apr,orderDirection:dl.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 cl from"swr";import{usePublicClient as fl}from"@berachain/wagmi/hooks";var qo=e=>{let t=fl(),r=cl(t?"usePollGlobalData":null,async()=>(y(t),Xt(t)),{revalidateOnFocus:!1,...e?.opts});return{...r,refresh:r.mutate}};import gl from"swr/immutable";var yl=()=>"usePollMarkets",UR=e=>{let t=yl(),r=gl(t,async()=>await er(),{...e?.opts});return{...r,refresh:()=>r.mutate()}};import Al from"swr/immutable";import{isAddress as $o}from"viem";import{usePublicClient as bl}from"@berachain/wagmi/hooks";function MR({receiptTokenAddress:e,account:t,version:r},o){let n=bl(),s=e&&$o(e)&&t&&n&&$o(t)&&r?["useQueuedBeraUnlock",e,t,r]:null,a=Al(s,async([,i,l,u])=>(y(n),await sr(i,l,n,u)),{refreshInterval:1e4,...o?.opts});return{...a,refresh:()=>a.mutate()}}import hl from"swr";import{isAddress as Rl}from"viem";import{usePublicClient as kl}from"@berachain/wagmi/hooks";var zR=({address:e},t)=>{let r=e?["useRewardTokenToBeraRate",e]:null,o=kl();return hl(r,async([n,s])=>{if(!s||!Rl(s))throw new E({property:"address",value:s,expected:"Address"});return y(o),rr({address:s,publicClient:o})},{...t?.opts})};import xl from"swr";import Pl from"swr";import{erc20Abi as Tl,formatUnits as Il,isAddress as Cl}from"viem";import{usePublicClient as El}from"@berachain/wagmi/hooks";import{erc20Abi as Qe,formatUnits as wl}from"viem";async function Ye({address:e,publicClient:t}){y(t);let[r,o,n,s]=await t.multicall({contracts:[{address:e,abi:Qe,functionName:"decimals"},{address:e,abi:Qe,functionName:"name"},{address:e,abi:Qe,functionName:"symbol"},{address:e,abi:Qe,functionName:"totalSupply"}],allowFailure:!0});return{address:e,decimals:r.result,name:o.result,symbol:n.result,totalSupply:s.result!==void 0?r.status==="success"?wl(s.result,r.result):s.result.toString():void 0}}var Sl=e=>e&&Cl(e)?["onChainRewardVault",e.toLowerCase()]:null,Zo=({address:e},t)=>{let r=El(),o=t.opts?.isEnabled??!0,n=Sl(e);return Pl(o&&r?n:null,async([,s])=>{y(r);let{config:a}=P({chainId:r.chain.id}),i=await Re({address:s,publicClient:r}),[l,u,m]=await Promise.all([he({address:s,stakingToken:i,publicClient:r}),r.readContract({address:a.pol.beraChef,abi:K,functionName:"isWhitelistedVault",args:[s]}),r.readContract({address:i,abi:Tl,functionName:"balanceOf",args:[s]})]),[p,d]=await Promise.all([Ye({address:i,publicClient:r}),Promise.all(l.map(c=>X({address:c.token,publicClient:r})))]);if(!p)throw new Error("Staking token not found");return{id:s,address:s,vaultAddress:s,stakingToken:{address:i,name:p.name??"",symbol:p.symbol??"",decimals:p.decimals??0},stakingTokenAmount:Il(m,p.decimals??18),isVaultWhitelisted:u,activeIncentives:l.map((c,f)=>({active:!!c.remainingAmount,remainingAmount:c.remainingAmount,remainingAmountUsd:"0",incentiveRate:c.incentiveRate,incentiveRateUsd:"0",tokenAddress:c.token,token:d[f]}))}})};var vl=e=>e?["useRewardVault",e.toLowerCase()]:null,gk=(e,t)=>{let r=vl(e),o=xl(r,async([a,i])=>or({address:i}),{...t?.opts}),n=t?.opts?.isEnabled??((!!o.error||!o.isLoading)&&!o.data),s=Zo({address:e},{opts:{...t?.opts,isEnabled:n}});return{data:s.data??o.data,error:s.error??o.error,isLoading:s.isLoading||o.isLoading,isValidating:s.isValidating??o.isValidating,refresh:()=>{o.mutate(),s.mutate()}}};import Bl from"swr";import{usePublicClient as Ol}from"@berachain/wagmi/hooks";function kk({address:e,stakingToken:t}){let r=Ol(),n=Bl(r&&e&&t?["useRewardVaultIncentives",e,t]:null,async([,s,a])=>(y(r),await he({address:s,stakingToken:a,publicClient:r})));return{...n,refresh:()=>n?.mutate?.()}}import Dl from"swr";import{usePublicClient as Ll}from"@berachain/wagmi/hooks";var Nl=(e,t)=>{let r=Ll(),n=Dl(r&&e?["useRewardVaultRewards",e]:null,async([,s])=>(y(r),await zt(s,r)),{...t?.opts});return{...n,refresh:()=>n?.mutate?.()}};import Ul from"swr";var vk=({range:e})=>{let r=Ul(e?["useStakedBeraSnapshots",e]:null,([,o])=>nr({range:o}));return{...r,refresh:()=>r.mutate()}};import Hl from"swr";import{useBeraWallet as Vl,usePublicClient as Wl}from"@berachain/wagmi/hooks";var _l=(e,t)=>{let{address:r}=Vl(),o=Wl(),n=r&&o&&e.vaultAddress?["useUserVaultInfo",r,e.vaultAddress]:null,s=Hl(n,async([,a,i])=>(y(o),ur({account:a,vaultAddress:i,publicClient:o})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import Ql from"swr";import{useBeraWallet as Yl,usePublicClient as Ml}from"@berachain/wagmi/hooks";var Gl=e=>{let{address:t}=Yl(),r=Ml(),n=Ql(t&&r?["useUserVaults",t]:null,async([,s])=>(y(r),await pr({account:s,publicClient:r})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...n,refresh:()=>n?.mutate?.()}};import Fl from"swr";import{usePublicClient as Kl}from"@berachain/wagmi/hooks";var Kk=e=>{let t=Kl();return Fl(e&&t?["useVaultAddress",e]:null,async([,o])=>{y(t);let[n]=await Promise.all([Re({address:o,publicClient:t})]);return{stakeToken:n,address:o}})};import ql from"swr";var zk=({vault:e,range:t,resolution:r})=>{let n=ql(e?["useVaultHistory",e,t,r]:null,([,s,a,i])=>mr({vault:s,range:a,resolution:i}));return{...n,refresh:()=>n.mutate()}};import $l from"swr";var Zl=(e,t)=>{let o=$l(e?["useVaultValidators",e]:null,async([,n])=>await dr({address:n}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{zeroAddress as zl}from"viem";function zo({address:e},t){let r=Ue({addressIn:e?[e]:void 0},t);return{...r,data:e?r.data?.[e.toLowerCase()]:void 0}}function sw(e){return zo({address:zl},e)}import{useMemo as jl}from"react";import Jl from"swr";import{useBeraWallet as Xl,usePublicClient as eu}from"@berachain/wagmi/hooks";function dw(e,t){let r=eu(),{address:o}=Xl(),{tokenList:n}=Ne(),s=e?.walletAddress??o,a=jl(()=>new Map((e?.tokens??n)?.map(u=>[u.address.toLowerCase(),u])??[]),[n,e?.tokens]),i=r&&n!==void 0&&s?["usePollWalletBalances",s,Array.from(a.values())]:null,l=Jl(i,async([,u,m])=>ke({account:u,tokenList:m,publicClient:r}),{refreshInterval:1e5,...t?.opts});return{...l,refresh:()=>l?.mutate?.()}}import tu from"swr/immutable";import{isAddress as ru,zeroAddress as ou}from"viem";import{usePublicClient as nu}from"@berachain/wagmi/hooks";var hw=(e,t)=>{let r=nu(),o=e?.address&&r&&ru(e.address)?["useStakingTokenInformation",e.address]:null,n=tu(o,async([s,a])=>k(a,"BERA")?{address:ou,decimals:H.decimals,name:H.name,symbol:H.symbol}:await Ye({address:a,publicClient:r}),{...t?.opts});return{...n,refresh:()=>n?.mutate?.()}};import su from"swr";import{erc20Abi as au}from"viem";import{usePublicClient as iu}from"@berachain/wagmi/hooks";function Iw({address:e}){let t=iu();return su(e&&t?["useTotalSupply",e]:null,([,r])=>(y(t),t.readContract({address:r,abi:au,functionName:"totalSupply",args:[]})))}import{useCallback as lu}from"react";import{useBeraWagmi as uu}from"@berachain/wagmi/hooks";function Bw(){let e=pe(),{account:t}=uu(),r=t?.wallet?.address;return lu(o=>{if(!r)throw new E({property:"address",value:r,expected:"Address"});e.addTransaction(r,o)},[e,r])}import{useEffect as pu,useState as mu}from"react";import{useBeraWallet as du}from"@berachain/wagmi/hooks";function Uw(){let e=pe(),{address:t}=du(),[r,o]=mu(()=>e&&t?e.getTransactions(t):[]);return pu(()=>{if(e&&t)return o(e.getTransactions(t)),e.onChange(()=>{o(e.getTransactions(t))})},[e,t]),r}import cu from"swr/immutable";import{useBlockNumber as fu,usePublicClient as gu}from"@berachain/wagmi/hooks";function Fw(e){let t=gu(),{config:r}=P({chainId:t?.chain.id}),{data:o,isLoading:n}=fu({cacheTime:ge(r.averageBlockTime)}),{data:s}=cu(o&&t&&Number(e)>0?["useBlockToTimestamp",e,o]:null,async([,i,l])=>(y(t),Zt({block:i,currentBlock:l,blockTime:a,publicClient:t}))),a=me();if(s)return Number(s.timestamp);if(!(n||!o))return Math.floor(Ut(Date.now())+a*(Number(e)-Number(o)))}import{useCallback as Jo,useReducer as yu}from"react";import{useBeraWagmi as Au,useConfig as bu}from"@berachain/wagmi/hooks";var Rt={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{...Rt};default:return e}};function hu({onlyPermissionless:e,onSuccess:t,onError:r,onLoading:o,onWarning:n,onSubmission:s}={}){let[a,i]=yu(jo,Rt),{account:l,onSmartAccountRejection:u}=Au(),m=bu(),p=l?.wallet?.isContract?6e4*10:12e4,d=Jo(()=>{i({type:"confirm_reset"})},[]),c=q("enableSimulateCalls"),f=Jo(g=>{if(e&&!g.permissionless){let A=new ir({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:g});throw n?.(A,g),r?.(A,g),A}return yr({wagmiConfig:m,...g,txConfirmationTimeout:p,enableSimulateCalls:c,onLoading(...A){i({type:"confirm_sending"}),g.onLoading?.(g),o?.(...A)},onWarning(...A){g.onWarning?.(A[0],g),n?.(...A)},onSubmission(...A){i({type:"confirm_submitting"}),g.onSubmission?.(A[0],g),s?.(...A)},onSuccess(...A){i({type:"confirm_receipt"}),g.onSuccess?.(A[0],g),t?.(...A)},onError(...A){i({type:"confirm_error"}),g.onError?.(A[0],g),A[0].reason==="AtomicReadyWalletRejectedUpgradeError"&&u(),r?.(...A)}})},[m,o,n,s,t,r,e,c]);return{isLoading:a.confirmState==="loading",isSubmitting:a.confirmState==="submitting",isSuccess:a.confirmState==="success",isError:a.confirmState==="fail",write:f,reset:d}}var Ru=hu;import ku from"swr/immutable";import{isAddress as wu,zeroAddress as Pu}from"viem";import{chainId as Tu}from"@berachain/config/internal";async function Iu(e){let t=await Tt({url:`https://api.routescan.io/v2/network/testnet/evm/${Tu}/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 uP=e=>ku(e&&wu(e)&&e!==Pu?["useGetVerifiedAbi",e]:null,()=>e?Iu(e):Promise.resolve(""),{});import{useCallback as Xo,useEffect as Cu,useState as Eu}from"react";function dP({key:e,defaultValue:t}){let r=Xo(()=>{if(typeof window>"u")return t;let a=window.history.state?.[e];return a!==void 0?a:t},[e,t]),[o,n]=Eu(r()),s=Xo(a=>{let i=r(),l=a instanceof Function?a(i):a,m={...window.history.state||{},[e]:l};window.history.replaceState(m,""),n(l)},[e,r]);return Cu(()=>{if(window.history.state?.[e]===void 0){let l={...window.history.state||{},[e]:t};window.history.replaceState(l,"")}},[e,t]),[o,s]}import{useEffect as Su,useRef as xu}from"react";function gP(e){let t=xu(void 0);return Su(()=>{t.current=e}),t.current}import vu from"swr";var Bu=({variables:e}={})=>["useAllValidators",e],RP=(e,t)=>{let{config:r}=P(e),o=vu(Bu({variables:e}),async([,n])=>await Ar({variables:{chain:r.bex.chainName,...n}}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>o.mutate()}};import Ou from"swr";function TP({allocation:e}){return Ou(e?["useApiEnrichedAllocation",e]:null,([,t])=>br({allocation:t}))}import Du from"swr";import{isHex as Lu}from"viem";var Nu=e=>e?["useApiValidator",e]:null,en=(e,t)=>{let r=Nu(e),o=t?.opts?.isEnabled??!0,n=Du(o&&e?r:null,async([,s])=>{if(!s||!Lu(s))throw new Error(`Invalid validator ID: ${s}`);return hr({id:s})},{...t?.opts});return{...n,refresh:()=>n.mutate()}};import Uu from"swr";import{usePublicClient as Hu}from"@berachain/wagmi/hooks";var tn=[{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 rn({publicClient:e,...t}){let{config:r}=P(t),o=await e.readContract({abi:tn,address:r.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),n=o.startBlock!==0n?await e.getBlock({blockNumber:o.startBlock}):{timestamp:0};return kr(o,Number(n.timestamp))}function WP(){let e=Hu();return Uu(e?["baselineRewardAllocation"]:null,()=>(y(e),rn({publicClient:e})))}import Vu from"swr";var Wu=({pubKey:e,first:t=1})=>{let o=Vu(e?["useDailyValidatorBlockStats",e,t]:null,async([,n,s])=>await Rr({pubKey:n,first:s}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}};import _u from"swr";import{usePublicClient as Qu}from"@berachain/wagmi/hooks";function Yu(e){let t=Qu(),o=_u(t?["useDefaultRewardAllocation"]:null,async()=>(y(t),await Pr({client:t})),{...e?.opts});return{...o,refresh:()=>o.mutate()}}import Mu from"swr/immutable";var Gu=({account:e},t)=>{let o=Mu(e?["useManagedValidatorByAccount",e]:null,async([,n])=>await Tr({account:n}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{useMemo as nn}from"react";import Ku from"swr";import{useBeraWallet as qu,usePublicClient as $u}from"@berachain/wagmi/hooks";import{zeroAddress as Fu}from"viem";async function on({client:e,pubKey:t,...r}){let{config:o}=P(r);try{let n=await e.readContract({address:o.pol.beraChef,abi:K,functionName:"valRewardAllocator",args:[t]});return n===Fu?null:n}catch(n){throw console.log("getValidatorRewardAllocatorAddress:",n),n}}function sn(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function Zu(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():sn(e,t)}function zu({pubKey:e,account:t},r){let o=$u(),n=q("mockValidatorOperator"),s=q("mockValidatorRewardAllocator"),a=o&&e?["useManagedValidatorRole",e]:null,{address:i}=qu(),l=t??i,u=Ku(a,async([,d])=>{y(o);let[c,f]=await Promise.all([Or({client:o,pubKey:d}),on({client:o,pubKey:d})]);return{operator:c??null,rewardAllocator:f}},{...r?.opts}),m=nn(()=>n||sn(l,u.data),[l,n,u.data]),p=nn(()=>s||Zu(l,u.data),[l,s,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import ju from"swr";import{keccak256 as Ju}from"viem";import{usePublicClient as Xu}from"@berachain/wagmi/hooks";var an=({pubkey:e},t)=>{let r=Xu(),o=e?["useOnChainValidator",e]:null,n=t.opts?.isEnabled??!0,s=ju(n&&r?o:null,async([,a])=>{y(r);let{config:i}=P({chainId:r.chain.id}),[l,u,m]=await Promise.all([r.readContract({address:i.depositContract,abi:kt,functionName:"getOperator",args:[a]}),r?.readContract({address:i.tokens.bgt,abi:G,functionName:"boostees",args:[a]}),r.readContract({address:i.pol.beraChef,abi:K,functionName:"getActiveRewardAllocation",args:[a]})]);return{id:Ju(a),pubkey:a,operator:l,votingPower:Number(u)}});return{...s,refresh:()=>{s.mutate()}}};import ep from"swr";import{usePublicClient as tp}from"@berachain/wagmi/hooks";var PT=({valPubKey:e,options:t})=>{let r=tp(),n=(t?.opts?.isEnabled??!0)&&r&&e?["useStakingPoolBatch",e]:null,s=ep(n,async([,a])=>(y(r),await Ir({client:r,valPubKey:a})),{refreshInterval:1e4,...t?.opts});return{...s,refresh:()=>s.mutate()}};import rp from"swr";import{GetUserValidatorInformation as op}from"@berachain/graphql/pol/subgraph";import{useBeraWallet as np}from"@berachain/wagmi/hooks";var sp=({account:e}={})=>{let{address:t}=np(),r=e??t;return rp(r?["useSubgraphUserValidators",r]:null,async([,n])=>{let s=$("pol.subgraph",{}),{data:a}=await s.query({query:op,variables:{address:n}});return a.userValidatorInformations})};import ap from"swr";import{useBeraWallet as ip,usePublicClient as lp}from"@berachain/wagmi/hooks";var up=e=>{let{address:t}=ip(),r=lp(),n=ap(r&&t?["useUserActiveValidators",t]:null,async([,s])=>await Er({account:s,publicClient:r}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...n,refresh:()=>n?.mutate?.()}};import pp from"swr";import{useBeraWallet as mp,usePublicClient as dp}from"@berachain/wagmi/hooks";var cp=({pubkey:e,...t})=>{let{address:r}=mp(),o=dp(),n=t.account??r,a=pp(n&&e?["useUserBoostsOnValidator",e,n]:null,async([,i,l])=>await Cr({account:l,pubkey:i,publicClient:o}),{refreshInterval:1e5});return{...a,refresh:()=>a.mutate()}};import{useCallback as fp,useMemo as gp}from"react";import{captureException as yp}from"@sentry/nextjs";import un from"swr";import{useBeraWallet as Ap}from"@berachain/wagmi/hooks";var ln=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 bp=()=>{let{address:e}=Ap(),r=un(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new x({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,n=gp(()=>{if(o){if(!Array.isArray(o)){yp(new x({message:"Incorrect aggregated incentives data receieved.",level:"error"}),{extra:{allRewards:o,account:e}});return}return ln(o)}},[o,e]),a=un(e&&o?["useUserClaimableIncentives",e,o]:null,async([,l,u])=>{if(!l)throw new E({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new E({message:"Incorrect aggregated incentives data receieved to calculate proofs.",property:"allRewards",value:u,expected:"Array",level:"error"});let m=new Set(u.map(d=>d.validator)),p=Array.from(m);return await Promise.all(p.map(async d=>({...await tr({account:l,validator:d,page:1,perPage:1e4}),validator:d})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),i=fp(()=>{r?.mutate(),a?.mutate()},[r,a]);return{...a,isLoading:r?.isLoading||a?.isLoading,tokenMap:n,refresh:i}};import hp from"swr/immutable";var jT=({account:e,validatorAddress:t})=>{let o=hp(e?["useUserStakingPositions",e,t]:null,async([n,s,a])=>{let i=await Sr(s);return a?i.filter(l=>l.validatorAddress.toLowerCase()===a.toLowerCase()):i});return{...o,refresh:()=>{o.mutate()}}};import{keccak256 as Rp}from"viem";function rI({pubkey:e},t){let{data:{validator:r,uptime:o}={},isLoading:n,error:s}=en(Rp(e),t),{data:a,isLoading:i,error:l}=an({pubkey:e},t);return{data:{uptime:o,validator:r||a?{...r,...a,operator:a?.operator??r?.operator,dynamicData:{activeBoostAmount:a?.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:a?.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:a?.id??r?.id,pubkey:a?.pubkey??r?.pubkey,metadata:a?.metadata??r?.metadata,rewardAllocationWeights:a?.rewardAllocationWeights??r?.rewardAllocationWeights??[]}:null},isLoading:n||i,error:s||l}}import kp from"swr";var wp=({pubkey:e,dayRange:t})=>{let o=kp(e&&t?["useValidatorAnalytics",e,t]:null,async([,n,s])=>await xr({pubkey:n,dayRange:s}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}};import Pp from"swr";import{usePublicClient as Tp}from"@berachain/wagmi/hooks";var Ip=(e,t)=>{let r=Tp(),n=Pp(r&&e?["useValidatorCommission",e]:null,async([,s])=>await vr({client:r,pubKey:s}),{...t?.opts});return{...n,refresh:()=>n.mutate()}};var Cp=e=>{let{data:t,isLoading:r}=qo(),o=me();return{data:t?Br(e,Number(t?.totalStakedBeraAmount),o):void 0,isLoading:r}};import Ep from"swr";import{usePublicClient as Sp}from"@berachain/wagmi/hooks";function xp(e,t){let r=Sp(),n=Ep(r&&e?["useValidatorQueuedCommission",e]:null,async([,s])=>(y(r),await Dr({client:r,pubKey:s})),{...t?.opts});return{...n,refresh:()=>n.mutate()}}import vp from"swr";import{usePublicClient as Bp}from"@berachain/wagmi/hooks";var Op=(e,t)=>{let r=Bp(),n=vp(r&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,s])=>await Lr({client:r,pubKey:s}),{...t?.opts});return{...n,refresh:()=>n.mutate()}};import Dp from"swr";import{usePublicClient as Lp}from"@berachain/wagmi/hooks";var Np=(e,t)=>{let r=Lp(),n=Dp(r&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,s])=>await Nr({client:r,pubKey:s}),{...t?.opts});return{...n,refresh:()=>n.mutate()}};import Up from"swr";import{usePublicClient as Hp}from"@berachain/wagmi/hooks";function Vp(e,t){let r=Hp(),n=Up(r&&e?["useValidatorRewardAllocation",e]:null,async([,s])=>await wr({client:r,pubKey:s}),{...t?.opts});return{...n,refresh:()=>n.mutate()}}export{zn as OracleMode,Fp as TransactionStoreProvider,Nn as USE_AGGREGATORS_QUOTES_QUERY_KEY,Qp as convertLegacyDataToNewData,Gp as createTransactionStore,Yp as filterDuplicatefn,Mp as mergeData,Ko as reducer,_p as safeParseJsonData,Bw as useAddRecentTransaction,Md as useAggregatorsQuotes,Zr as useAggregatorsRouterFeeBps,zr as useAllUserPools,_n as useAllUserPoolsQueryKey,RP as useAllValidators,Bu as useAllValidatorsQueryKey,TP as useApiEnrichedAllocation,jr as useApiPool,Mn as useApiPoolQueryKey,en as useApiValidator,Nu as useApiValidatorQueryKey,WP as useBaselineRewardAllocation,by as useBendTransactionRequests,xo as useBendTransactionRequestsHelper,Ru as useBeraContractWrite,sw as useBeraCurrentPrice,Ke as useBexStatus,Xh as useBgtAprSimulation,Xi as useBgtUnstakedBalance,Fw as useBlockToTimestamp,Ho as useCappedGlobally,Vo as useCappedRelatively,nl as useClaimableFees,Qb as useCollateralWeights,Rc as useCreatePool,Da as useCreateProposal,Wu as useDailyValidatorBlockStats,Yu as useDefaultRewardAllocation,hR as useEarnedStakedBeraVault,ie as useEnsoZap,Bc as useExploitedTokens,as as useExploitedTokensQueryKey,zp as useGetConvertToAssets,zy as useGetPastVotes,uP as useGetVerifiedAbi,ls as useGlobalLiquidityAndSwapVolume,nA as useHasVoted,ER as useHighestVaultsAPR,dP as useHistoryState,bh as useHoneyAlerts,Wo as useHoneyBalances,wh as useHoneyChartData,Eh as useHoneyGlobalData,Yh as useHoneySwapState,_o as useHoneyVaultsBalance,Qo as useIsBadCollateralAsset,Go as useIsBasketModeEnabled,cA as useIsCanceller,Wc as useLiquidityMismatch,kf as useLpPosition,Gu as useManagedValidatorByAccount,zu as useManagedValidatorRole,_s as useMultipleTokenApprovalsWithSlippage,fo as useMultipleTokenInformation,go as useOnChainPoolData,js as useOnChainPoolDataQueryKey,an as useOnChainValidator,hA as usePollAllProposals,ja as usePollAllProposalsQueryKey,po as usePollAllowances,io as usePollBalance,qo as usePollGlobalData,UR as usePollMarkets,yl as usePollMarketsQueryKey,ta as usePollPoolCreationRelayerApproval,EA as usePollProposal,LA as usePollProposalThreshold,VA as usePollProposalVotes,si as usePollProposalVotesQueryKey,KA as usePollUserDelegates,dw as usePollWalletBalances,fg as usePool,bg as usePoolEvents,Pg as usePoolHistoricalData,vg as usePools,ua as usePoolsQueryKey,gP as usePrevious,jA as useProposalFromTx,Oo as useProposalSnapshot,ob as useProposalState,ub as useProposalTimelockState,ee as usePythLatestPrices,Zh as usePythUpdateFee,MR as useQueuedBeraUnlock,hb as useQuorum,Uw as useRecentTransactions,zR as useRewardTokenToBeraRate,gk as useRewardVault,no as useRewardVaultBalanceFromStakingToken,ct as useRewardVaultFromToken,kk as useRewardVaultIncentives,vl as useRewardVaultQueryKey,Nl as useRewardVaultRewards,ht as useRewardVaults,pl as useRewardVaultsQueryKey,vk as useStakedBeraSnapshots,PT as useStakingPoolBatch,hw as useStakingTokenInformation,na as useSubgraphPoolQueryKey,sp as useSubgraphUserValidators,zo as useTokenCurrentPrice,Ue as useTokenCurrentPrices,so as useTokenInformation,Ne as useTokens,Iw as useTotalSupply,pe as useTransactionStore,up as useUserActiveValidators,cp as useUserBoostsOnValidator,bp as useUserClaimableIncentives,jT as useUserStakingPositions,_l as useUserVaultInfo,Gl as useUserVaults,rI as useValidator,wp as useValidatorAnalytics,Ip as useValidatorCommission,Cp as useValidatorEstimatedBgtPerYear,xp as useValidatorQueuedCommission,Op as useValidatorQueuedOperatorAddress,Np as useValidatorQueuedRewardAllocation,Vp as useValidatorRewardAllocation,Kk as useVaultAddress,zk as useVaultHistory,Zl as useVaultValidators,Py as useZapTransactionRequests};
|
|
3
|
+
This discrepancy could expose you to potential losses from arbitrageurs. ${a===ae.ComposableStable?"Did you mean to create a Weighted pool instead?":""}`,suggestWeighted:a===ae.ComposableStable}):m({title:null,message:null})},[e,t,r,o,n,s,a,i,l]),u};import io from"bignumber.js";import{formatEther as lo,isAddressEqual as Ds}from"viem";import As from"swr";import{isAddress as ro,zeroAddress as bs}from"viem";import{useBeraWallet as hs,usePublicClient as Rs}from"@berachain/wagmi/hooks";import cs from"swr/immutable";import{isAddress as fs,zeroAddress as gs}from"viem";import{usePublicClient as ys}from"@berachain/wagmi/hooks";var ct=({tokenAddress:e},{isEnabled:t=!0}={})=>{let r=ys(),o=r&&e&&fs(e)&&t?["useRewardVaultFromToken",e]:null,n=cs(o,async([,s])=>{if(!s)throw new Error("useRewardVaultFromToken needs a valid token address");y(r);let{config:a}=P({chainId:r.chain.id}),i=await r.readContract({address:a.pol.factory,abi:kt,functionName:"getVault",args:[s]});return i===gs?void 0:i});return{...n,refresh:()=>n.mutate()}};var oo=({stakingToken:e,rewardVaultAddress:t},r)=>{let{address:o}=hs(),n=Rs(),s=r?.opts?.isEnabled??!0,{data:a=t,error:i,mutate:l,isLoading:u}=ct({tokenAddress:e},{isEnabled:!t&&s}),m=As(a&&o&&n&&ro(a)&&ro(o)&&s?["useVaultBalanceFromStakingToken",a,o]:null,async([,p,d])=>{if(y(n),p===bs)return{address:p,balance:0n};let c=await n.readContract({address:p,abi:ue,functionName:"balanceOf",args:[d]});return{address:p,balance:c}});return{...m,refresh:()=>{l(),m.mutate()},isLoading:m.isLoading||u}};import Is from"swr";import{erc20Abi as Cs,formatEther as Es,formatUnits as Ss,isAddress as so,zeroAddress as xs}from"viem";import{defaultChainId as vs}from"@berachain/config/internal";import{useBeraWallet as Bs,usePublicClient as Os}from"@berachain/wagmi/hooks";import ks from"swr/immutable";import{isAddress as ws,zeroAddress as Ps}from"viem";import{usePublicClient as Ts}from"@berachain/wagmi/hooks";var no=(e,t)=>{let r=Ts({chainId:e.chainId}),o=e?.address&&r&&ws(e.address)?["useTokenInformation",e.address,e.chainId]:null,n=ks(o,async([s,a])=>k(a,"BERA")?{address:Ps,decimals:H.decimals,name:H.name,symbol:H.symbol}:(y(r),await X({address:a,publicClient:r})),{...t?.opts});return{...n,refresh:()=>n?.mutate?.()}};function ao({address:e,owner:t,chainId:r=vs},o){let n=e;k(n,"ETH")&&(n=xs);let s=Os({chainId:r}),{address:a}=Bs(),i=t??a,l=(o?.opts?.isEnabled??!0)&&s&&i&&so(i)&&n&&so(n)?["usePollBalance",i,n,r]:null,{data:u,isLoading:m}=no({address:n,chainId:r}),p=k(n,"BERA"),{isLoading:d,data:c,error:f,...g}=Is(l,async([,h,b])=>(y(s),k(b,"BERA")?await s.getBalance({address:h}):await s.readContract({address:b,abi:Cs,functionName:"balanceOf",args:[h]})),{refreshInterval:1e4}),A=!f&&c?k(n,"BERA")?Es(c):u&&!m?Ss(c,u.decimals):void 0:void 0,R={balance:c??0n,formattedBalance:A??"0",address:n,decimals:p?H.decimals:u?.decimals??0,symbol:p?H.symbol:u?.symbol??"",name:p?H.name:u?.name??""};return{...g,refresh:()=>{g.mutate()},isLoading:d||p?m:!1,error:f||!p?f:void 0,data:R}}var kf=({pool:e,vaultAddress:t},r)=>{let{data:o,...n}=ao({address:e?.address}),{data:s,refresh:a}=oo({stakingToken:e?.address,rewardVaultAddress:t??e?.rewardVault?.vaultAddress},r),i=e?Number.parseFloat(e?.dynamicData?.totalShares??"0"):0,l=e?.dynamicData?.totalLiquidity?Number(e?.dynamicData?.totalLiquidity??0):null,u=i&&l?l/Number(i):0,m=e?.tokens?.map(p=>({address:p.address,ratio:i?Number(p.balance)/Number(i):0}));return{data:{lpTokenPrice:u,lpBalance:o?{...o,usdValue:o?Number(o.formattedBalance)*u:void 0}:void 0,tokenBalances:e?.tokens?.map(p=>{let d=m?.find(g=>Ds(g.address,p.address))?.ratio??0,c=d?io(o?.formattedBalance??"0").times(d):io(0),f=Number(p.balanceUSD)/Number(p.balance);return{balance:c?.isGreaterThan(0)?BigInt(c.times(10**p.decimals).toFixed(0).toString()):0n,formattedBalance:c.toString(),address:p.address,usdValue:Number.isNaN(f)||!c?void 0:Number.parseFloat(c.toString())*f}}),stakedBalance:s?.address?{address:s.address,balance:s.balance,formattedBalance:lo(s.balance),usdValue:Number(lo(s.balance))*u}:void 0},...n,refresh:()=>{n.refresh?.(),a()}}};import{useMemo as po}from"react";import{ZERO_ADDRESS as Hs}from"@berachain-foundation/berancer-sdk";import Vs from"bignumber.js";import{isAddressEqual as Ws,parseUnits as mo}from"viem";import Ls from"swr";import{useBeraWallet as Ns,usePublicClient as Us}from"@berachain/wagmi/hooks";var uo=(e,t)=>{let r=Us(),{address:o}=Ns(),n=r&&o&&e?.tokens&&e?.spender?["usePollAllowances",o,e?.tokens,e?.spender]:null,s=Ls(n,async([,a,i,l])=>cr({tokens:i,account:a,spender:l,publicClient:r}),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s?.mutate?.()}};function _s({amount:e,decimals:t,slippage:r}){let o=mo(e,t),n=mo((r??0).toString(),t);return o+o*n/BigInt(100*10**t)}var Qs=(e,t,r)=>{let o=po(()=>e.filter(l=>l.address!==Hs).filter(l=>l!==void 0).filter(l=>Vs(l.amount).gt(0)),[e]),{data:n,refresh:s,isLoading:a}=uo({spender:t,tokens:o});return{needsApproval:po(()=>n?.map(l=>{let u=o.find(p=>Ws(p.address,l.address));if(!u)throw new x({message:"Token not found when matching allowance in useMultipleTokenApprovalsWithSlippage",cause:{allowance:l,tokens:o}});let m=_s({...u,slippage:r});if(l.allowance===0n||l.allowance<m)return{...l,maxAmountIn:m}}).filter(l=>l!==void 0)??[],[n,r,o]),refresh:s,isLoading:a}};import{useMemo as qs}from"react";import $s from"swr/immutable";import{formatUnits as Zs,isAddress as zs}from"viem";import{usePublicClient as js}from"@berachain/wagmi/hooks";import Ys from"swr/immutable";import{isAddress as Ms}from"viem";import{usePublicClient as Gs}from"@berachain/wagmi/hooks";var co=(e,t)=>{let r=Gs(),o=r&&e.addresses?["useMultipleTokenInformation",e.addresses]:null,n=Ys(o,async([,s])=>(y(r),Promise.all(s.map(async a=>{if(!a||!Ms(a,{strict:!1}))throw new Error("Invalid address");let i=await X({address:a,publicClient:r});if(!i)throw new Error(`Token ${a} not found`);return i}))),{...t?.opts});return{...n,refresh:()=>n?.mutate?.()}};import Ks from"swr";import{useContext as Fs}from"react";function Ne(){let e=Fs(wt);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 Ue({addressIn:e}={},t={opts:{refreshInterval:1e5,revalidateOnFocus:!0}}){let{tokenList:r}=Ne(),o=e?.some(a=>r?.findIndex(i=>k(i,a))===-1)?e:r?.map(a=>a.address),n=o&&(t.opts?.isEnabled??!0)?["useTokenCurrentPrices",o.map(a=>a.toLowerCase())]:null,s=Ks(n,async([,a])=>dr({addressIn:a}),t.opts);return{...s,refresh:()=>void s.mutate()}}function Js(e){let t="poolId"in e?e.poolId?.slice(0,42):e.address;return zs(t)&&t?["useOnChainPoolData",t]:null}function fo(e){let t=js(),r=e?.slice(0,42),o=Js({poolId:e}),{data:n,error:s,isLoading:a,mutate:i}=$s(t?o:null,async([,c])=>Et({poolId:c,publicClient:t})),{data:l,isLoading:u}=co({addresses:n?.poolTokens[0]}),{data:m,isLoading:p}=Ue({addressIn:n?.poolTokens[0]});return{data:qs(()=>{if(!n||!l)return;let c={address:r.toLowerCase(),id:e.toLowerCase(),type:n.type,factory:n.factory,totalShares:n.totalSupply,totalLiquidity:"0",swapFee:n.swapFee,createTime:0,name:n.name,tokens:l.map((g,A)=>({address:g.address.toLowerCase(),name:g.name,decimals:g.decimals,symbol:g.symbol,index:A,weight:n.weights?.[A]??void 0,balance:Zs(BigInt(n.poolTokens[1][A]),g.decimals),token:{__typename:"Token",token:g,latestUSDPrice:m?.[g.address]}})),amplificationParameter:n?.amplificationParameter&&{currentFormattedValue:Number(n.amplificationParameter[0])/Number(n.amplificationParameter[2])}},f=c.tokens?.reduce((g,A)=>{let R=Number(m?.[A.address.toLowerCase()]?.price??0);return R?g+R*Number(A.balance):g},0);return c.totalLiquidity=f?.toString()??"",c},[n,l,m,r,e]),error:s,isLoading:a||u||p,mutate:i,refresh:()=>i()}}import Xs from"swr";import{useBeraWallet as ea,usePublicClient as ta}from"@berachain/wagmi/hooks";var ra=e=>{let{address:t}=ea(),r=ta(),o=t&&r?["usePollPoolCreationRelayerApproval",t,r.chain.id]:null,n=Xs(o,async([,a])=>{y(r);let{config:i}=P({chainId:r.chain.id});return await r.readContract({address:i.bex.vault,abi:oe,functionName:"hasApprovedRelayer",args:[a,i.bex.poolCreationHelper]})},{...e?.opts});return{...n,refreshPoolCreationApproval:()=>{n.mutate()}}};import{useMemo as oa}from"react";import na from"swr";function sa({poolId:e}){return e?["usePool-subgraph",e]:null}var fg=({poolId:e})=>{let t=na(sa({poolId:e}),async([,i])=>vt({poolId:i}),{refreshInterval:1e5}),r=zr({poolId:e}),{data:o,isLoading:n,refresh:s}=fo(e);return{data:[oa(()=>{if(!t.data)return o;let i={...t.data};return o&&(i.swapFee=o.swapFee,i.totalShares=o.totalShares,i.createTime=o.createTime??i.createTime),i},[o,t]),r.data,o],isLoading:r.isLoading||t.isLoading||n,isError:r.error||t.error,refresh:()=>{r.refresh(),t.mutate(),s()}}};import aa from"swr/immutable";var bg=({poolId:e,typeInArray:t})=>aa(e?["usePoolEvents",e,t]:null,async([,r,o])=>St({poolId:r,typeInArray:o}),{refreshInterval:18e4});import ia from"swr";var Pg=({poolId:e,...t},r)=>{let{config:o}=P(t),s=ia(e?["usePoolHistoricalData",e]:null,async([,a])=>await xt({poolId:a,chain:o.bex.chainName}),r?.opts);return{...s,refresh:()=>void s.mutate()}};import{useMemo as go}from"react";import la from"swr";import{useBeraWallet as ua}from"@berachain/wagmi/hooks";var pa=({query:e}={})=>["useAllPools",e],vg=(e,t)=>{let{address:r}=ua(),{data:o,isLoading:n,mutate:s}=Zr({userAddress:r,chain:e.chain}),{data:a,isLoading:i,mutate:l}=la(pa({query:e}),async([p,d])=>fe(d),{refreshInterval:18e4,...t?.opts}),u=go(()=>{if(!a||!o?.pools?.length)return a?.pools??[];let p=Object.fromEntries(o.pools.map(d=>[d.id.toLowerCase(),d]));return a.pools.map(d=>({...d,...p[d.id.toLowerCase()]||{}})).filter(Boolean)},[a,o]),m=go(()=>({page:Math.ceil((e?.skip??0)/(e?.first??10)),pageSize:e?.first,count:Math.ceil((a?.count??0)/(e?.first??10))}),[a,e.skip,e.first]);return{pools:u??[],walletPools:a?.pools??[],isLoading:i||n,refresh:()=>{l(),s()},pagination:m}};import Ia from"swr";import{useBeraWallet as Ca,usePublicClient as So}from"@berachain/wagmi/hooks";import{useCallback as wo}from"react";import{getPublicClient as Po}from"@wagmi/core";import wa from"swr";import{isAddress as Pa,parseUnits as To}from"viem";import{defaultChainId as Io}from"@berachain/config/internal";import{useBeraWallet as Co,useConfig as Eo}from"@berachain/wagmi/hooks";import{ethAddress as ca,zeroAddress as fa}from"viem";import{erc20Abi as ma,ethAddress as da}from"viem";var He=async({fromAddress:e,amountIn:t,tokenIn:r,chainId:o,ensoClient:n,bundle:s,publicClient:a})=>{let i=[];if(r!==da){let l=await n.getApprovalData({fromAddress:e,tokenAddress:r,chainId:o,amount:t}),u=!0;a&&(u=await a.readContract({address:r,abi:ma,functionName:"allowance",args:[e,l.spender]})<BigInt(t)),u&&i.push({to:l.tx.to,data:l.tx.data,value:l.tx.value,gasLimit:BigInt(l.gas)})}return i.push({to:s.tx.to,data:s.tx.data,value:s.tx.value,gasLimit:BigInt(s.gas)}),i};async function yo({fromAddress:e,amountIn:t,tokenIn:r,loanToken:o,bendVault:n,rewardVault:s,chainId:a,ensoClient:i,destinationChainId:l,slippage:u,publicClient:m}){if(!e)throw new E({property:"fromAddress",value:e,expected:"string"});o===fa&&(o=ca);let p=[{protocol:"enso",action:"route",args:{tokenIn:r,tokenOut:o,amountIn:t,slippage:u*100}}];l&&l!==a&&(p[0].args={...p[0].args,destinationChainId:l,refundReceiver:e}),p.push({protocol:"erc4626",action:"deposit",args:{amountIn:{useOutputOfCallAt:0},tokenIn:o,primaryAddress:n,tokenOut:n}}),s&&p.push({protocol:"enso",action:"balance",args:{token:n}},{protocol:"erc20",action:"approve",args:{amount:{useOutputOfCallAt:2},spender:s,token:n}},{protocol:"enso",action:"call",args:{address:s,args:[e,{useOutputOfCallAt:2}],method:"stakeOnBehalf",abi:"function stakeOnBehalf(address account, uint256 amount) external"}},{protocol:"enso",action:"balance",args:{token:s}});let d=await i.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:a,routingStrategy:"router"},p),c=await He({fromAddress:e,amountIn:t,tokenIn:r,chainId:a,ensoClient:i,bundle:d,publicClient:m});return{bundle:d,transactions:c}}import{ethAddress as ga,zeroAddress as ya}from"viem";async function Ao({fromAddress:e,amountIn:t,tokenIn:r,tokenOut:o,chainId:n,ensoClient:s,destinationChainId:a,slippage:i,publicClient:l}){if(!e)throw new E({property:"fromAddress",value:e,expected:"address"});o===ya&&(o=ga);let u={protocol:"enso",action:"route",args:{tokenIn:r,tokenOut:o,amountIn:t,slippage:i*100}};a&&a!==n&&(u.args={...u.args,destinationChainId:a,refundReceiver:e});let m=await s.getBundleData({fromAddress:e,receiver:e,spender:e,chainId:n,routingStrategy:"router"},[u]),p=await He({fromAddress:e,amountIn:t,tokenIn:r,chainId:n,ensoClient:s,bundle:m,publicClient:l});return{bundle:m,transactions:p}}import{EnsoClient as Aa}from"@ensofinance/sdk";import{appConfig as ba}from"@berachain/config/internal";var ha=process.env.NODE_ENV!=="development"&&process.env.NODE_ENV!=="test";function bo({useProxy:e=ha,...t}={}){let{config:r}=P(t);return new Aa({baseURL:e?`${r.bex.aggregatorsProxyUrl}/enso/api/v1/`:void 0,apiKey:e?"":ba.apiKeys.public.enso})}import*as Ro from"@sentry/nextjs";import{getChains as Ra,multicall as ka}from"@wagmi/core";import{formatUnits as ho}from"viem";async function ko({account:e,wagmiConfig:t,chainId:r,ensoClient:o}){let s=(await o.getBalances({useEoa:!0,chainId:r??"all",eoaAddress:e})).map(u=>({name:u.name,symbol:u.symbol,decimals:u.decimals,address:u.token,logoURI:u.logoUri,balance:BigInt(u.amount),formattedBalance:ho(BigInt(u.amount),u.decimals),chainId:Number(u.chainId),price:Number(u.price)})),a=Object.groupBy(s,u=>u.chainId??0),i=await Promise.allSettled(Object.entries(a).map(async([u,m])=>{if(!m)return;let p=Ra(t).find(A=>A.id===Number(u));if(!p)return;let c=p.contracts?.multicall3?.address;if(!c)return Ro.captureException(new E({property:"multicallAddress",value:c,expected:"Address",chainId:Number(u)})),m;let f=await ka(t,{chainId:Number(u),contracts:m.map(A=>fr({token:A,account:e,multicallAddress:c})),allowFailure:!0}),g=[];for(let A=0;A<m.length;A++){let R=m[A];f[A].status==="success"?g.push({...R,balance:f[A].result,formattedBalance:ho(f[A].result,R.decimals)}):(console.error("error getting balance",f[A].error),captureException(qe({cause:f[A].error})),g.push(R))}return g})),l=[];for(let u of i)u.status==="fulfilled"?l.push(...u.value??[]):captureException(qe({cause:u.reason}));return l.sort((u,m)=>{let p=Number(u.formattedBalance)*(u.price??0);return Number(m.formattedBalance)*(m.price??0)-p})}function Ta({ensoClient:e,chainId:t},r){let{address:o}=Co(),n=Eo(),s=!!o&&Pa(o),i=wa(s&&n?["useEnsoBalances",o,t]:null,async([,l,u])=>ko({account:l,wagmiConfig:n,chainId:u??"all",ensoClient:e}),{refreshInterval:1e4,isEnabled:s,...r?.opts});return{...i,refresh:()=>i.mutate()}}function ie({chainId:e}){let{address:t}=Co(),r=Eo(),o=bo(),{data:n,refresh:s}=Ta({ensoClient:o,chainId:e}),a=wo(async({tokenIn:l,tokenOut:u,amount:m,slippage:p})=>{j(t,"fromAddress"),j(l?.address,"tokenInAddress"),ne(l?.chainId,"tokenInChainId");let d=Po(r,{chainId:l.chainId});y(d);let c=To(m,l.decimals).toString();return Ao({fromAddress:t,amountIn:c,tokenIn:l?.address,tokenOut:u,chainId:l.chainId,ensoClient:o,destinationChainId:Io,slippage:p,publicClient:d})},[t,o,r]),i=wo(async({tokenIn:l,amount:u,loanToken:m,bendVault:p,rewardVault:d,slippage:c})=>{j(t,"fromAddress"),j(l?.address,"tokenInAddress"),ne(l?.chainId,"tokenInChainId");let f=Po(r,{chainId:l.chainId});y(f);let g=To(u,l.decimals).toString();return yo({fromAddress:t,amountIn:g,tokenIn:l.address,loanToken:m,bendVault:p,rewardVault:d,chainId:l.chainId,ensoClient:o,destinationChainId:Io,slippage:c,publicClient:f})},[t,o,r]);return{tokens:n,getBendTransactionRequests:i,getZapTransactionRequests:a,refreshTokens:s}}function Ay({tokenIn:e,loanTokenAddress:t,loanTokenPrice:r,bendVault:o,rewardVault:n,amount:s,slippage:a,chainId:i},l){let{tokens:u,refreshTokens:m}=ie({chainId:i}),{data:p,error:d}=xo({tokenIn:e,loanTokenAddress:t,loanTokenPrice:r,bendVault:o,rewardVault:n,amount:e?.formattedBalance,slippage:a,chainId:e?.chainId},l),c=p?.transactions?.reduce((R,h)=>R+BigInt(h.value??0n),0n)??0n,f=u?.find(R=>k(R,"ETH")&&R.chainId===e?.chainId),g=BigInt(c)-BigInt(f?.balance??0n),A=xo({tokenIn:e,loanTokenAddress:t,loanTokenPrice:r,bendVault:o,rewardVault:n,amount:s,slippage:a,chainId:i},l);return{...A,nativeFee:g,error:d||A.error,tokens:u,refresh:()=>{A.mutate(),m()}}}function xo({tokenIn:e,loanTokenAddress:t,loanTokenPrice:r,bendVault:o,rewardVault:n,amount:s,slippage:a,chainId:i},l){let{address:u}=Ca(),{getBendTransactionRequests:m}=ie({chainId:i}),p=!!e&&!!t&&!!o&&!!s&&!!u&&!k(t,e?.address)&&e.chainId&&Number(s)>0&&!!a,d=So({chainId:i}),c=So();return Ia(p?["useBendTransactionRequests",e,t,r,o,n,s,a]:null,async([,g,A,R,h,b,T,w])=>{if(!d||!c)throw new E({property:"publicClient",value:d,expected:"PublicClient"});let I=await m({amount:T,tokenIn:g,loanToken:A,bendVault:h,rewardVault:b,slippage:w}),C=I.bundle.amountsOut,v=b?b.toLowerCase():h.toLowerCase(),M=C[v],W=await ce({sharesAmount:BigInt(M),vaultAddress:h,publicClient:c}),O=g?.price&&R?Dt(g?.price?.toString(),R?.toString(),T,W.formatted):void 0;return{supplyAmount:W,priceImpact:O,...I}},{...l?.opts,refreshInterval:1e5})}import Ea from"swr";var wy=({tokenIn:e,tokenOut:t,amount:r,slippage:o,chainId:n})=>{let{getZapTransactionRequests:s,refreshTokens:a,tokens:i}=ie({chainId:n}),l=!!e&&!!t&&!!r&&Number(r)>0&&!!o,m=Ea(l?["useZapTransactionRequests",e,t,r,o]:null,async([,p,d,c,f])=>(ne(p,"tokenIn"),j(d?.address,"tokenOutAddress"),Ze(c,"amount"),Ze(f,"slippage"),s({amount:c,tokenIn:p,tokenOut:d.address,slippage:f})),{refreshInterval:1e5,isEnabled:l});return{...m,tokens:i,refresh:()=>{m.mutate(),a()}}};import{useCallback as ft,useEffect as Oa,useState as Da}from"react";import Sa from"gray-matter";import{encodeFunctionData as We,erc20Abi as xa,parseAbiItem as va,toHex as Ba}from"viem";function Ve(e){return Object.values(e).some(t=>Array.isArray(t)?t.some(r=>typeof r=="object"&&r!==null?Ve(r):!!r):typeof t=="object"&&t!==null?Ve(t):!!t)}var vo=({proposal:e,currentTopic:t,onError:r})=>{let o=Ot(e,t),n=[];if(o.actions=e.actions.map((i,l)=>{let u={};if(u.target=N({fieldOrType:"address",value:i.target}),i.type==="custom-action")if(i.input==="ABI")if(u.ABI=N({fieldOrType:"abi",value:i.ABI}),!i.functionSignature)u.functionSignature="Required";else try{let p=va(i.functionSignature);p.type!=="function"?(console.error("parsedSignatureAbi is not a function",p),u.functionSignature="Invalid ABI"):(u.args=p.inputs.map((d,c)=>{try{return"components"in d?N({fieldOrType:d.type,value:i.args?.[c],components:d.components}):N({fieldOrType:d.type,value:i.args?.[c]})}catch{return null}}),u.args.some(d=>d)||(n[l]=We({abi:[p],args:i.args})))}catch{u.functionSignature="Invalid ABI"}else if(i.input==="rawCalldata")u.rawCalldata=N({fieldOrType:"hex",value:i.rawCalldata}),n[l]=i.rawCalldata;else if(i.input==="message")u.message=N({fieldOrType:"string",value:i.message}),n[l]=Ba(i.message);else throw new Error("Invalid input type");else if(i.type==="whitelist-reward-vault"||i.type==="blacklist-reward-vault"){if(u.vault=N({fieldOrType:"address",value:i.vault}),!u.vault){let p=i.type==="whitelist-reward-vault";n[l]=We({abi:K,functionName:"setVaultWhitelistedStatus",args:[i.vault,p,""]})}}else i.type==="whitelist-reward-vault-incentive"?(u.token=N({fieldOrType:"address",value:i.token}),u.minIncentiveRate=N({fieldOrType:"uint256",value:i.minIncentiveRate}),u.managerAddress=N({fieldOrType:"address",value:i.managerAddress}),!u.token&&!u.minIncentiveRate&&!u.managerAddress&&(n[l]=We({abi:ue,functionName:"whitelistIncentiveToken",args:[i.token,BigInt(i.minIncentiveRate),i.managerAddress]}))):i.type==="erc20-transfer"&&(u.amount=N({fieldOrType:"uint256",value:i.amount}),u.to=N({fieldOrType:"address",value:i.to}),!u.amount&&!u.to&&(n[l]=We({abi:xa,functionName:"transfer",args:[i.to,BigInt(i.amount)]})));return Ve(u)?u:null}),r?.(o),Object.getOwnPropertyNames(o).map(i=>o[i]).some(i=>Array.isArray(i)?i.filter(l=>l).length>0:i===null?!1:!!i)){console.warn("Proposal has errors",o);return}if(n.length===0)throw new Error("No actions submitted in proposal");let s=new URL(e.forumLink),a=Sa.stringify(e.description,{title:e.title,topics:Array.from(e.topic.values()),forumLink:s.toString(),version:"1.0.0","content-encoding":"utf-8","content-type":"text/markdown",actions:e.actions.map(i=>{let l={type:i.type};return i.type==="custom-action"&&(l.inputType=i.input),l})});return[e.actions.map(i=>i.target),e.actions.map(i=>i.value??0n),n,a]};var Bo={type:"custom-action",target:"",ABI:"",value:0n,functionSignature:"",args:[],input:"ABI",rawCalldata:"0x",message:""},La=({initialData:e={},currentTopic:t,onError:r})=>{let[o,n]=Da({title:"",description:"",forumLink:"",actions:[Bo],...e,topic:new Set});Oa(()=>{n(l=>({...l,topic:new Set([t.id])}))},[t]);let s=ft(()=>{n(l=>({...l,actions:[...l.actions,Bo]}))},[]),a=ft(l=>{n(u=>{let m=[...u.actions];return m.splice(l,1),{...u,actions:m}})},[n]),i=ft(()=>o?vo({proposal:o,currentTopic:t,onError:r}):void 0,[o,t]);return{proposal:o,setProposal:n,addProposalAction:s,removeProposalAction:a,computeParamsAndErrors:i}};import Ha from"swr/immutable";import{formatUnits as Va}from"viem";import{useBeraWallet as Wa,usePublicClient as _a}from"@berachain/wagmi/hooks";import Na from"swr/immutable";import{usePublicClient as Ua}from"@berachain/wagmi/hooks";var Oo=({proposalId:e})=>{let t=Ua();return Na(t&&e?["useProposalSnapshot",e]:null,async([,o])=>{y(t);let{config:n}=P({chainId:t.chain.id});return(await t.readContract({abi:_,address:n.governance.governor,functionName:"proposalSnapshot",args:[BigInt(o)]})).toString()})};var Zy=e=>{let{address:t}=Wa(),r=_a(),o=e.wallet||t,{data:n}=Oo({proposalId:e.proposalId}),s=e.timepoint||n;return Ha(s&&r&&o?["useGetPastVotes",s,o]:null,async([,i,l])=>{y(r);let{config:u}=P({chainId:r.chain.id});if(Number(i)>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(i)]});return Va(m,18)})};import Qa from"swr";import{isAddress as Ya}from"viem";import{useBeraWallet as Ma,usePublicClient as Ga}from"@berachain/wagmi/hooks";var oA=({proposalId:e,wallet:t})=>{let{address:r}=Ma(),o=Ga(),n=t||r;return Qa(o&&n&&Ya(n)?["useHasVoted",e,n]:null,([,s,a])=>{y(o);let{config:i}=P({chainId:o.chain.id});return o.readContract({address:i.governance.governor,abi:_,functionName:"hasVoted",args:[BigInt(s),a]})})};import Fa from"swr";import{usePublicClient as Ka}from"@berachain/wagmi/hooks";var Do="0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783";var dA=({account:e,...t})=>{let r=Ka(),{config:o}=P(t);return Fa(e&&r?["useCancellerRole",e]:null,async([,s])=>(y(r),await r.readContract({abi:le,address:o.governance.timelock,functionName:"hasRole",args:[Do,s]})),{refreshInterval:18e4,revalidateOnFocus:!1})};import{useEffect as Lo,useMemo as qa,useState as $a}from"react";import Za from"swr/infinite";import{Proposal_OrderBy as za,ProposalStatus as V}from"@berachain/graphql/governance";var No=10,ja=e=>{switch(e){case V.QuorumNotReached:return[V.Active,V.Pending];case V.PendingQueue:case V.Defeated:return[V.Active];case V.PendingExecution:return[V.InQueue];default:return[e]}};function Ja(e,t={}){let r=2*(t.perPage??No);return(o,n)=>{if(o!==0&&n&&n.length<r)return null;let s=t.status_in?.flatMap(ja).filter((a,i,l)=>l.indexOf(a)===i);return["usePollAllProposals",o,e,t.where,s,t.orderBy,t.orderDirection,r,t.text]}}function bA(e,t){let r=t?.autoRefresh??!1,o=e.perPage??No,n=2*o,s=Ja(e.topic,e);async function a(c){if(!c)return[];let[,f,g,A,R,h,b,T,w]=c;return(await Bt({where:{topics_contains:[g],status_in:R?.length?R:void 0,...A},orderBy:h,orderDirection:b,text:w,perPage:T,offset:f*T})??[]).filter(Boolean)}let i=Za(s,a,{initialSize:1,refreshInterval:t?.opts?.refreshInterval??18e4,...t?.opts}),l=qa(()=>{if(!i.data)return[];let c=i.data.flat().filter(g=>g?e.status_in?.length?e.status_in.includes(g.status):!0:!1).sort((g,A)=>{if(!e.text)return 0;if(e.orderBy===za.CreatedAt){let R=Number(A.createdAt)-Number(g.createdAt);return e.orderDirection==="asc"?R:-R}return 0}),f=[];for(let g=0;g<c.length;g+=o)f.push(c.slice(g,g+o));return f},[i.data,e,o]),u=i.data?.[i.data.length-1],m=!!u&&u.length===n,[p,d]=$a(Date.now()/1e3);return Lo(()=>{if(!r)return;let c=setInterval(()=>{d(Date.now()/1e3)},1e4);return()=>clearInterval(c)},[r]),Lo(()=>{if(!i.data)return;let c=!1;for(let f of i.data.flat()){switch(f.status){case V.Pending:p>=Number(f.voteStartAt)&&(c=!0);break;case V.Active:p>=Number(f.voteEndAt)&&(c=!0);break;case V.InQueue:Date.now()/1e3+1>=Number(f.queueEnd)&&(c=!0);break;default:break}if(c)break}c&&i.mutate()},[i.data,p]),{...i,data:l,hasMore:m}}import{useEffect as Uo,useState as Xa}from"react";import ei from"swr";import{ProposalStatus as gt}from"@berachain/graphql/governance";import{usePublicClient as ti}from"@berachain/wagmi/hooks";var CA=(e,t)=>{let r=t?.autoRefresh??!1,o=ti(),s=ei(e&&o?["usePollProposal",e]:null,([,l])=>(y(o),Ut({proposalId:l,client:o})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??18e4}),[a,i]=Xa(Date.now());return Uo(()=>{if(!r)return;let l=setInterval(()=>{i(Date.now()/1e3)},1e4);return()=>clearInterval(l)},[]),Uo(()=>{if(s.data!==void 0)switch(s.data.status){case gt.Pending:a>=Number(s.data.voteStartAt)&&s.mutate();break;case gt.Active:a>=Number(s.data.voteEndAt)&&s.mutate();break;case gt.InQueue:Date.now()/1e3+1>=Number(s.data.queueEnd)&&s.mutate();break}},[s.data?.status,a]),{...s,refresh:()=>s?.mutate?.()}};import ri from"swr";import{formatEther as oi}from"viem";import{usePublicClient as ni}from"@berachain/wagmi/hooks";var DA=e=>{let t=ni(),o=ri(t?["usePollProposalThreshold",e]:null,async([,n])=>{y(t);let s=await t.readContract({address:n,abi:_,functionName:"proposalThreshold"});return{votesThreshold:oi(s)}},{refreshInterval:18e4});return{...o,refresh:o.mutate}};import si from"swr/infinite";var _e=1e3,HA=(e,t)=>si(ai(e,t),async([r,o])=>Vt({variables:{...e,limit:_e,offset:_e*o}}),{parallel:!0,initialSize:Number.POSITIVE_INFINITY}),ai=({...e},t)=>r=>r>Math.floor(t/_e)?null:["usePollProposalVotes",r,_e,e.proposalId,e.orderBy,e.orderDirection];import ii from"swr";import{formatEther as li}from"viem";import{useBeraWallet as ui,usePublicClient as pi}from"@berachain/wagmi/hooks";var FA=e=>{let{address:t}=ui(),r=pi(),n=ii(t?["usePollUserDelegates",t]:null,async([,s])=>{y(r);let{config:a}=P({chainId:r.chain.id});if(!r||!s)throw new Error("usePollUserDelegates needs publicClient and account");let[i,l]=await Promise.all([r.readContract({address:a.tokens.bgt,abi:G,functionName:"delegates",args:[s]}),r.readContract({address:a.tokens.bgt,abi:G,functionName:"getVotes",args:[s]})]);return{delegate:i,currentVotes:li(l)}},{...e?.opts,refreshInterval:e?.opts?.refreshInterval??18e4});return{...n,refresh:()=>n?.mutate?.()}};import mi from"swr";import{usePublicClient as di,useTransactionReceipt as ci}from"@berachain/wagmi/hooks";var zA=e=>{let{data:t}=ci({hash:e}),r=di();return mi(t&&r?["useProposalFromTx",e]:null,async([,s])=>{if(!t)throw new Error("Transaction not found");if(t.transactionHash!==s)throw new Error("Transaction hash mismatch");return Ht({tx:t,publicClient:r})})};import fi from"swr/immutable";import{usePublicClient as gi}from"@berachain/wagmi/hooks";var yi={0:"pending",1:"active",2:"canceled",3:"defeated",4:"succeeded",5:"queued",6:"expired",7:"executed"},rb=({proposalId:e,governorAddress:t})=>{let r=gi();return fi(t&&r&&e?["useProposalState",e]:null,async([,n])=>{y(r);let s=await r.readContract({abi:_,address:t,functionName:"state",args:[BigInt(n)]});return yi[s]})};import Ai from"swr";import{usePublicClient as bi}from"@berachain/wagmi/hooks";var hi={0:"unset",1:"waiting",2:"ready",3:"done"},lb=({proposalTimelockId:e,timelockAddress:t})=>{let r=bi();return Ai(t&&r&&e?["useProposalTimelockState",e,t]:null,async([,n,s])=>{y(r);let a=await r.readContract({abi:le,address:s,functionName:"getOperationState",args:[n]});return hi[a]},{refreshInterval:18e4})};import ki from"swr";import{usePublicClient as wi}from"@berachain/wagmi/hooks";import{formatEther as Ri}from"viem";async function yt({at:e,publicClient:t,...r}){let{config:o}=P(r);y(t);let n=await t.readContract({address:o.governance.governor,abi:_,functionName:"quorum",blockTag:"pending",args:[BigInt(e??Math.floor(Date.now()/1e3))]});return Ri(n)}function bb({at:e},{isEnabled:t=!0}){let r=Math.floor(Date.now()/1e3),o=wi(),n=t&&o?["useQuorum",Number(e)>r?"now":e]:null,s=ki(n,async([,a])=>a==="now"?yt({publicClient:o}):yt({at:a,publicClient:o}));return{...s,data:s.data?Number(s.data):void 0}}import Ti from"swr";import{usePublicClient as Ii}from"@berachain/wagmi/hooks";import Pi from"swr";function ee({priceFeedMap:e},t){let r=e?Object.values(e):null,o=(t?.opts?.isEnabled??!0)&&r?["usePythLatestPrices",r]:null;return Pi(o,async([s,a])=>await Ft({priceFeedId:a}))}var Ho=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},n)=>{let s=Ii(),{priceFeedMap:a,flags:i}=B(),{data:l}=ee({priceFeedMap:e?.address&&a?{[e.address]:a[e.address]}:void 0},{opts:{isEnabled:i.isPythWrapperEnabled&&!!e?.address}}),u=t&&e&&(i.isPythWrapperEnabled&&l?.prices.length||!i.isPythWrapperEnabled)?["useCappedGlobally",t,e,l,i.isPythWrapperEnabled,o]:null,m=Ti(u,async([p,d,c,f,g,A])=>A?!1:(y(s),await Yt({client:s,asset:c,amount:r?d:`-${d}`,isMint:r,latestPrices:f,isPythWrapperEnabled:g})),{...n?.opts,refreshInterval:0});return{...m,refresh:()=>void m.mutate()}};import Ci from"swr";import{usePublicClient as Ei}from"@berachain/wagmi/hooks";var Vo=({asset:e,amount:t,isMint:r,isBasketModeEnabled:o},n)=>{let s=Ei(),{collateralList:a,referenceCollateral:i}=B(),u=Ci(e&&t?["useCappedRelatively",e,t,a,i]:null,async([m,p,d,c,f])=>{if(o)return!1;if(y(s),!r){let g=`-${d}`;return f.address!==p?!1:(await Promise.all(c.map(R=>ze({client:s,asset:R.address,amount:g,isMint:r,referenceCollateral:f})))).some(R=>R)}return await ze({client:s,asset:p,amount:d,isMint:r,referenceCollateral:f})},{refreshInterval:0,...n?.opts});return{...u,refresh:()=>void u.mutate()}};import Si from"swr";import{usePublicClient as xi}from"@berachain/wagmi/hooks";var _b=({collateralList:e},t)=>{let r=xi(),n=Si(r&&e?["useCollateralWeights",e]:void 0,async([s,a])=>(y(r),await _t({client:r,collateralList:a})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...n,refresh:()=>void n.mutate()}};import{useMemo as At}from"react";import te from"bignumber.js";import vi from"swr";import{useBeraWallet as Bi,usePublicClient as Oi}from"@berachain/wagmi/hooks";var Wo=()=>{let e=Oi(),{address:t}=Bi(),{collateralList:r}=B(),n=vi(t&&r&&e?["useHoneyBalances",t,r]:null,async([s,a,i])=>{y(e);let l=[...i??[],de({})];return(await ke({account:a,tokenList:l,publicClient:e}))?.reduce((p,d)=>(p[d.address]=d,p),{})},{refreshInterval:1e4});return{...n,refresh:()=>n.mutate()}};import Di from"swr";import{usePublicClient as Li}from"@berachain/wagmi/hooks";var _o=e=>{let t=Li(),{collateralList:r}=B(),n=Di(r&&t?["useHoneyVaultsBalance",r]:null,async([s,a])=>(y(t),await Ae({client:t,collateralList:a})),{...e?.opts,refreshInterval:1e5});return{...n,refresh:()=>void n.mutate()}};import Ni from"swr";import{usePublicClient as Ui}from"@berachain/wagmi/hooks";var Qo=({collateral:e},t)=>{let r=Ui(),{priceFeedMap:o,flags:n}=B(),{data:s}=ee({priceFeedMap:e?.address?{[e.address]:o[e.address]}:void 0},{opts:{isEnabled:n.isPythWrapperEnabled&&!!e?.address}}),a=r&&e&&(n.isPythWrapperEnabled&&s?.prices.length||!n.isPythWrapperEnabled)?["useIsBadCollateralAsset",e,s,n.isPythWrapperEnabled]:null,i=Ni(a,async([l,u,m,p])=>(y(r),await Qt({client:r,collateral:u,latestPrices:m,isPythWrapperEnabled:p})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e5});return{...i,refresh:()=>void i.mutate()}};var Yo=({lowerThan:e,vaultsBalances:t,state:r,collateralList:o})=>{if(!(r.actionType==="mint")&&!r.isBasketModeEnabled){let s=t?.find(l=>l.address.toLowerCase()===r.collaterals[0].address.toLowerCase()),a=new te(s?.formattedBalance??"0").lte(e),i=o.filter(l=>{let u=t?.find(m=>m.address.toLowerCase()===l.address.toLowerCase());return new te(u?.formattedBalance??"0").lte(e)});return{isLow:a,isLiquidityLowCollaterals:i}}return{isLow:!1,isLiquidityLowCollaterals:[]}},Hi=({vaultsBalances:e,redeemedVaultBalance:t,state:r,collateralList:o})=>{if(!(r.actionType==="mint")&&e&&t){let s=o.filter(a=>{let i=e.find(u=>u.address.toLowerCase()===a.address.toLowerCase()),l=r.toAmount[r.collaterals.indexOf(a)];return new te(i?.formattedBalance??"0").lt(l??"0")});return{isMore:!!s.find(a=>a.address.toLowerCase()===r.collaterals[0].address.toLowerCase()),isRedeemMoreThanLiquidityCollaterals:s}}return{isMore:!1,isRedeemMoreThanLiquidityCollaterals:void 0}};function Vi({state:e,honeyBalances:t,...r}){let{config:o}=P(r),n=e.actionType==="mint";return!n&&t?new te(e.fromAmount[0]).gt(t[o.honey.token]?.formattedBalance??"0"):n&&t&&e.isBasketModeEnabled!==void 0&&e.collaterals.length>0?e.isBasketModeEnabled?e.collaterals.some((s,a)=>{let i=e.fromAmount[a];return new te(t[s.address]?.formattedBalance).lt(i)}):new te(t[e.collaterals[0].address]?.formattedBalance).lt(e.fromAmount[0]):!1}var Ah=({actionType:e,collaterals:t,fromAmount:r,toAmount:o,isBasketModeEnabled:n})=>{let s={actionType:e,collaterals:t,fromAmount:r,toAmount:o,isBasketModeEnabled:n},a=e==="mint",{data:i}=Qo({collateral:t[0]}),{collateralList:l}=B(),{isBlacklisted:u,isDepegged:m}=i??{isBlacklisted:!1,isDepegged:!1},{data:p}=Ho({asset:t[0],amount:a?r[0]:o[0],isMint:a,isBasketModeEnabled:n}),{data:d}=Vo({asset:t[0]?.address,amount:a?r[0]:o[0],isMint:a,isBasketModeEnabled:n}),{data:c}=Wo(),{data:f}=_o(),g=t[0]?.address,A=f?.find(I=>I.address.toLowerCase()===g.toLowerCase()),[R,h]=At(()=>{let I=Yo({lowerThan:1,vaultsBalances:f,state:s,collateralList:l}),C=Yo({lowerThan:1e3,vaultsBalances:f,state:s,collateralList:l});return[I,C]},[f,s]),{isMore:b,isRedeemMoreThanLiquidityCollaterals:T}=At(()=>Hi({vaultsBalances:f,redeemedVaultBalance:A,state:s,collateralList:l}),[f,A,s,l]),w=At(()=>Vi({state:s,honeyBalances:c}),[s,c]);return{isLiquidityDepleted:R.isLow,isLiquidityDepletedCollaterals:R.isLiquidityLowCollaterals,isRedeemMoreThanLiquidity:b,isRedeemMoreThanLiquidityCollaterals:T,isLowLiquidity:h.isLow,isLiquidityLowCollaterals:h.isLiquidityLowCollaterals,isBlacklisted:s.isBasketModeEnabled?!1:u,isDepegged:s.isBasketModeEnabled?!1:m,isCappedGlobally:p,isCappedRelatively:d,isExceedingBalance:w}};import Wi from"swr";function kh({days:e}){let t=Wi(["useHoneyChartData",e],async([r,o])=>await Wt({days:o}));return{...t,refresh:()=>t.mutate()}}import Mo from"bignumber.js";import _i from"swr";function Ch(){let e=_i(["useHoneyGlobalData"],()=>Mt()),t=e.data?.honeySnapshots.reduce((r,o)=>new Mo(o.totalVolume).plus(r),new Mo(0));return{...e,data:{...e.data,dailyVolume:t},refresh:()=>e.mutate()}}import{useEffect as Mi,useReducer as Gi}from"react";import{formatUnits as Fo}from"viem";import{defaultChainId as Fi}from"@berachain/config/internal";import Qi from"swr";import{usePublicClient as Yi}from"@berachain/wagmi/hooks";function Go({state:e},t){let r=Yi(),{priceFeedMap:o,flags:n,collateralList:s}=B(),{data:a}=ee({priceFeedMap:o},{opts:{isEnabled:n.isPythWrapperEnabled&&!!s.length}}),i=e.actionType==="mint",l=r&&e&&s.length>0&&(n.isPythWrapperEnabled&&a?.prices.length||!n.isPythWrapperEnabled)?["useIsBasketModeEnabled",i,a,n.isPythWrapperEnabled,s]:null,u=Qi(l,async([m,p,d,c,f])=>(y(r),await be({client:r,isMint:p,collateralList:f,latestPrices:d,isPythWrapperEnabled:c})),{...t?.opts,refreshInterval:t?.opts?.refreshInterval??1e4});return{...u,data:u.data,refresh:()=>void u.mutate()}}var Ki={actionType:"mint",collaterals:[],fromAmount:[],toAmount:[],isBasketModeEnabled:!1,isTyping:!1,isSubmitting:!1,isLoading:!1};function Ko(e,t){switch(t.type){case"RESET_AMOUNTS":return{...e,fromAmount:[],toAmount:[]};case"ACTION_TYPE_CHANGE":return Ko({...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",n=e.collaterals.map((a,i)=>t.changedAsset===a.address?o?e.fromAmount[i]:e.toAmount[i]:r.collaterals[a.address]?Fo(r.collaterals[a.address],a.decimals):e.isBasketModeEnabled?"0":""),s=k(t.changedAsset,"HONEY",{chainId:Fi})?o?e.toAmount[0]:e.fromAmount[0]:r.honey?Fo(r.honey,18):e.isBasketModeEnabled?"0":"";return{...e,fromAmount:o?n:[s],toAmount:o?[s]:n}}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 Qh=()=>{let{collateralList:e}=B(),[t,r]=Gi(Ko,Ki,n=>({...n,collaterals:e})),{data:o}=Go({state:t});return Mi(()=>{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 qi from"swr/immutable";import{usePublicClient as $i}from"@berachain/wagmi/hooks";var $h=({pythPriceFeedCalldata:e,tokenListLength:t},r)=>{let o=$i(),n=(r?.opts?.isEnabled??!0)&&e&&e.length>0?["usePythUpdateFee",e]:null,{data:s=Lt(t),isLoading:a}=qi(n,async([i,l])=>(y(o),await Kt({client:o,priceFeedId:l})));return{QUERY_KEY:n,data:s,isLoading:a}};import{useMemo as Zi}from"react";function Jh(e){return Zi(()=>{if(e)return zt(e)},[e])}import zi from"swr";import{formatEther as ji}from"viem";import{useBeraWallet as Ji,usePublicClient as Xi}from"@berachain/wagmi/hooks";var el=e=>{let{address:t}=Ji(),r=Xi(),n=zi(t&&r?["useBgtUnstakedBalance",t]:null,async([,s])=>{y(r);let{config:a}=P({chainId:r.chain.id}),i=await r.readContract({address:a.tokens.bgt,abi:G,functionName:"unboostedBalanceOf",args:[s]});return ji(i)},{...e,refreshInterval:e?.opts?.refreshInterval??1e5});return{...n,refresh:()=>n.mutate()}};import tl from"swr";import{formatUnits as rl}from"viem";import{useBeraWallet as ol,usePublicClient as nl}from"@berachain/wagmi/hooks";var sl=()=>{let{address:e}=ol(),t=nl(),o=tl(e&&t?["useClaimableFees",e]:null,async([,n])=>{y(t);let{config:s}=P({chainId:t.chain.id}),a=await ir({account:n,vaultAddress:s.pol.staker,publicClient:t});return rl(a,18)},{refreshInterval:18e4*2});return{...o,refresh:()=>o?.mutate?.()}};import al from"swr";import{GetStakeBeraVaultEarningsByOwner as il}from"@berachain/graphql/pol/api";import{useBeraWallet as ll}from"@berachain/wagmi/hooks";function bR({receiptToken:e},t){let{address:r}=ll(),o=e.address&&r?["useEarnedStakedBeraVault",e.address,r]:null,n=al(o,async([s,,a])=>(await $("api",{}).query({query:il,variables:{owner:a}})).data?.polGetStakeBeraVaultEarningsByOwner?.earnings,{refreshInterval:18e4,...t?.opts});return{...n,refresh:n.mutate}}import{GqlRewardVaultOrderBy as dl,GqlRewardVaultOrderDirection as cl}from"@berachain/graphql/pol/api";import ul from"swr";import{usePublicClient as pl}from"@berachain/wagmi/hooks";var ml=(e,t=!1)=>["useRewardVaults",e,t],bt=(e,t)=>{let r=ml(e.filter,e.onChainIncentives),o=pl(),n=ul(t?.opts?.isEnabled??!0?r:null,async([,s,a])=>await jt({filter:s,publicClient:a?o:void 0}),{...t?.opts});return{...n,refresh:n.mutate}};var CR=(e={},{isEnabled:t=!0}={})=>{let r=bt({filter:{orderBy:dl.Apr,orderDirection:cl.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 fl from"swr";import{usePublicClient as gl}from"@berachain/wagmi/hooks";var qo=e=>{let t=gl(),r=fl(t?"usePollGlobalData":null,async()=>(y(t),Jt(t)),{revalidateOnFocus:!1,...e?.opts});return{...r,refresh:r.mutate}};import yl from"swr/immutable";var Al=()=>"usePollMarkets",NR=e=>{let t=Al(),r=yl(t,async()=>await Xt(),{...e?.opts});return{...r,refresh:()=>r.mutate()}};import bl from"swr/immutable";import{isAddress as $o}from"viem";import{usePublicClient as hl}from"@berachain/wagmi/hooks";function YR({receiptTokenAddress:e,account:t,version:r},o){let n=hl(),s=e&&$o(e)&&t&&n&&$o(t)&&r?["useQueuedBeraUnlock",e,t,r]:null,a=bl(s,async([,i,l,u])=>(y(n),await nr(i,l,n,u)),{refreshInterval:1e4,...o?.opts});return{...a,refresh:()=>a.mutate()}}import Rl from"swr";import{isAddress as kl}from"viem";import{usePublicClient as wl}from"@berachain/wagmi/hooks";var ZR=({address:e},t)=>{let r=e?["useRewardTokenToBeraRate",e]:null,o=wl();return Rl(r,async([n,s])=>{if(!s||!kl(s))throw new E({property:"address",value:s,expected:"Address"});return y(o),tr({address:s,publicClient:o})},{...t?.opts})};import vl from"swr";import Tl from"swr";import{erc20Abi as Il,formatUnits as Cl,isAddress as El}from"viem";import{usePublicClient as Sl}from"@berachain/wagmi/hooks";import{erc20Abi as Qe,formatUnits as Pl}from"viem";async function Ye({address:e,publicClient:t}){y(t);let[r,o,n,s]=await t.multicall({contracts:[{address:e,abi:Qe,functionName:"decimals"},{address:e,abi:Qe,functionName:"name"},{address:e,abi:Qe,functionName:"symbol"},{address:e,abi:Qe,functionName:"totalSupply"}],allowFailure:!0});return{address:e,decimals:r.result,name:o.result,symbol:n.result,totalSupply:s.result!==void 0?r.status==="success"?Pl(s.result,r.result):s.result.toString():void 0}}var xl=e=>e&&El(e)?["onChainRewardVault",e.toLowerCase()]:null,Zo=({address:e},t)=>{let r=Sl(),o=t.opts?.isEnabled??!0,n=xl(e);return Tl(o&&r?n:null,async([,s])=>{y(r);let{config:a}=P({chainId:r.chain.id}),i=await Re({address:s,publicClient:r}),[l,u,m]=await Promise.all([he({address:s,stakingToken:i,publicClient:r}),r.readContract({address:a.pol.beraChef,abi:K,functionName:"isWhitelistedVault",args:[s]}),r.readContract({address:i,abi:Il,functionName:"balanceOf",args:[s]})]),[p,d]=await Promise.all([Ye({address:i,publicClient:r}),Promise.all(l.map(c=>X({address:c.token,publicClient:r})))]);if(!p)throw new Error("Staking token not found");return{id:s,address:s,vaultAddress:s,stakingToken:{address:i,name:p.name??"",symbol:p.symbol??"",decimals:p.decimals??0},stakingTokenAmount:Cl(m,p.decimals??18),isVaultWhitelisted:u,activeIncentives:l.map((c,f)=>({active:!!c.remainingAmount,remainingAmount:c.remainingAmount,remainingAmountUsd:"0",incentiveRate:c.incentiveRate,incentiveRateUsd:"0",tokenAddress:c.token,token:d[f]}))}})};var Bl=e=>e?["useRewardVault",e.toLowerCase()]:null,fk=(e,t)=>{let r=Bl(e),o=vl(r,async([a,i])=>rr({address:i}),{...t?.opts}),n=t?.opts?.isEnabled??((!!o.error||!o.isLoading)&&!o.data),s=Zo({address:e},{opts:{...t?.opts,isEnabled:n}});return{data:s.data??o.data,error:s.error??o.error,isLoading:s.isLoading||o.isLoading,isValidating:s.isValidating??o.isValidating,refresh:()=>{o.mutate(),s.mutate()}}};import Ol from"swr";import{usePublicClient as Dl}from"@berachain/wagmi/hooks";function Rk({address:e,stakingToken:t}){let r=Dl(),n=Ol(r&&e&&t?["useRewardVaultIncentives",e,t]:null,async([,s,a])=>(y(r),await he({address:s,stakingToken:a,publicClient:r})));return{...n,refresh:()=>n?.mutate?.()}}import Ll from"swr";import{usePublicClient as Nl}from"@berachain/wagmi/hooks";var Ul=(e,t)=>{let r=Nl(),n=Ll(r&&e?["useRewardVaultRewards",e]:null,async([,s])=>(y(r),await Zt(s,r)),{...t?.opts});return{...n,refresh:()=>n?.mutate?.()}};import Hl from"swr";var xk=({range:e})=>{let r=Hl(e?["useStakedBeraSnapshots",e]:null,([,o])=>or({range:o}));return{...r,refresh:()=>r.mutate()}};import Vl from"swr";import{useBeraWallet as Wl,usePublicClient as _l}from"@berachain/wagmi/hooks";var Ql=(e,t)=>{let{address:r}=Wl(),o=_l(),n=r&&o&&e.vaultAddress?["useUserVaultInfo",r,e.vaultAddress]:null,s=Vl(n,async([,a,i])=>(y(o),lr({account:a,vaultAddress:i,publicClient:o})),{...t,refreshInterval:t?.opts?.refreshInterval??1e5});return{...s,refresh:()=>s.mutate()}};import Yl from"swr";import{useBeraWallet as Ml,usePublicClient as Gl}from"@berachain/wagmi/hooks";var Fl=e=>{let{address:t}=Ml(),r=Gl(),n=Yl(t&&r?["useUserVaults",t]:null,async([,s])=>(y(r),await ur({account:s,publicClient:r})),{...e,refreshInterval:e?.opts?.refreshInterval??1e5,keepPreviousData:!0});return{...n,refresh:()=>n?.mutate?.()}};import Kl from"swr";import{usePublicClient as ql}from"@berachain/wagmi/hooks";var Fk=e=>{let t=ql();return Kl(e&&t?["useVaultAddress",e]:null,async([,o])=>{y(t);let[n]=await Promise.all([Re({address:o,publicClient:t})]);return{stakeToken:n,address:o}})};import $l from"swr";var Zk=({vault:e,range:t,resolution:r})=>{let n=$l(e?["useVaultHistory",e,t,r]:null,([,s,a,i])=>pr({vault:s,range:a,resolution:i}));return{...n,refresh:()=>n.mutate()}};import Zl from"swr";var zl=(e,t)=>{let o=Zl(e?["useVaultValidators",e]:null,async([,n])=>await mr({address:n}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{zeroAddress as jl}from"viem";function zo({address:e},t){let r=Ue({addressIn:e?[e]:void 0},t);return{...r,data:e?r.data?.[e.toLowerCase()]:void 0}}function nw(e){return zo({address:jl},e)}import{useMemo as Jl}from"react";import Xl from"swr";import{useBeraWallet as eu,usePublicClient as tu}from"@berachain/wagmi/hooks";function mw(e,t){let r=tu(),{address:o}=eu(),{tokenList:n}=Ne(),s=e?.walletAddress??o,a=Jl(()=>new Map((e?.tokens??n)?.map(u=>[u.address.toLowerCase(),u])??[]),[n,e?.tokens]),i=r&&n!==void 0&&s?["usePollWalletBalances",s,Array.from(a.values())]:null,l=Xl(i,async([,u,m])=>ke({account:u,tokenList:m,publicClient:r}),{refreshInterval:1e5,...t?.opts});return{...l,refresh:()=>l?.mutate?.()}}import ru from"swr/immutable";import{isAddress as ou,zeroAddress as nu}from"viem";import{usePublicClient as su}from"@berachain/wagmi/hooks";var bw=(e,t)=>{let r=su(),o=e?.address&&r&&ou(e.address)?["useStakingTokenInformation",e.address]:null,n=ru(o,async([s,a])=>k(a,"BERA")?{address:nu,decimals:H.decimals,name:H.name,symbol:H.symbol}:await Ye({address:a,publicClient:r}),{...t?.opts});return{...n,refresh:()=>n?.mutate?.()}};import au from"swr";import{erc20Abi as iu}from"viem";import{usePublicClient as lu}from"@berachain/wagmi/hooks";function Tw({address:e}){let t=lu();return au(e&&t?["useTotalSupply",e]:null,([,r])=>(y(t),t.readContract({address:r,abi:iu,functionName:"totalSupply",args:[]})))}import{useCallback as uu}from"react";import{useBeraWagmi as pu}from"@berachain/wagmi/hooks";function vw(){let e=pe(),{account:t}=pu(),r=t?.wallet?.address;return uu(o=>{if(!r)throw new E({property:"address",value:r,expected:"Address"});e.addTransaction(r,o)},[e,r])}import{useEffect as mu,useState as du}from"react";import{useBeraWallet as cu}from"@berachain/wagmi/hooks";function Nw(){let e=pe(),{address:t}=cu(),[r,o]=du(()=>e&&t?e.getTransactions(t):[]);return mu(()=>{if(e&&t)return o(e.getTransactions(t)),e.onChange(()=>{o(e.getTransactions(t))})},[e,t]),r}import fu from"swr/immutable";import{useBlockNumber as gu,usePublicClient as yu}from"@berachain/wagmi/hooks";function Gw(e){let t=yu(),{config:r}=P({chainId:t?.chain.id}),{data:o,isLoading:n}=gu({cacheTime:ge(r.averageBlockTime)}),{data:s}=fu(o&&t&&Number(e)>0?["useBlockToTimestamp",e,o]:null,async([,i,l])=>(y(t),$t({block:i,currentBlock:l,blockTime:a,publicClient:t}))),a=me();if(s)return Number(s.timestamp);if(!(n||!o))return Math.floor(Nt(Date.now())+a*(Number(e)-Number(o)))}import{useCallback as Jo,useReducer as Au}from"react";import{useBeraWagmi as bu,useConfig as hu}from"@berachain/wagmi/hooks";var ht={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{...ht};default:return e}};function Ru({onlyPermissionless:e,onSuccess:t,onError:r,onLoading:o,onWarning:n,onSubmission:s}={}){let[a,i]=Au(jo,ht),{account:l,onSmartAccountRejection:u}=bu(),m=hu(),p=l?.wallet?.isContract?6e4*10:12e4,d=Jo(()=>{i({type:"confirm_reset"})},[]),c=q("enableSimulateCalls"),f=Jo(g=>{if(e&&!g.permissionless){let A=new ar({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:g});throw n?.(A,g),r?.(A,g),A}return gr({wagmiConfig:m,...g,txConfirmationTimeout:p,enableSimulateCalls:c,onLoading(...A){i({type:"confirm_sending"}),g.onLoading?.(g),o?.(...A)},onWarning(...A){g.onWarning?.(A[0],g),n?.(...A)},onSubmission(...A){i({type:"confirm_submitting"}),g.onSubmission?.(A[0],g),s?.(...A)},onSuccess(...A){i({type:"confirm_receipt"}),g.onSuccess?.(A[0],g),t?.(...A)},onError(...A){i({type:"confirm_error"}),g.onError?.(A[0],g),A[0].reason==="AtomicReadyWalletRejectedUpgradeError"&&u(),r?.(...A)}})},[m,o,n,s,t,r,e,c]);return{isLoading:a.confirmState==="loading",isSubmitting:a.confirmState==="submitting",isSuccess:a.confirmState==="success",isError:a.confirmState==="fail",write:f,reset:d}}var ku=Ru;import wu from"swr/immutable";import{isAddress as Pu,zeroAddress as Tu}from"viem";import{chainId as Iu}from"@berachain/config/internal";async function Cu(e){let t=await Pt({url:`https://api.routescan.io/v2/network/testnet/evm/${Iu}/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 lP=e=>wu(e&&Pu(e)&&e!==Tu?["useGetVerifiedAbi",e]:null,()=>e?Cu(e):Promise.resolve(""),{});import{useCallback as Xo,useEffect as Eu,useState as Su}from"react";function mP({key:e,defaultValue:t}){let r=Xo(()=>{if(typeof window>"u")return t;let a=window.history.state?.[e];return a!==void 0?a:t},[e,t]),[o,n]=Su(r()),s=Xo(a=>{let i=r(),l=a instanceof Function?a(i):a,m={...window.history.state||{},[e]:l};window.history.replaceState(m,""),n(l)},[e,r]);return Eu(()=>{if(window.history.state?.[e]===void 0){let l={...window.history.state||{},[e]:t};window.history.replaceState(l,"")}},[e,t]),[o,s]}import{useEffect as xu,useRef as vu}from"react";function fP(e){let t=vu(void 0);return xu(()=>{t.current=e}),t.current}import Bu from"swr";var Ou=({variables:e}={})=>["useAllValidators",e],hP=(e,t)=>{let{config:r}=P(e),o=Bu(Ou({variables:e}),async([,n])=>await yr({variables:{chain:r.bex.chainName,...n}}),{refreshInterval:18e4,...t?.opts});return{...o,refresh:()=>o.mutate()}};import Du from"swr";function PP({allocation:e}){return Du(e?["useApiEnrichedAllocation",e]:null,([,t])=>Ar({allocation:t}))}import Lu from"swr";import{isHex as Nu}from"viem";var Uu=e=>e?["useApiValidator",e]:null,en=(e,t)=>{let r=Uu(e),o=t?.opts?.isEnabled??!0,n=Lu(o&&e?r:null,async([,s])=>{if(!s||!Nu(s))throw new Error(`Invalid validator ID: ${s}`);return br({id:s})},{...t?.opts});return{...n,refresh:()=>n.mutate()}};import Hu from"swr";import{usePublicClient as Vu}from"@berachain/wagmi/hooks";var tn=[{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 rn({publicClient:e,...t}){let{config:r}=P(t),o=await e.readContract({abi:tn,address:r.pol.rewardAllocationFactory,functionName:"getBaselineAllocation"}),n=o.startBlock!==0n?await e.getBlock({blockNumber:o.startBlock}):{timestamp:0};return Rr(o,Number(n.timestamp))}function VP(){let e=Vu();return Hu(e?["baselineRewardAllocation"]:null,()=>(y(e),rn({publicClient:e})))}import Wu from"swr";var _u=({pubKey:e,first:t=1})=>{let o=Wu(e?["useDailyValidatorBlockStats",e,t]:null,async([,n,s])=>await hr({pubKey:n,first:s}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}};import Qu from"swr";import{usePublicClient as Yu}from"@berachain/wagmi/hooks";function Mu(e){let t=Yu(),o=Qu(t?["useDefaultRewardAllocation"]:null,async()=>(y(t),await wr({client:t})),{...e?.opts});return{...o,refresh:()=>o.mutate()}}import Gu from"swr/immutable";var Fu=({account:e},t)=>{let o=Gu(e?["useManagedValidatorByAccount",e]:null,async([,n])=>await Pr({account:n}),{...t?.opts});return{...o,refresh:()=>o.mutate()}};import{useMemo as nn}from"react";import qu from"swr";import{useBeraWallet as $u,usePublicClient as Zu}from"@berachain/wagmi/hooks";import{zeroAddress as Ku}from"viem";async function on({client:e,pubKey:t,...r}){let{config:o}=P(r);try{let n=await e.readContract({address:o.pol.beraChef,abi:K,functionName:"valRewardAllocator",args:[t]});return n===Ku?null:n}catch(n){throw console.log("getValidatorRewardAllocatorAddress:",n),n}}function sn(e,t){return!e||!t?!1:t.operator?.toLowerCase()===e.toLowerCase()}function zu(e,t){return!e||!t?!1:t.rewardAllocator?t.rewardAllocator.toLowerCase()===e.toLowerCase():sn(e,t)}function ju({pubKey:e,account:t},r){let o=Zu(),n=q("mockValidatorOperator"),s=q("mockValidatorRewardAllocator"),a=o&&e?["useManagedValidatorRole",e]:null,{address:i}=$u(),l=t??i,u=qu(a,async([,d])=>{y(o);let[c,f]=await Promise.all([Br({client:o,pubKey:d}),on({client:o,pubKey:d})]);return{operator:c??null,rewardAllocator:f}},{...r?.opts}),m=nn(()=>n||sn(l,u.data),[l,n,u.data]),p=nn(()=>s||zu(l,u.data),[l,s,u.data]);return{...u,data:u.data?{...u.data,hasOperatorRole:m,hasRewardAllocatorRole:p}:void 0,refresh:()=>u.mutate()}}import Ju from"swr";import{keccak256 as Xu}from"viem";import{usePublicClient as ep}from"@berachain/wagmi/hooks";var an=({pubkey:e},t)=>{let r=ep(),o=e?["useOnChainValidator",e]:null,n=t.opts?.isEnabled??!0,s=Ju(n&&r?o:null,async([,a])=>{y(r);let{config:i}=P({chainId:r.chain.id}),[l,u,m]=await Promise.all([r.readContract({address:i.depositContract,abi:Rt,functionName:"getOperator",args:[a]}),r?.readContract({address:i.tokens.bgt,abi:G,functionName:"boostees",args:[a]}),r.readContract({address:i.pol.beraChef,abi:K,functionName:"getActiveRewardAllocation",args:[a]})]);return{id:Xu(a),pubkey:a,operator:l,votingPower:Number(u)}});return{...s,refresh:()=>{s.mutate()}}};import tp from"swr";import{usePublicClient as rp}from"@berachain/wagmi/hooks";var wT=({valPubKey:e,options:t})=>{let r=rp(),n=(t?.opts?.isEnabled??!0)&&r&&e?["useStakingPoolBatch",e]:null,s=tp(n,async([,a])=>(y(r),await Tr({client:r,valPubKey:a})),{refreshInterval:1e4,...t?.opts});return{...s,refresh:()=>s.mutate()}};import op from"swr";import{GetUserValidatorInformation as np}from"@berachain/graphql/pol/subgraph";import{useBeraWallet as sp}from"@berachain/wagmi/hooks";var ap=({account:e}={})=>{let{address:t}=sp(),r=e??t;return op(r?["useSubgraphUserValidators",r]:null,async([,n])=>{let s=$("pol.subgraph",{}),{data:a}=await s.query({query:np,variables:{address:n}});return a.userValidatorInformations})};import ip from"swr";import{useBeraWallet as lp,usePublicClient as up}from"@berachain/wagmi/hooks";var pp=e=>{let{address:t}=lp(),r=up(),n=ip(r&&t?["useUserActiveValidators",t]:null,async([,s])=>await Cr({account:s,publicClient:r}),{...e,refreshInterval:e?.opts?.refreshInterval??18e4,keepPreviousData:!0});return{...n,refresh:()=>n?.mutate?.()}};import mp from"swr";import{useBeraWallet as dp,usePublicClient as cp}from"@berachain/wagmi/hooks";var fp=({pubkey:e,...t})=>{let{address:r}=dp(),o=cp(),n=t.account??r,a=mp(n&&e?["useUserBoostsOnValidator",e,n]:null,async([,i,l])=>await Ir({account:l,pubkey:i,publicClient:o}),{refreshInterval:1e5});return{...a,refresh:()=>a.mutate()}};import{useCallback as gp,useMemo as yp}from"react";import*as pn from"@sentry/nextjs";import un from"swr";import{useBeraWallet as Ap}from"@berachain/wagmi/hooks";var ln=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 bp=()=>{let{address:e}=Ap(),r=un(e?["useUserClaimableIncentives",e]:null,async([,l])=>{if(!l)throw new x({message:"useUserClaimableIncentives needs a logged in account",level:"error"});return await sr({account:l})},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),o=r?.data,n=yp(()=>{if(o){if(!Array.isArray(o)){pn.captureException(new x({message:"Incorrect aggregated incentives data receieved.",level:"error"}),{extra:{allRewards:o,account:e}});return}return ln(o)}},[o,e]),a=un(e&&o?["useUserClaimableIncentives",e,o]:null,async([,l,u])=>{if(!l)throw new E({property:"account",value:l,expected:"Address"});if(!u)return[];if(!Array.isArray(u))throw new E({message:"Incorrect aggregated incentives data receieved to calculate proofs.",property:"allRewards",value:u,expected:"Array",level:"error"});let m=new Set(u.map(d=>d.validator)),p=Array.from(m);return await Promise.all(p.map(async d=>({...await er({account:l,validator:d,page:1,perPage:1e4}),validator:d})))},{revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateIfStale:!1,refreshInterval:18e4}),i=gp(()=>{r?.mutate(),a?.mutate()},[r,a]);return{...a,isLoading:r?.isLoading||a?.isLoading,tokenMap:n,refresh:i}};import hp from"swr/immutable";var ZT=({account:e,validatorAddress:t})=>{let o=hp(e?["useUserStakingPositions",e,t]:null,async([n,s,a])=>{let i=await Er(s);return a?i.filter(l=>l.validatorAddress.toLowerCase()===a.toLowerCase()):i});return{...o,refresh:()=>{o.mutate()}}};import{keccak256 as Rp}from"viem";function eI({pubkey:e},t){let{data:{validator:r,uptime:o}={},isLoading:n,error:s}=en(Rp(e),t),{data:a,isLoading:i,error:l}=an({pubkey:e},t);return{data:{uptime:o,validator:r||a?{...r,...a,operator:a?.operator??r?.operator,dynamicData:{activeBoostAmount:a?.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:a?.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:a?.id??r?.id,pubkey:a?.pubkey??r?.pubkey,metadata:a?.metadata??r?.metadata,rewardAllocationWeights:a?.rewardAllocationWeights??r?.rewardAllocationWeights??[]}:null},isLoading:n||i,error:s||l}}import kp from"swr";var wp=({pubkey:e,dayRange:t})=>{let o=kp(e&&t?["useValidatorAnalytics",e,t]:null,async([,n,s])=>await Sr({pubkey:n,dayRange:s}),{refreshInterval:18e4});return{...o,refresh:()=>o.mutate()}};import Pp from"swr";import{usePublicClient as Tp}from"@berachain/wagmi/hooks";var Ip=(e,t)=>{let r=Tp(),n=Pp(r&&e?["useValidatorCommission",e]:null,async([,s])=>await xr({client:r,pubKey:s}),{...t?.opts});return{...n,refresh:()=>n.mutate()}};var Cp=e=>{let{data:t,isLoading:r}=qo(),o=me();return{data:t?vr(e,Number(t?.totalStakedBeraAmount),o):void 0,isLoading:r}};import Ep from"swr";import{usePublicClient as Sp}from"@berachain/wagmi/hooks";function xp(e,t){let r=Sp(),n=Ep(r&&e?["useValidatorQueuedCommission",e]:null,async([,s])=>(y(r),await Or({client:r,pubKey:s})),{...t?.opts});return{...n,refresh:()=>n.mutate()}}import vp from"swr";import{usePublicClient as Bp}from"@berachain/wagmi/hooks";var Op=(e,t)=>{let r=Bp(),n=vp(r&&e?["useValidatorQueuedOperatorAddress",e]:null,async([,s])=>await Dr({client:r,pubKey:s}),{...t?.opts});return{...n,refresh:()=>n.mutate()}};import Dp from"swr";import{usePublicClient as Lp}from"@berachain/wagmi/hooks";var Np=(e,t)=>{let r=Lp(),n=Dp(r&&e?["useValidatorQueuedRewardAllocation",e]:null,async([,s])=>await Lr({client:r,pubKey:s}),{...t?.opts});return{...n,refresh:()=>n.mutate()}};import Up from"swr";import{usePublicClient as Hp}from"@berachain/wagmi/hooks";function Vp(e,t){let r=Hp(),n=Up(r&&e?["useValidatorRewardAllocation",e]:null,async([,s])=>await kr({client:r,pubKey:s}),{...t?.opts});return{...n,refresh:()=>n.mutate()}}export{jn as OracleMode,Fp as TransactionStoreProvider,Un as USE_AGGREGATORS_QUOTES_QUERY_KEY,Qp as convertLegacyDataToNewData,Gp as createTransactionStore,Yp as filterDuplicatefn,Mp as mergeData,Ko as reducer,_p as safeParseJsonData,vw as useAddRecentTransaction,Md as useAggregatorsQuotes,$r as useAggregatorsRouterFeeBps,Zr as useAllUserPools,Qn as useAllUserPoolsQueryKey,hP as useAllValidators,Ou as useAllValidatorsQueryKey,PP as useApiEnrichedAllocation,zr as useApiPool,Gn as useApiPoolQueryKey,en as useApiValidator,Uu as useApiValidatorQueryKey,VP as useBaselineRewardAllocation,Ay as useBendTransactionRequests,xo as useBendTransactionRequestsHelper,ku as useBeraContractWrite,nw as useBeraCurrentPrice,Ke as useBexStatus,Jh as useBgtAprSimulation,el as useBgtUnstakedBalance,Gw as useBlockToTimestamp,Ho as useCappedGlobally,Vo as useCappedRelatively,sl as useClaimableFees,_b as useCollateralWeights,Rc as useCreatePool,La as useCreateProposal,_u as useDailyValidatorBlockStats,Mu as useDefaultRewardAllocation,bR as useEarnedStakedBeraVault,ie as useEnsoZap,Bc as useExploitedTokens,is as useExploitedTokensQueryKey,zp as useGetConvertToAssets,Zy as useGetPastVotes,lP as useGetVerifiedAbi,us as useGlobalLiquidityAndSwapVolume,oA as useHasVoted,CR as useHighestVaultsAPR,mP as useHistoryState,Ah as useHoneyAlerts,Wo as useHoneyBalances,kh as useHoneyChartData,Ch as useHoneyGlobalData,Qh as useHoneySwapState,_o as useHoneyVaultsBalance,Qo as useIsBadCollateralAsset,Go as useIsBasketModeEnabled,dA as useIsCanceller,Wc as useLiquidityMismatch,kf as useLpPosition,Fu as useManagedValidatorByAccount,ju as useManagedValidatorRole,Qs as useMultipleTokenApprovalsWithSlippage,co as useMultipleTokenInformation,fo as useOnChainPoolData,Js as useOnChainPoolDataQueryKey,an as useOnChainValidator,bA as usePollAllProposals,Ja as usePollAllProposalsQueryKey,uo as usePollAllowances,ao as usePollBalance,qo as usePollGlobalData,NR as usePollMarkets,Al as usePollMarketsQueryKey,ra as usePollPoolCreationRelayerApproval,CA as usePollProposal,DA as usePollProposalThreshold,HA as usePollProposalVotes,ai as usePollProposalVotesQueryKey,FA as usePollUserDelegates,mw as usePollWalletBalances,fg as usePool,bg as usePoolEvents,Pg as usePoolHistoricalData,vg as usePools,pa as usePoolsQueryKey,fP as usePrevious,zA as useProposalFromTx,Oo as useProposalSnapshot,rb as useProposalState,lb as useProposalTimelockState,ee as usePythLatestPrices,$h as usePythUpdateFee,YR as useQueuedBeraUnlock,bb as useQuorum,Nw as useRecentTransactions,ZR as useRewardTokenToBeraRate,fk as useRewardVault,oo as useRewardVaultBalanceFromStakingToken,ct as useRewardVaultFromToken,Rk as useRewardVaultIncentives,Bl as useRewardVaultQueryKey,Ul as useRewardVaultRewards,bt as useRewardVaults,ml as useRewardVaultsQueryKey,xk as useStakedBeraSnapshots,wT as useStakingPoolBatch,bw as useStakingTokenInformation,sa as useSubgraphPoolQueryKey,ap as useSubgraphUserValidators,zo as useTokenCurrentPrice,Ue as useTokenCurrentPrices,no as useTokenInformation,Ne as useTokens,Tw as useTotalSupply,pe as useTransactionStore,pp as useUserActiveValidators,fp as useUserBoostsOnValidator,bp as useUserClaimableIncentives,ZT as useUserStakingPositions,Ql as useUserVaultInfo,Fl as useUserVaults,eI as useValidator,wp as useValidatorAnalytics,Ip as useValidatorCommission,Cp as useValidatorEstimatedBgtPerYear,xp as useValidatorQueuedCommission,Op as useValidatorQueuedOperatorAddress,Np as useValidatorQueuedRewardAllocation,Vp as useValidatorRewardAllocation,Fk as useVaultAddress,Zk as useVaultHistory,zl as useVaultValidators,wy as useZapTransactionRequests};
|